| | 30 Ağustos Zafer Bayramı Ağustos ayı Malazgirt zaferinden, Büyük Taarruza kadar zaferlerle doludur. Biz kimiz ve burada ne işimiz var? sorusunun cevabı 30 Ağustos gününde gizli gibi geliyor bana.
Şehitlerimize Allahtan rahmet, gazilerimize sağlık ve selamet diliyorum. Binlerce Fatihalarla.
Şükranlarımızı bir şekilde sunmalıyız ve bence bunun en iyi yolu düşünmek ve 30 Ağustos günü içinde saklı olan cevabı bulmak.
Bugün bana gurur ve huzur veriyor.
ufukyayla 30.08.2005 11:12:42 Yorumlar [0]
AJAX (Asynchronous JavaScript and XML) ASP.net ajax, javascript, XML
Bu makale AJAX'ın pratik olarak nasıl kullanılabileceğine dair bir yaklaşımı anlatır.
AJAX yani Asynchronous JavaScript And XML. Henüz adı bu olmadan önce kullandığımız ama bir ad konunca nedense daha çok ilgimizi çeken şey.
Ne işe yarıyor?
Sayfada meydana gelen her tıklamada tarayıcının yeni bir istek yaparak bütün sayfayı güncellemesi yerine sadece belli bir kısmı yüklemesini sağlayarak ağ trafiğini azaltıyor ve kullanıcı dostu bir arabirim sağlıyor.
Nasıl çalışıyor?
Tarayıcı üzerinde çalışan bir Javascript'in sayfa üzerinde meydana gelen olaylara (event: tıklama vs.) göre sunucudan istekte bulunup gelen XML veriye göre sayfayı değiştirmesi. Bu durumda JS ve DOM'u destekleyen bir tarayıcıya ihtiyacımız var. Elbette XML destekli olmaları da gerekmektedir. IE, Firefox, Opera gibi tarayıcılar bazı farklılıklar olmakla beraber bu işi yapabilmektedir.
Şimdi kullanıcının sayfanızda bir linki tıkladığını düşünün, tarayıcı hemen sunucuya yeni bir istekte bulunup bütün sayfayı yeniden yükleyecektir. Sayfanın üstünde, altında, kenarlarında bulunan bütün sabit kısımlar ve biçimlendirme kodları gibi herşeyi. Oysa sadece bir <div> içindeki metni değiştirmek istemiş olabilirsiniz. İşte AJAX buna iyi bir çözümdür. Aşağıda örneğin tarayıcı tarafında çalışan hali ve tarayıcı JavaScript kodu verilmiştir. (Bu kod basit olması için sadece IE ye uygun yazılmıştır, en altta linkini bulacağınız başka bir örnek yaygın tarayıcıların hepsinde çalışmaktadır.)
Örnek sayfa (index.htm):
<html> <head> <title>Ajax</title> <meta http-equiv='content-language' content='tr' /> <meta http-equiv='content-type' content='text/html; charset=windows-1254' /> <script> var ajax_istek; function ajax_getir(url){ if (ajax_istek){ajax_istek.abort()} else{ajax_istek=new ActiveXObject("Microsoft.XMLHTTP")} if (ajax_istek){ ajax_istek.onreadystatechange=ajax_takipet; ajax_istek.open('get',url,true); ajax_istek.send(null); } } function ajax_takipet(){ var cevapXML; var kimlik; var deger; if (ajax_istek.readyState==4){ if (ajax_istek.status==200){ cevapXML=ajax_istek.responseXML.documentElement; kimlik=cevapXML.getElementsByTagName('kimlik')[0].firstChild.data; deger=cevapXML.getElementsByTagName('deger')[0].firstChild.data; document.getElementById(kimlik).innerHTML=deger; } } } </script> </head> <body>
Aşağıdan sırasıyla 1, 2, 3 gibi tıklayın.<br/><br/> <a href="#" onclick="ajax_getir('ajax.asp?istek=1')">1</a> - <a href="#" onclick="ajax_getir('ajax.asp?istek=2')">2</a> - <a href="#" onclick="ajax_getir('ajax.asp?istek=3')">3</a> - <a href="#" onclick="ajax_getir('ajax.asp?istek=4')">4</a><br/><br/> <a href="index.htm" target="_blank">Yeni Pencerede Aç</a><br/><br/><br/><br/>
<div id="kutu1" name="kutu1" style="width:100%;height:100px;background:ffff00"> </div><br/> <div id="kutu2" name="kutu2" style="width:100%;height:100px;background:ff00ff"> </div><br/>
</body> </html>
ajax_getir fonksiyonunda oluşturulan XMLHttp isteğinin olaylarını takip etmek üzere ajax_istek.onreadystatechange=ajax_takipet; satırı ile ajax_takipet fonksiyonu atanmıştır. Yapılan istek bittiğinde ajax_istek.readyState'nin değeri 4 olacaktır. Eğer sunucu düzgün bir şekilde cevap verirse ajax_istek.status'un değeri 200 olur. Bu durumda gelen XML verisi parse edilmektedir. Gelen verinin içinden hangi <div>'in değiştirilmek istendiği ve içine konulmak istenen veri çekilir.
Sunucu tarafında çalışan kod (ajax.asp):
<%
Session.Codepage=1254 Session.LCID=1055 Response.Expires=-1
Dim Istek Dim Kimlik Dim Deger
Istek=Request.QueryString("istek")
Select Case Istek Case "1" Kimlik="kutu1" Deger="<b>AJAX için JavaScript kullanılır</b>" Case "2" Kimlik="kutu1" Deger="<i>Veri sunucudan XML formatında gelir</i>" Case "3" Kimlik="kutu2" Deger="<u>Tarayıcı tarafında XML verisi parse edilir</u>" Case "4" Kimlik="kutu2" Deger="<select id='sec' name='sec'>" & _ "<option value='0'>Seçenek 1</option>" & _ "<option value='1'>Seçenek 2</option>" & _ "</select>" End Select
Response.ContentType="text/xml" Response.Write "<?xml version=""1.0"" encoding=""windows-1254"" ?>" Response.Write "<ajax>" Response.Write "<nesne>" Response.Write "<kimlik>" & Kimlik & "</kimlik>" Response.Write "<deger>" & XMLMetni(Deger) & "</deger>" Response.Write "</nesne>" Response.Write "</ajax>"
Function XMLMetni(psMetin) Dim ysMetin ysMetin=psMetin ysMetin=Replace(ysMetin,"&","&") ysMetin=Replace(ysMetin,">",">") ysMetin=Replace(ysMetin,"<","<") ysMetin=Replace(ysMetin,"'","'") ysMetin=Replace(ysMetin,"""",""") XMLMetni=ysMetin End Function
%>
Görüldüğü gibi asp kodu gelen isteğe göre değiştirilecek içeriği nesnenin kimlik bilgisini ve içerik metnini ayarlamakta ve XML formatında istemciye yollamaktadır. Eğer bir div içine yolladğınız veri içinde başka html kontolleri varsa onlar da görüntülecektir. 4. link buna bir örnektir.
Konu yeni olduğundan örnek kodu indirin, sunucunuzda bir dizine koyun ve index.htm dosyasını çalıştırarak sırayla 1, 2, 3 ve 4 numaralı linklere tıklayın.
Örneğe bak >> http://www.ufukyayla.com/sair/fk/ajaxornek/index.htm
Daha çaplı bir örnek ve kodu için; http://www.ufukyayla.com/sair/ajax/deneme.aspx
Bu yazı kaynak göstermek kaydıyla kısmen, tamamen veya değiştirilerek yayınlanabilir. En yeni makaleler FındıkKurdu'nda yayınlanır. http://www.findikkurdu.com
ufukyayla 07.08.2005 19:32:58 Yorumlar [0]
AJAX Başka Bir Yaklaşım AJAX yani Asynchronous JavaScript and XML. Henüz adı bu olmadan önce kullandığımız ama bir ad konunca nedense daha çok ilgimizi çeken şey.
Ne işe yarıyor?
Tarayıcı üzerinde çalışan bir Javascript'in sayfa üzerinde meydana gelen olaylara (event: tıklama vs.) göre sunucudan istekte bulunup gelen XML veriye göre sayfayı değiştirmesi.
Örnek (ASP.NET) http://www.ufukyayla.com/sair/ajax/deneme.aspx Kodu (ASP) http://www.ufukyayla.com/sair/ajax/ajax.zip
Daha basit bir örnek (ASP) http://www.ufukyayla.com/sair/fk/ajaxornek/index.htm
Kodu (ASP) http://www.ufukyayla.com/sair/fk/ajaxornek/ornekajax.zip
Bu konuda yazılmış makalemi Fındık Kurdu sitesininden okumanızı öneririm. http://www.findikkurdu.com/Article.aspx?ID=42
ufukyayla 07.08.2005 17:00:24 Yorumlar [0]
Overload Yordamlar ve Overloading Kavramı ASP.net overload, overloading, yordam, optional, seçimlik
Daha öncen yazmış olduğum ve sınıf, nesne konularını anlatan makaleme devam niteliğinde overloading kavramını anlatmaya çalışacağım. Overloading yeni bir kavramdır, bir sınıfın içinde aynı adı taşıyan ama farklı işlemler yapan yordamların olabilmesini durumudur. Benzer işler yapan yordamlara farklı adlar vermek hem kafa karıştırıcı hem de anlamlı ad bulma zorluğu sebebiyle tamlamalı, uzun adlara sebep olur. overloading ile aynı ada sahip yordamlar yazmak mümkündür. Bu yordamlar parametre yapıları ile birbirlerinden ayrılırlar. Örneğin .NET ile beraber kullanmaya aşina olduğumuz OleDBCommand nesnesinin yapılandırıcısının (yapılandırıcı, constructor: bu konuyu sonra anlatacağım, şimdilik bunun bir yordam olduğunu bilin yeter) dört farklı overload hali vardır.
OleDBCommand() OleDBCommand(cmdText) OleDBCommand(cmdText, Connection) OleDBCommand(cmdText, Connection, Transaction)
Örnek olarak basit temel matematik işlemlerini yapan bir sınıf yazıyorum. Bu sınıfın 4 farklı overload hali olacak.
Imports System
Namespace Matematik
Public Class Temel Public Islem As String Public Sayi1 As Integer Public Sayi2 As Integer Public Function Hesapla(piSayi1 As Integer, piSayi2 As Integer, psIslem As String) Sayi1=piSayi1 Sayi2=piSayi2 Islem=psIslem Return Hesapla() End Function Public Function Hesapla(psIslem As String) Islem=psIslem Return Hesapla() End Function Public Function Hesapla() Select Case Islem Case "+" : Return Sayi1 + Sayi2 Case "-" : Return Sayi1 - Sayi2 Case "*" : Return Sayi1 * Sayi2 Case "/" : Return Sayi1 / Sayi2 End Select End Function Public Function Hesapla(piSayi As Integer) Return piSayi * piSayi End Function End Class
End NameSpace
Görüldüğü gibi sınıfın içinde aynı adı taşıyan (Hesap) 4 farklı yordam var, bu yordamlardan 1.si 3 parametre, 2.si bir parametre almakta, 3.sü ise hiç parametre almamaktadır. Yine 4.sü 1 parametre almaktadır. 1., 2. ve 3. yordamlar parametre sayıları farklı olduğundan birbirlerinden ayırt edilebilmektedir. 2. ile 4. ise aldıkları parametrenin türünden (String, Integer) ayırt edilmektedir.
Şimdi bu sınıftan bir nesne türetip yazdığımız bu yordamları kullanalım.
Public Sub Deneme() Dim Hesap As New Matematik.Temel() Dim Sonuc As Integer '1. Overload Yordam Sonuc=Hesap.Hesapla(10,2,"+") Response.Write(Sonuc.ToString) '2. Overload Yordam Hesap.Sayi1=10 Hesap.Sayi2=2 Sonuc=Hesap.Hesapla("+") Response.Write(Sonuc.ToString) '3. Overload Yordam Hesap.Sayi1=10 Hesap.Sayi2=2 Hesap.Islem="+" Sonuc=Hesap.Hesapla() Response.Write(Sonuc.ToString) '4. Overload Yordam Sonuc=Hesap.Hesapla(2) Response.Write(Sonuc.ToString) End Sub
1., 2. ve 3. overload yordamların sonucuları 12'dir. 4. overload yordamın sonucu ise 4 olup 2 sayısının karesidir.
Overload yordamlar birbirlerinden parametre sayılarının ve/veya türlerinin farklı olmasıyla ayırt edilirler. Parametrelerin adlarının farklı olması bu durumun dışındadır. Yani 5. bir yordam olarak sınıf içine
Public Function Hesapla(psDeger As Integer) Return psDeger * psDeger End Function
yordamını yazdığımızda hata alırız. Çünkü 4. yordamla karışmaktadır. Her ne kadar parametre adı (psDeger) 4. yordamın parametresinden (piSayi) farklı olsa da aynı sayıda (bir adet) parametre almaktadırlar ve ikisininki de Integer türündedir.
Overload yordamlar tanımlanırken Overload anahtar kelimesinin kullanılması zorunlu değildir ancak birinde kullanılırsa hepsinde kullanılmalıdır.
Seçimlik Parametreler
Bu başlık içerisinde seçimlik parametrelere de (optional parameters) değinmek yerinde olacaktır. Seçimlik parametreler yordamın çağırılmasında mutlaka kullanılması gerekmeyen parametrelerdir. Varsayılan (default) bir değer alırlar ve yordam çağırılırken belirtilmedikleri durumda varsayılan değerleri kullanılır. Örneğin;
Public Function Hesapla(piSayi1 As Integer, piSayi2 As Integer, Optional psIslem As String="+") Select Case psIslem Case "+" : Return piSayi1 + piSayi2 Case "-" : Return piSayi1 - piSayi2 Case "*" : Return piSayi1 * piSayi2 Case "/" : Return piSayi1 / piSayi2 End Select End Function
Burada Hesapla fonksiyonu esasen 3 parametre almakla beraber yapılacak işlem türünü belirleyen psIslem parametresi seçimlik olarak tanımlanmıştır ve varsayılan olarak "+" değerini almaktadır.
Sonuc=Hesapla(10,2,"+") 12 sonucu döndürür. Sonuc=Hesapla(10,2) 12 sonucu döndürür.
Her seçimlik parametre varsayılan değer almak zorundadır. Yordam yazılırken seçimlik bir parametre tanımlandığında bu parametrenin sağında yer alacak diğer parametreler de seçimlik olmalıdır. Public Function Hesapla(piSayi1 As Integer, Optional piSayi2 As Integer=2, Optional psIslem As String="+") geçerli bir tanımlamadır. Public Function Hesapla(piSayi1 As Integer, Optional piSayi2 As Integer=2, psIslem As String) tanımlaması ise geçersizdir. Çünkü seçimlik olan piSayi2 parametresinin sağındaki psIslem parametresi seçimlik olarak tanımlanmamıştır.
Şimdi tekrar overload yordamlara dönelim. Overload yordamlar birbirlerinden parametre sayılarının ve/veya türlerinin farklı olmasıyla ayırt edilmektedirler. Ancak seçimlik parametreler bunun dışındadır. Bir sınıfın içinde aşağıdaki gibi tanımlanmış iki yordam olamaz;
Public Function Hesapla(piSayi1 As Integer, piSayi2 As Integer=2) .... End Sub
Public Function Hesapla(piSayi1 As Integer, piSayi2 As Integer=2, Optional psIslem As String="+") .... End Sub
Çünkü yordam Sonuc=Hesapla(10,2) şeklinde çağrıldığında bu overload yordamların hangisinin çalışacağı ayırt edilemez.
Kolay gelsin.
ufukyayla 06.08.2005 21:20:36 Yorumlar [0]
Dizin İçeriği Görüntüleme ve Dosya Yükleme ASP.net dizin, dosya, yükleme, listeleme, folder, file, upload, listing
İlk önce bir dizinin içeriğini nasıl gösterebileceğimizi görelim. Önce kodu veriyorum.
dosyalar.aspx
<%@ Page Language="VB" %>
<%@ Import Namespace="System.IO" %>
<script runat="server"> Private Sub Page_Load(ByVal Sender As System.Object, ByVal E As System.EventArgs) Dim Dizin As String=Server.Mappath("/") Dim DizinBilgisi As New DirectoryInfo(Dizin) Dim DosyaBilgisi As FileInfo
For Each DosyaBilgisi In DizinBilgisi.GetFiles("*.*") Response.Write(DosyaBilgisi.Name & "<br/>") Next
Response.Write("<form method='post' enctype='multipart/form-data' action='yukle.aspx'>") Response.Write("<input type='file' id='dosya' name='dosya' size='40'><br/>") Response.Write("<input type='submit' id='git' name='git' value='Yükle'>") Response.Write("</form>")
End Sub </script>
Dosya bilgilerini alma işlemi bir disk giriş-çıkış işlemi olduğundan kkinci satırda System.IO aduzayını import ettik. Dim Dizin As String=Server.Mappath("/") satırında içeriğini görüntüleyeceğimiz dizini ayarlıyoruz. Burada sunucumuzun kök dizinini seçtik. Dim Dizin As String=Server.Mappath("/") & "\dizin" şeklinde istediğimiz bir dizini de yazabilirdik. Dim DizinBilgisi As New DirectoryInfo(Dizin) satırında DizinBilgisi adındaki nesnemize seçtiğimiz dizinin içerik bilgisini yükledik. Bir For ... Next döngüsü ile DizinBilgisi adındaki nesnemizin içinde depolanmış olan dosya bilgilerini tek tek alarak yazdırdık.
Son kod blogunda yüklenecek dosyayı göstermemize yarayacak formu hazırladık. Formun actionu yani düğmeye tıklandığında gideceği adres "yukle.aspx" dir. Bu dosya gönderdiğimiz dosyayı dizine kaydedecek.
yukle.aspx
<%@ Page Language="VB" %>
<%@ Import Namespace="System.IO" %>
<script runat="server"> Private Sub Page_Load(ByVal Sender As System.Object, ByVal E As System.EventArgs) Dim YuklemeDizini As String=Server.Mappath("/") Dim GelenDosya As HttpPostedFile=Request.Files(0)
Dim DosyaAdi As String Dim DosyaBilgisi As FileInfo
DosyaAdi=System.IO.Path.GetFileName(GelenDosya.FileName)
DosyaBilgisi=New FileInfo(YuklemeDizini & DosyaAdi)
If DosyaBilgisi.Exists=False Then GelenDosya.SaveAs(YuklemeDizini & DosyaAdi) Response.Redirect("dosyalar.aspx") Else Response.Write("Aynı adlı dosya zaten mevcut!<br/>") Response.Write("<a href='dosyalar.aspx'>Geri dön</a>") End If
End Sub </script>
Dim YuklemeDizini As String=Server.Mappath("/") satırında yüklemenin yapılacağı dizini belirledik. Dim GelenDosya As HttpPostedFile=Request.Files(0) satırında gelen dosya verisini GelenDosya nesnesine atadık. DosyaAdi=System.IO.Path.GetFileName(GelenDosya.FileName) satırında gelen dosyanın adını aldık. DosyaBilgisi=New FileInfo(YuklemeDizini & DosyaAdi) satırında dosya adı ile dizin adını birleştirerek dosyaya ait bilgiyi oluşturduk. If DosyaBilgisi.Exists=False Then satırında dosyanın zaten mevcut olup olmadığını kontrol ediyoruz. Dosya mevcut değilse "false", mevcutsa "true" döner. GelenDosya.SaveAs(YuklemeDizini & DosyaAdi) satırı ile gelen dosyayı dizin içine kaydettik ve yükleme başarıldığı için tarayıcıyı geri döndürdük. Eğer dosya zaten mevcut olduğundan yüklenemiyor ise kullanıcıya bir uyarı gösterip, bir lik koyarak geri dönebilmesini sağladık.
Yukarıda kodlarını verdiğim dosyalar.aspx ve yukle.aspx dosyalarını oluşturun ve sunucunuzda bir dizine koyarak dosyalar.aspx´i çalıştırın.
Bu yazı kaynak göstermek kaydıyla kısmen, tamamen veya değiştirilerek yayınlanabilir. En yeni makaleler FındıkKurdu'nda yayınlanır. http://www.findikkurdu.com
Kolay gelsin.
ufukyayla 28.07.2005 22:18:02 Yorumlar [0]
Sayfalar : 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
| |  | |  |  |
|
|  | Blog - ASP.NET!VB |  |
| | | | Karalama Defteri | | | Giriş | | | Bölümler | | | Son Yorumlar | | | | | | Bölümler | | | Deli Gömleği | | | Eşeryakoli | | | Makaleler | | | Projeler | | | UfukSZP Dağıtımı | | | ASP.NET Maceraları | | | | | | Son Karalamalar | | | Foruma üye girince oluşan ... | | | Taşındık | | | SoulTips Gibi Birşey | | | Ya Nasip | | | Ulan Ubuntu | | | El Yapımı Projeksiyon | | | Ne İstiyor Bu Üyeler | | | Sınıflarda Kalıtım (Inheri... | | | Sadeleştirme Şart | | | South Park | | | | | | Son Yorumlananlar | | | Ya Nasip | | | Ben Ziraat Mühendisiyim | | | UfukSZP Dağıtımını Kullananl... | | | Grup Hepsi | | | Ne İstiyor Bu Üyeler | | | Ziyaretçi Defteri | | | Powered By Access | | | Ulan Ubuntu | | | Network A.K.T. (Arada Kafamı... | | | Sınıf, Nesne, Nesneye Yöneli... | | | | | | Güzel İnsanlar | | | Fındık Kabuğu | | | Evren AYAN | | | Halil TUNÇ | | | Can HANHAN | | | Mehmet TURAC | | | Bloglar Alemi | | | | | | Şu Anda Bağlılar | | | Misafir, Misafir, Misafir, Misafir, Misafir, Misafir, Misafir, Misafir | | | | | | | Ordan Burdan | | | Dr. Metin AKSU ve klonlarının sitesi yeniden açıldı, hemde .NET http://www.findikkabugu.net | | | | | | |  | | |  | | |  | | |  | | |  | | |  | | |  | | | |
| |  | |  |  |
|
|