RapidSearch seni seviyorum

Yağız Gönüler tarafından yayınlanmıştır 31. Ağustos 2008 10:52



Aradığım tüm Mercan Dede albümlerini bana sunan bu mükemmel arama moturuna (evet motor!) sonsuz teşekkürler. Mercan Dede'nin 1996 yapımı Sufi Dreams adlı albümünden Dream of Shams (Mevlana Celalleddin Rumi) tüm sevenlerine gelsin:

 

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Web

USB bellekte GB rekoru

Yağız Gönüler tarafından yayınlanmıştır 26. Ağustos 2008 09:12

USB flash bellekte kapasite rekoru: 64 GB depolama canavarı USB bellek yakında hayatımızda.

Transcend firması bu hafta Berlin'deki IFA etkinliğinde bir ilki gerçekleştirerek 64 GB depolama alanı sunan ilk USB belleği tanıtacak. JetFlash V20 ismindeki bellek üreticiye göre film kaydı yapmaya elverişli olarak üretilmiş. Şu sıralar farklı dijital Settop-kutuları bir USB girişi üzerinden harici bir belleği kontrol edebilme ve bunu TV yayınlarını kaydetme için kullanma imkânı sunuyor. Belleğin okuma hızı saniyede 10 MB, yazım hızı ise 3 MB/s. Transcend, JetFlash V20 64 GB için bir fiyattan henüz bahsetmedi.

1 kişi tarafından 4.0 olarak değerlendirildi

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Technology

Microsoft SQL Server 2008

Yağız Gönüler tarafından yayınlanmıştır 17. Ağustos 2008 16:26

Efsane, 2008 modeliyle karşımızda. Türkçe makalelerde hızla gelmeye başladı. Yoğun günler bizi bekliyor :)

Microsoft SQL Server 2008 hakkında detaylı bilgi: http://www.microsoft.com/sqlserver/2008/en/us/default.aspx
Ücretsiz SQL Express sürümü: http://www.microsoft.com/express/sql/register/default.aspx
180 günlük deneme sürümü: http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx

Tamer Şahiner'den 2 güzel makale:

SQL Server 2008 Yenilikleri - 1 (SQL Server 2008 Giriş)
SQL Server 2008 Yenilikleri - 2 (Central Management Server)

2 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: ,

Database | Software

Berat

Yağız Gönüler tarafından yayınlanmıştır 16. Ağustos 2008 21:09



Berat Kandilinizi tebrik eder, bu gece yapacağınız tüm ibadet ve duaların Yüce Allah'tan kabulünü dilerim.

**

"..Tarihin gözleri var, surlarda delik delik;
Servi, endamlı servi, ahirete perdelik...

Bulutta şaha kalkmış Fatih'ten kalma kır at;
Pırlantadan kubbeler, belki bir milyar kırat...

Şahadet parmağıdır göğe doğru minare;
Her nakışta o mana: Öleceğiz ne çare?..

Hayattan canlı ölüm, günahtan baskın rahmet;
Beyoğlu tepinirken ağlar Karacaahmet..
"

Necip Fazıl Kısakürek / Canım İstanbul

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Social

Sonunda 1.4.5'e geçebildim

Yağız Gönüler tarafından yayınlanmıştır 14. Ağustos 2008 18:49

2 Ağustos'ta oluşturulan 1.4.5 (% 99 Türkçe) sürümüne 12 gün sonra geçebildim. Bugün öğlen saatlerinde hosting şirketimle görüşüp hem paketimi değiştirdim hem de 1 yıl daha uzattım. Ancak kullanmış olduğum 1.4.0.11 sürümündeki ajax kodlamalarında fazlasıyla hata çıktı. Bu vesileyle bende gözümü karartıp 1.4.5'e geçtim. Epey uzun sürdü ama değdi :)

2 kişi tarafından 3.5 olarak değerlendirildi

  • Currently 3,5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

BlogEngine | Web

Futbolca

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 15:19


Futbolca Forum bir takım değişikliklerden sonra yeniden sizlerle birlikte. Forumdaki seviyeyi (rakım:1500) belirleyecek olan siz değerli kullanıcılarımıza şimdiden hoşgeldiniz diyoruz. Amacımız yasaksız, cezasız, kibirsiz, özgün ve tam bağımsız bir forum oluşturmak. Dünyanın tek ortak dilinde tüm futbolseverlerle buluşmak üzere..

2 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Web | Sport

Bir yazılımcının 3. ödevi: ScreenSaver

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 13:54

Aslında not defteri uygulamasıyla bu uygulama arasında kararsız kalmıştım ancak baktım ki not defteri uygulamasında farklı kaynaklarda bolca örnek var. Ekran koruyucusu daha çok ilgi çeker diye hemen hazırlıklara başladım.

 

Tasarım olarak ne kullanacağız diye merak ediyorsunuzdur mutlaka. Cevap veriyorum: Form. Ancak bu formun birkaç özelliği olacak. Bu özellikleri veremezseniz yada vermeyi unutursanız ekran koruyucusundan cevap alamazsınız.

 

Maddeler halinde kullanacağımız formun özelliklerini veriyorum:

 

-Forecolor, Backcolor: Black (Arka plan ve font rengi siyah ayarlanıyor)

-Tranceparencykey: Transparent (Transparan olacak)

-WindowState: Maximized (Form ekranı kaplayacak şekilde ayarlanıyor)

-Opacity: %20 (Şeffaflık yüzde yirmi olarak ayarlanıyor)

-FormBorderStyle: None (Border kabul etmiyoruz)

-AutoScaleMode: Inherit

 

 

Bu özellikler yoluyla formumuz simsiyah olacak ve hiçbir özelliği bulunmayacak. Zaten ekran koruyucusu da çalıştığında ekranımız simsiyah olacak. Bir anlık panikle korkmayınız bu durumdan J

 


Formun görünümünü buraya eklememe gerek yok zira simsiyah bir kutu düşünün aynısı. Görüntü olarak kötü duracağından eklemiyorum.

 


Evet artık kodlara geçiyorum ve burada yine her zaman olduğu gibi “kodların açıklamaları satır aralarında” diyorum. Tıpkı diğer tüm makalelerimde olduğu gibi.

 




'point; x ve y koordinatlarıyla belirlenen nokta objesidir

Dim pnt As New Point

'burada ise yazı tipimizi belirtiyoruz

Dim YaziTipi() As String = {"Times New Roman", "Tahoma", "Verdana", "Arial"}

 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'formun açılışındaki daha doğrusu ekran koruyucusunun aktif hale geçtiği zamanda olacak eylemler

pnt.X = MousePosition.X

pnt.Y = MousePosition.Y 'ilk mouseun ilk standart degerlerını tutuyor

Windows.Forms.Cursor.Hide() 'kursoru gızler

End Sub

 




Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove

' math namespace MATEMATİK

'ABS yuvarlama ıslemını yapıyor

If Math.Abs(pnt.X - e.X) > 6 Or Math.Abs(pnt.Y - e.Y) > 6 Then

Me.Close()

End If

'böylece ekran koruyucusu aktifken mouse hareket ettirildiğinde ekran koruyucumuz kapanıyor

End Sub

 

Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress

'herhangi bir tuşa basıldığında da formumuz yani ekran koruyucumuz kapanıyor

Me.Close()

End Sub

 

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Static SayacEfekt As Integer ' bir değişken oluşturarak,sayının tutulması saglanıyor

SayacEfekt += 1 'Timer her calıstıgında sayacı bır arttırıyor

If SayacEfekt = 200 Then

SayacEfekt = 50 'sayac 200 olmuşsa onu tekrar 50 yapıyor

End If

 

If SayacEfekt > 20 Then 'sayac 20 den buyukse

'İŞLEMLER YAPILACAK

'----------------------------

Dim grf As Graphics = Me.CreateGraphics

Dim rnd As New Random 'random değer üretmek için

Dim fnt As New Font(YaziTipi(rnd.Next(YaziTipi.Length)), rnd.Next(8, 42))

Dim brs As New SolidBrush(Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255), rnd.Next(255)))

'-----------

ElseIf SayacEfekt <= 20 Then '20 den kucukse 20 den az calısmısa

If Me.Opacity <= 100 Then 'formun goruntü yanı şeffaflık sevıyesı

Me.Opacity += 0.1 'her calıstıgında formu daha gorunur hale getırıyor

End If

End If

End Sub

End Class

 

Umarım 3 seriden oluşan bu makale dizisi işe yarar olmuştur. Ödev aşamasındaki ve uzmanlık yolundaki tüm yazılımcı adayları için ideal örnekler olduğuna inanıyorum. Herkese kolay gelsin, iyi ödevler ve bol şanslar.

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Articles | Software | Windows

Bir yazılımcının 2. ödevi: Lucky 7

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 13:53

Daha önceki örneğimizdeki gibi burada da fazla açıklama yapmıycam. Gerekli kod açıklamaları kodların satır aralarında mevcut olacak.

 

Yinede herhangi bir konuda takıldığınız noktalar olursa mail vasıtasıyla bana ulaşabilirsiniz. Aşağıdaki tasarımı yaptıktan sonra projemizde bir imagelist bir de timer nesnesi eklemeyi unutmuyoruz.

 

 

 

Görüldüğü üzere 3 picturebox, 1 button, 1 de sol üst köşede görüldüğü üzere label var.

 

Pictureboxlarda oyunumuzdaki para kazancı olan resimler görünecek.

 

Button oyunu başlatıyor. Oyun bittiğinde kazanılan yada kaybedilen para label1’de belirtiliyor.

 

Tabi tüm bunları sağlayacak timer ve imagelist nesnelerimizi unutmamamız gerek. Bunları da toolbox yardımıyla projemize ekliyoruz. Timer1’in interval değerini 300 olarak ayarladım. Enabled değeri ise false.

 

Imagelist’e istediğiniz herhangi 3 resmi ekleyebilirsiniz. Ben size olarak 100x100 belirttim.

 

 

 

 

Şimdi kodları yazmaya başlıyoruz. Tekrar belirtmemde fayda var –maillerde hep soruluyor- kodların açıklamaları satır aralarında mevcut.

 

 

 

Kolay gelsin diyor ve iyi eğlenceler diliyorum J

 

 

 

'iki değişken tanımlıyoruz

'bunlardan biri elbetteki sayaç

'diğeri ise para değerini tutacak

Dim sayac As Byte

Dim para As Integer

 

Private Sub BtnBasla_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBasla.Click

'basla buttonuna tıkladıktan sonra timer'ımız içinde startı veriyoruz

'sayacımızı sıfır olarak belirtiyoruz

Timer1.Start()

sayac = 0

End Sub

 

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

'timerin tick olayına yazdığımız kodlar burada

'3 farklı elemanımız olduğu için byte tipinde 3 değişken tanımlıyoruz

Dim rnd As New Random

Dim index1, index2, index3 As Byte

'rasgele resim sıralarını buluyor , 0,1 ve 2 olabılır

index1 = rnd.Next(0, 3)

index2 = rnd.Next(0, 3)

index3 = rnd.Next(0, 3)

 

'gosterılecek resım olarak imagelistteki rasgele sıradakileri gösteriyor

Resim1.Image = ImageList1.Images(index1)

Resim2.Image = ImageList1.Images(index2)

Resim3.Image = ImageList1.Images(index3)

sayac += 1

'burada ise kazanıp kazanılmadığını belirtiyoruz

'eğer timer durduğunda index1, 2 ve 3 birbirine eşitse

'kazanıldığına dair bir mesaj verip labelımızdaki para değerine +1000 ekliyoruz

If sayac = 10 Then

Timer1.Stop()

If index1 = index2 And index1 = index3 Then

MsgBox("Oleyyy... Yırttın...")

para = para + 1000

Label1.Text = para & "$"

'eğer kaybedildiyse para değerinden 100 düşüyoruz

Else

MsgBox("Yattı....")

para = para - 100

Label1.Text = para & "$"

End If

End If

End Sub

 

Private Sub Slot_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'formumuzun açılışında gerçekleştirecek eylemler burada

'önce bir inputbox vasıtasıyla kullanıcıdan para değeri girmesini istiyoruz

'en düşük para değeri 500 olmalı, onun altındaki değerlerle bu oyun oynanmıyor :)

para = InputBox("PARANIZI GİRİNİZ")

'burada ise eğer para 500'den küçükse paranın yeterli olmadığını belirten bir uyarı ekrana getiriyoruz

've oyunu kapatıyoruz

If para < 500 Then

MsgBox("Paranız yeterli değil, Min=500")

'Application.Exit() ' butun sayfaları kapatıyor

Me.Close()

'aksi durumlarda oyunu başlatıyor ve imageliste resimleri ekliyoruz

'bu arada proje klasörümüzde bir resim klasörü oluşturup 3 resim eklemeyi unutmayalım

Else

Resim1.Image = ImageList1.Images(0)

Resim2.Image = ImageList1.Images(1)

Resim3.Image = ImageList1.Images(2)

End If

End Sub

End Class



Bundan sonraki makalem de yine bir yazılımcının ilk ödevleri arasında yer alan bir program olacak. Ancak bu makaleyi yazdığım sıralarda henüz karar veremedim ne yapacağıma. Umarım işe yarar makalaler olmuştur şimdikiler.

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Articles | Software | Windows

Bir yazılımcının ilk ödevi: Hesap Makinesi

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 13:50

Yıl 2002. Visual Studio .Net, Framework ve dilleriyle tanıştığım yıl. İlk yaptığım programlardan biri. Daha doğrusu ödev demeliydim. Yeni başlayanlar için çok ideal..

Program hususunda çok açıklama yapmıycam zira kod açıklamaları zaten satırların arasında yazılı olacak. Yalnız bir windows programı olduğunu, başlıktan da anlaşıldığı gibi visual basic .net ile yazıldığını ve çalışması için .net framework’ün bilgisayarınızda yüklü olması gerektiğini belirtmek isterim.

Programın tasarımı aşağıda gördüğünüz gibi;


Textbox ve Button kontrolleri dışında hiçbirşey yok. Aşağıda kodlar yer almakta. Çok iyi takip ederseniz ilk okuyuşunuzda anlamanız mümkün. Açıklamalarıda sürekli olarak altlarında olacak. Kolay gelsin..

   
'formun load, yani açılış esnasında gerçekleştirilen eylemleri burada

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'd isminde bir değişken tanımladım

        'bu değişkenin tipi double yani tam,kesirli ve ondalık sayılarıları tanimlayabiliyor

        Dim d As Double

        'bir for döngüsü kurdum

        'bu döngü formun açılışın saydamdan belirgine olmasını sağlayacak

        For d = 0 To 1 - 0.1 Step +0.1

            'd'nin degerini 0 olarak tanimladim

            'her 0.1'lik artışta sistemi 5 salise durduruyorumki saydamlık anlaşılsın

            System.Threading.Thread.Sleep(50)

            'burada uygulama 2 iş birden yapabilir hale geliyor

            Application.DoEvents()

            'opacity yani saydamlık derecesini d değişkenine atadım

            Me.Opacity = d

            'programı yeniledim

            'böylece program açılırken en saydamdan en donuk hale geldi

            Me.Refresh()

        Next d

    End Sub

    '3 tane değişken tanımladım

    'islemsecildi değişkeni boolean(evet/hayır) olarak seçtim ve

    'varsayılan olarak "hayır" değerini verdim

    Private islemsecildi As Boolean = False

    'sayi değişkenine sayı değerlerini tutması için double değeri verdim

    Private sayi As Double

    'islem degiskenine metin degeri tutacagi icin string degeri verdim

    Private islem As String

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click, Button9.Click, Button10.Click

        'üzerinde rakam yazan tüm buttonlardan herhangi birine tıklandığında

        'yapılacak işlemleri belirtiyoruz

        If Not islemsecildi Then

            txtsayi.Text &= sender.text

        Else

            'islemsecildinin degeri varsa

            'sayı olarak senderdaki sayıyı atıyoruz

            txtsayi.Text = sender.text

            'daha sonra tekrar islemsecildiyi false olarka belirtiyoruz

            'yani ilk haline döndürüyoruz

            islemsecildi = False

        End If

    End Sub

Private Sub btncarp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncarp.Click, btnbol.Click, btncikar.Click, btntopla.Click

        'çarp, böl, topla yada çıkar buttonlarına basıldığında

        'islem değişkeni çağrımızı yapacağımız sendera işi gönderecek

        islem = sender.text

        'bunu bir try catch kontrolüyle gerçekleştiriyoruz

        Try

            'sayımız, textboxda yazan sayı

            sayi = txtsayi.Text

            'boolean değerli işlemsecildi değişkenimize evet değeri atıyoruz

            islemsecildi = True

        Catch ex As Exception

            'işlem yapıldığında aksi bir durum oluşursa hata mesajı yayınlanacak

            MsgBox("Sayı düzgün formatta girilmedi")

        Finally

            'son olarak işlem düzgün olarak tamamlandığında

            'sayı yazan yer ve sayı hafızası temizlenecek

            txtsayi.Text = ""

            txtsayi.Focus()

        End Try

    End Sub

   

Private Sub btnesit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnesit.Click

        'üzerinde eşittir yazılı buttona basıldıktan sonra bir select case döngüsüyle

        'eşittirden önce çarpı denildiyse çarpıcak, bölü dediyse bölünecek vs..

        Select Case islem

            Case "*"

                sayi *= txtsayi.Text

            Case "/"

                sayi /= txtsayi.Text

            Case "-"

                sayi -= txtsayi.Text

            Case "+"

                sayi += txtsayi.Text

        End Select

        'döngü bittiğinde sayı, textboxa yazdırılacak

        txtsayi.Text = sayi

    End Sub

   
Private Sub btntemizle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btntemizle.Click

        'üzerinde c yazan temizle butonuyla hem textboxı boşaltıyoruz

        'hemde hafızadaki sayıyı sıfırlıyoruz

        sayi = 0

        islemsecildi = False

        txtsayi.Text = ""

        txtsayi.Focus()

End Sub

Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnkapa.Click

        'kapat buttonuna tıklandığında nasıl form açılırken en saydamdan

        'en donuğa geliyorsa bundada aynısı oluyor

        'dolayısıyla kod açıklamalarını tekrar yazmıyorum

        Dim d As Double

        For d = 1 To 0 + 0.2 Step -0.2

            System.Threading.Thread.Sleep(50)

            Application.DoEvents()

            Me.Opacity = d

            Me.Refresh()

        Next d

        'burada programı kapatıyoruz

        Environment.Exit(0)

    End Sub






Private
Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

        'programın güzel özelliklerinden biri mouse kullanmadan da rakamların girilebileceği

        'ancak numpad değerlerinin sadece pclerde çalışacağını, laptoplarda olmayacağını belirteyim

        Select Case e.KeyCode

            'klavyeden 0'a basıldığında textboxa rakamı yazacak

            'diğer tuşlalarda da aynı işlem gerçekleşecek

            Case Keys.NumPad0

                txtsayi.Text = 0

            Case Keys.NumPad1

                txtsayi.Text = 1

            Case Keys.NumPad2

                txtsayi.Text = 2

            Case Keys.NumPad3

                txtsayi.Text = 3

            Case Keys.NumPad4

                txtsayi.Text = 4

            Case Keys.NumPad5

                txtsayi.Text = 5

            Case Keys.NumPad6

                txtsayi.Text = 6

            Case Keys.NumPad7

                txtsayi.Text = 7

            Case Keys.NumPad8

                txtsayi.Text = 8

            Case Keys.NumPad9

                txtsayi.Text = 9

        End Select

    End Sub

End Class

Bundan sonraki makalem yine bir yazılımcının ilk ödevleri arasında yer alan bir program olacak.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Articles | Software | Windows

Ajax ile DropDownList'ten DataList'e veri aktarma

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 13:49
Bu makalemle birlikte, forumlarda en çok sorulan sorulardan birine cevap buluyoruz..

 

Ne zamandır bu makaleyi yazmak istiyordum zira her forumda mutlaka veritabanından dropdownliste, oradan da dataliste veri aktarımı işlemi daima sorulur çünkü daima böyle bir sisteme ihtiyaç duyulur. Bu tip sistemlere birkaç örnek vermek gerekirse; bazı sitelerin üyelik formlarında bulunan il ve ardından ile göre yüklenen ilçe seçim işlemi, bankaların il ve ardından ilçeye göre gelen şube seçimi ve alışveriş sitelerindeki kategori seçimlerini söyleyebiliriz.

 

Sayfayı tekrar yüklemeden daha hızlı veri alışverişi yapabilmenin en keyifli yolu elbette ki Ajax teknolojisinden faydalanmak. Bu uygulamada Asp.Net Ajax ve Microsoft Access’den faydalandım. Mutlaka işinize yarayacak bir makale olacaktır.

 

Öncelikle design sayfama Script Manager, Update Panel, 1 Label, 1 DropDownList, 1 DataList ve 2 AccessDataSource ekliyorum.

Amacım sayfa yüklenirken DropDownList’e makalelerimi getirmek ve daha sonra makale seçildiği zaman içeriği DataList’te görüntülemek.

Access veritabanımda MakaleID, MakaleBaslik ve Makale isimli 3 alanım var. Tüm bu hazırlıklardan sonra sayfa görüntüm şu şekilde olacak:

 



Label1’de Makale başlığı yazıyor. DropDownList’in adı DDGittigimYerler. AccessDataSource’ların isimleri ise yanlarında yazıyor. Şimdi html tarafındaki kodlamalara geçelim. Kodların sonunda açıklama yapacağım.

 

<asp:UpdatePanel ID="UpdatePanel1" runat="server">


<ContentTemplate>


<asp:Label ID="Label1" runat="server" Font-Bold="True" Font-Names="Verdana" Font-Size="Medium" Font-Underline="False" ForeColor="Crimson" Text="Makale Başlığı :"></asp:Label>


<asp:DropDownList ID="DDGittigimYerler" runat="server" AutoPostBack="True" DataSourceID="SQLDDGittimYerler" DataTextField="MakaleBaslik" DataValueField="MakaleID" Width="560px" Font-Bold="True" Font-Names="Verdana" Font-Size="Small" ForeColor="Black">


</asp:DropDownList>


<asp:DataList ID="DataList1" runat="server" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2" DataKeyField="MakaleID" DataSourceID="SQLListGittimYerler" Font-Names="Verdana" Font-Size="Small" ForeColor="Black">


<ItemTemplate>


<asp:Label ID="MakaleLabel" runat="server" Text='<%# Eval("Makale") %>'></asp:Label><br />


</ItemTemplate>


</asp:DataList>

 

<asp:AccessDataSource ID="SQLDDGittimYerler" runat="server" DataFile="~/contact.mdb" SelectCommand="SELECT [MakaleID], [MakaleBaslik] FROM [tbl_makale]"></asp:AccessDataSource>

 

<asp:AccessDataSource ID="SQLListGittimYerler" runat="server" DataFile="~/contact.mdb" SelectCommand="SELECT [Makale], [MakaleID], [MakaleBaslik] FROM [tbl_makale] WHERE ([MakaleID] = ?)">

 

<SelectParameters>

<asp:ControlParameter ControlID="DDGittigimYerler" Name="MakaleID" PropertyName="SelectedValue" Type="Int32" />

</SelectParameters>

</asp:AccessDataSource>


</ContentTemplate>


</asp:UpdatePanel>

Teker teker açıklamaları yapayım. Çok karmaşıkmış gibi görünsede aslında oldukça kolay bir düzenlemesi var kod bloklarının.

 

İlk olarak Label tagi var. Burada Makale Başlığı yazıyor.

Daha sonra DropDownList tagi var. Burada dikkat edilmesi gereken nokta; DataSourceID="SQLDDGittimYerler" DataTextField="MakaleBaslik" DataValueField="MakaleID" ayarlarıdır. Çünkü DropDownList ile DataList’in veri kaynakları farklıdır. DropDownList, MakaleBasligini ekrana getirirken, değerini MakaleID’den alıyor, ayrıca 1. AccesDataSource’a bağlı. Bunları belirttik.

 

Sonraki tag Datalist ile ilgili. Malum 2 kontrol de altalta olduğu için kodlamaları peşpeşe oluyor. Burada da dikkat edilmesi gereken nokta; DataKeyField="MakaleID" DataSourceID="SQLListGittimYerler" ayarlarıdır. DataList kaynağını 2. AccessDataSource’dan alır.

ItemTemplate taginde Makale içeriğini ekrana yansıtacak olan Label ayarları yapılıyor. Burada Text='<%# Eval("Makale") %>' diyerek Makale isimli veritabanı kolonundan kaynağını alacağını belirtiyoruz.

 

Sonra 1.AccessDataSource’umuzu ayarlıyoruz. SelectCommand="SELECT [MakaleID], [MakaleBaslik] FROM [tbl_makale]" diyerek dropdownlist’e sadece makale başlığını aktarıyoruz.

 

Hemen ardından 2.AccessDataSource’umuzu ayarlıyoruz. Burada da SelectCommand="SELECT [Makale], [MakaleID], [MakaleBaslik] FROM [tbl_makale] WHERE ([MakaleID] = ?)" diyerek Makale içeriğini belli bir kritere göre dataliste aktaracağımız ayarları yapıyoruz. Kriteri ise bundan sonraki satırda belirtiyoruz.

 

SelectParameters taginde MakaleID isimli veritabanı alanının, DropDownList için geçerli ana kaynak olacağını belirtiyoruz. PropertyName="SelectedValue" Type="Int32" belirledikten sonra taglerimizi kapatıp işin çalışma kısmına geçiyoruz.

Sistemin nasıl çalıştığını canlı olarak görmek istiyorsanız kişisel sitemin makaleler bölümünü ziyaret edebilirsiniz: http://www.yagizgonuler.com/articles.aspx

 

Ben DropDownList’in hemen altındaki Label yardımıyla toplam kaç adet makale bulunduğunu da kullanıcılarıma sunuyorum. Bunun içinde code behind’da kullandığım kodlar şu şekilde:

 

Protected Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Form1.Load

 

Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & Server.MapPath("veritabani.mdb"))

Dim com As New OleDbCommand("SELECT COUNT(*) FROM tbl_makale", con)

con.Open()

Dim toplam As String

toplam = com.ExecuteScalar

lblsayi.Text = toplam

con.Close()

 

End Sub




Yazılım Geliştirme’de profesyonelliğe doğru adım attığımda ilk zorlandığım konulardan biri buydu. İnsan farklı alanlarda bunu kullandıktan sonra uzmanlaşıyor elbette. Umarım siz de bu makale yardımıyla artık bu tarz sorunların kolayca üstesinden gelirsiniz.

2 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , ,

Software | Web | Articles

Web Güvenliği - 2

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 13:47

 

Önceki makalede kimlik denetimini, belirli bir kaynağa erişim vermek veya kısıtlamak için yetkilendirme ile beraber kullanılan, kullanıcının tanımlanması olarak tarif etmiştik.

 

 

Kimlik Denetimi ve Yetkilendirme

Bir kullanıcının kimlik denetimini yapmak için birden fazla yol vardır ve bazen bir alışveriş sitesi örneğindeki gibi kullanıcılara, kaynaklara herhangi bir yetkilendirme olmadan da erişim izni vermek istersiniz. Bu makalede kimlik denetimi ve yetkilendirme konusunu sadece Microsoft Internet Information (IIS) üzerinde örneklendireceğim. Normalde Unix veya Linux üzerinde çalışan açık kaynaklı Apache sunucusunun da kimlik denetimi ve yetkilendirme sürecini tartışmak gerekebilirdi. Ancak sitemizin ve bizlerin .Net tabanlı çalıştığını düşünürsek IIS üzerinde konuşmak daha güvenilir olacaktır.

 

IIS ve Asp.Net’te Kimlik Denetimi ve Yetkilendirme

IIS ve Asp.Net, biz .Net geliştiricileri için 2 amiral gemidir. İkisi de zengin güvenlik özellikleriyle donatılmış özelliklere sahiptir. Genel olarak IIS ilk kontrolleri yapar ve kullanıcı bu ilk engelin üstesinden gelirse ve istenen kaynak, mesela bir ASPX sayfası gibi Asp.Net tarafından yönetiliyorsa Asp.Net güvenlik denetimi devreye girer.

 

Bir dosya’ya erişim izninin verilmesi veya verilmemesi ile ilgili son karar NTFS (New Technology File System - Yeni Teknoloji Dosya Sistemi) izinlerinin ve ilgili web.config dosyasındaki yetkilendirme kodlarının bir birleşimi tarafından verilir.

 

Dosyalar; okuma, değiştirme ve silme gibi spesifik işlemler için kısıtlanabilir veya izin verilebilir. Bu izinler Windows Explore, kod veya scriptler aracılığıyla programlamayla veya Active Directory kullanılıyorsa Group Policy (Grup Politikası) ile de ayarlanabilir. Web.config dosyası aracılığıyla ayarlanan izinler aşağıdaki gibi bir <authorization> öğesi eklenerek yapılandırılır:

 

<configuration>

<system.web>

<authorization>

<allow users="etkiAlaniAdi\kullanici1, kullanici2"/>

<deny users="*"/>

</authorization>

</system.web>

</configuration>

Burada kullanici1 adındaki bir etki alanı hesabına ve kullanici2 adındaki yerel bir hesaba erişim yetkisi verildiğini görüyoruz. Diğer tüm kullanıcılar ise yasaklanmış bulunuyor. Web.config dosyası, web uygulamasının köküne veya spesifik bir klasöre yerleştirilebilir.

 

Kısa olarak belirtmek gerekirse gelen ilk isteği IIS yönetir ve IP adresinin ve istemcinin etki alanının izin verilen listede olup olmadığını kontrol eder.

Daha sonra ise, kimlik denetimin olup olmadığını kontrol eder.

 

İstenen kaynak Asp.Net tarafından kontrol ediliyorsa, istemcinin kimlik denetimi yapılmış belgeleriyle birlikte Asp.Net çalışma sürecine aktarılır.

 

Aktarılma esnasında olumsuz bir duruma izin verilirse, tüm yetkilendirme istekleri için gerçek istemci belgeleri veya anonim erişim etkinleştirildiyse daha önce bahsedilen anonim hesap kullanılır. Eğer olumsuz bir durum yoksa, kullanılacak hesap Framework kurulum klasöründe bulunban .Net Framework machine.config dosyasında belirtilen hesap olur. Bu hesap, gerektiğinde değiştirilebilir, çok az ayrıcalığa sahip yerel bir hesaptır.

 

Web.config dosyalarında görebileceğiniz identity tagleri bundan ibarettir.

 

<identity impersonate="true">

 

Bu durumda istemci kimlik belgeleri kullanılır. Alternatif olarak belirli bir kullanıcı belirlenerek tüm isteklerin bu kullanıcıyla yetkilendirilmesi sağlanır.

 

<identity impersonate="true" name="domain\user" password="securePassword">

 

Dikkat: Kullanıcı adları düz metin halinde depolanıyorsa büyük bir güvenlik riski oluşur. Bu ayarları şifrelemek için Microsoft tarafından aspnet_setreg.exe adında bir araç sağlanmıştır. Bu araç hakkındaki her şeye makalenin sonundaki kaynaklar bölümünden ulaşabilirsiniz.

 

 

IIS ve Asp.Net’te Farklı Kimlik Denetimi Yöntemleri

Bu konuda öncelikle IIS’in durumuna ve ihtiyaçlarına göre doğru biçimde bir yapılandırma oluşturmalıyız. Bundan sonra da Asp.Net’i yapılandırıp özelleştirebiliriz. Şimdi ilk olarak IIS’i, ardından da Asp.Net kimlik denetimlerini detaylandırıyorum.

 

IIS Kimlik Denetimini Yapılandırmak

Bu konuda daha önce bahsettiğim anonim kimlik denetimi en yaygın olandır. Birçok site kullanıcılarının ana sayfaya veya diğer kısımlara bir kullanıcı adı ve parola olmadan erişmesine izin verir. Anonim kimlik denetimini etkinleştirmek için Web sitemizin Properties kısmından iletişim kutusunu açıp Directory Security sekmesini tıklayın. Authentication and Access Control Group’unda Edit buttonunu tıklayın ve Enable Anonymous Access onay kutusunu işaretleyin.

 

Bir başka seçenek ise gerektiğinde kullanıcı adının ve parolasının düz metin halinde gönderileceği anlamına gelen temel kimlik denetimi (basic authentication) bulunur. Bu seçenek SSL etkinleştirilmediği müddetçe zayıf bir seçimdir.

 

Son seçenek Passport Authentication (Pasaport kimlik denetimi)’ı etkinleştirmektir. Bu birçok site için kullanıcı adı ve parolalarının senkronize edildiği Microsoft tarafından barındırılan merkezi olarak yönetilen bir servistir. Passport etkin bir sitede imzalandığında, kullanıcının bu tip uygulamaların hepsi için kimlik denetimi yapılmış olur.

 

Passport’un devamı olan Windows CardSpace yakın zamanda Microsoft tarafından başlatılmış olan bir sistemdir. Ayrıntılarına makalenin sonundaki kaynaklar bölümünden ulaşabilirsiniz.

 

Kimlik denetimini kontrol etmek için Asp.Net kullanırken özellikle kamuya açık web siteleri için standart yaklaşım IIS’te anonim erişime izin vermektir.

 

Asp.Net Kimlik Denetimlerini Yapılandırmak

Asp.Net, 4 tane kimlik denetimini destekler; Forms, Windows, Passport ve hiçbiri veya özel. Bir kimlik denetimini ayarlamak için aşağıdaki öğeyi web.config dosyasına eklemek yeterli:

 

<authentication mode="Forms|Windows|Passport|None"></authentication>

 

Forms: Kullanıcıdan, kullanıcı tarafından oluşturulmuş web sayfası aracılığıyla bir kullanıcı adı ve parola girmesi istenir. Ayrıntılar genellikle bir veritabanıyla karşılaştırılır.

 

Windows: İstemcinin kimlik belgelerini kullanır ve daha önce bahsedildiği gibi normalde sadece şirket intranetleri gibi dahili sitelerde kullanılır.

 

Passport: Merkezi olarak yönetilen Microsoft Passport sistemidir.

 

None: Tamamen kendi özel kimlik denetimi sistemimizi kullanmak için bu kip kullanılır. Bundan sonra IIS kimlik denetimi devam etse de, Asp.Net daha fazla kontrol işlemi gerçekleşmez.

 

 

Web Güvenliği makaleleri burada bitmedi, mutlaka devamı olacaktır.

 

Tekrar görüşmek üzere, iyi çalışmalar dilerim.

 

 

Kaynaklar:

http://msdn2.microsoft.com/en-us/library/ms178477.aspx

http://msdn2.microsoft.com/en-us/library/aa480189.aspx

Web 2.0 Teknolojileri – Eric Van Der Vlist, Danny Ayers, Erik Bruchez, Joe Fawcett, Alessandro Vernet

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , ,

Articles | Software | Web | Web Security

Web Güvenliği - 1

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 13:46
Özette bahsettiğim “ilk zamanlar”da, kullanıcı sisteme bir kullanıcı adı ve parolo ile girer ve işini görüp çıkardı. İlgili birçok insan için bu çok derin bir konuydu. Ancak sistemlerin açık ve özgür olmasını isteyen kesim, güvenliğin çok bunaltıcı olduğunu belirtip kendi “dava”larına özel bir yol çizdiler.

 

Bu makalem, diğer web güvenliği makalelerinden çok farklı olucak. Çok az, beklide hiç kod görmeyeceksiniz. Amacım, bu önemli konuyu mantıklara daha “sosyal” bir biçimde kazımak olacak. Kemerlerinizi bağlayın..

 

Güvenlik

İki tip güvenlik vardır diyebiliriz. Bunlardan ilki dosya ve uygulamaları koruyan kaynak güvenliği, ikincisi ise mesajları güvenli bir biçimde göndermek için kullanılan mesaj güvenliği. Artık güvenlik bu iki öğe üzerine kuruludur. Dilerseniz biraz daha detaylandıralım..

 

Kaynak Güvenliği

Kaynak güvenliği, iki temel zorunluluk olan kimlik denetimi ve yetkilendirme ile birlikte kullanılır.


Kimlik denetimi, tamamen kullanıcının tanımladığı bir süreçtir. Bu süreçte kullanıcı adı ve paroladan daha güvenilir bir sistem için akıllı kart gibi fiziksel bir aygıtın kullanımına veya sıranın en üstünde bir parmak izi tarayıcısı gibi biyolojik bir ölçüme sahip olmak gerekebilir. Bu konuda verilebilecek en güzel örnek, bir havaalanındaki kimlik denetimidir. Yolcunun kimlik denetimini gerçekleştirmek için pasaportunu göstermesi yeterlidir. Pasaport onayından sonra verilecek yetkiye göre yolcu uçuş yada geçiş iznine sahip olur.

 

Yetkilendirme, kimlik denetimi yapılmış bir kullanıcıya belirli bir dosya veya bir uygulamanın kullanımı gibi belirlenen bir kaynak için iznin verilip verilmeyeceğini belirler. Yetkilendirme genellikle gruplarla yapılır. Yönetici grubu tüm sistemi rahatlıkla izleyebilirken, çalışanlar grubu sadece kendi grubu dahilindeki bilgilere ulaşır. Havaalanındaki örneği devam ettirecek olursak, pasaport kontrolü yapılmış yolcunun, yolcu listesi ile karşılaştırılarak bilet aldığından emin olunmasını söyleyebiliriz.

 

Mesaj Güvenliği

Üç hedefi vardır. Bunlar gizlilik, güvenilirlik ve doğruluktur. Bu amaçlar, karşılıklı bir mesajlaşma sürecinde geçerliliğini korur.

 

 

Gizlilik, sadece belirtilen alıcının mesajları okuyabilmesi yada işleyebilmesi amacına bağlıdır. Bu yönüyle bir kimlik denetimini işin içine sokabilir.

 

Güvenilirlik, alıcının mesajın kaynağından gelip gelmemesine emin olmasıdır. Örneğin online bankacılık sisteminde, kişiye hangi hesaptan para geldiği yada hangi hesaba para gönderildiği çok önemlidir. Burada kimlik denetimi çok önemli bir rol oynar.

 

Gelen yada giden her bir mesajın doğruluğu, mesajın ilgili yere değiştirilmeden ulaşmasından sorumludur. Online veri transferlerinde verinin yol üzerinde değişmeden, türünü değiştirmeden aynen belirtilen adrese ulaşması güvenlik açısından son derece önemlidir.

 

Elbette ki tüm bunlar dışında 2 güvenlik yolu daha vardır. Bunlardan ilki, makinelerinizi virüslere, trojanlara ve diğer kötü yazılımlara karşı korumak için kullanılan donanımsal güvenliktir. Diğeri ise takdir edersiniz ki kod güvenliğidir. Kodunuzun istenmeyen görevleri gerçekleştirmek üzere çökertilmemesi veya değiştirilmemesi çok önemlidir. Aksi takdirde çıkan sonuçtan sorumlu siz tutulursunuz. Örneğin bir bankanın veritabanından sorumlusunuz ve yapmakta olduğunuz sql enjeksiyonu tam tersi yönde çalışmakta, verilerinizi yok etmektedir. İşte burada kod güvenliğinin ne kadar öneme sahip anlamak çok kolaydır.

 

Tüm bunların dışında, özellikle son 5 yılda web servislerinin güvenliğiyle de alakalı çözümler geliştirilmekte ve duyurulmaktadır.

 

Maziden alınan çok önemli dersler

Hiç şüphesiz ki alınan en büyük ders, erken alınmayan tedbirler ve standart teknikler konusundadır.

 

Erken tedbirler, yeni bir sistemi oluştururken tüm güvenlik konularının her şeyden önce göz önüne alınması gerekliliğidir. Güvenliği sonraya bırakan bir sistemin ne kadar güvenli olacağını hepimiz tahmin edebiliriz. Güvenliği başlangıç yerine ikinci plana atarsak hem daha sonrası için zaman kaybederiz, hem de büyük miktarda kod değişikliklerine yol açarız.

 

Standart teknikler, güvenilirlik, tehlikeye karşı zayıflık ve kusurlar açısından incelenmiş olan tekniklerdir. Az tanınmış tekniklere daha fazla önem veren web geliştiricileri, tarihin en büyük derslerini almıştır. Bu tekniğe örnek, birkaç yıl önceki telefon sisteminden gelir. Telekomunikasyon Mühendisleri, arama yapmadan önce özel bir erişim kodu girerek ücretsiz aramalar yapabiliyorlardı ve bu hat kontrolü için kullanılıyordu. Web, popüler olmadan önce bu kod sadece çok az kişi tarafından biliniyordu. Bununla birlikte online olarak yayımlandıklarında binlerce insan telefon şirketinin zararına aramalar gerçekleştirebiliyordu. Bu sistemdeki kusur sadece erişim kodu olan bir bilgi parçasının bilinmesine dayanan kimlik denetimi ve yetkilendirme zayıflığından kaynaklanıyordu.

 

Katmanlı Yaklaşım

En önemli sistemler, güvenlik konusunda bu katmanlı yaklaşımı uygularlar. Sistemlerin sadece uygun insanlar tarafından kullanılabileceğinden emin olmak için tek bir özelliğe dayanmazlar.

 

 

Örneğin, sürekli e-mail gönderen bir şirketi ele alalım;

 

  1. Kullanıcı iş yerine varır. Fiziksel erişimden önce mutlaka kart gibi bir aygıtı görevliye göstererek şirkete girişini gerçekleştirir.
  2. Kullanıcı oturumunu açar. Bu, işe bir kullanıcı adı ve parola aracılığıyla kimlik denetimini devreye sokar ve bazı durumlarda akıllı kart gibi bir aygıta da gereksinim duyar.
  3. Kullanıcı Microsoft Outlook gibi bir programı açar. Bu noktada yetkilendirmek genellikle kullanıcı için otomatik olarak yapılır. E-Mail sistemi, halihazırda oturum açmış olan kullanıcının sistemi kullanmasına müsaade edildiğini kontrol eder.
  4. Kullanıcı yeni bir e-mail oluşturur ve gönderir. Bazen bu mesajı dijital bir şekilde imzalar ve içeriği de Public Key Infrastructure (Açık Anahtar Altyapısı – PKI) kullanarak şifreleyebilir.
  5. E-Mail ilk olarak kimlik ve yetkilendirme denetiminden sonra şirketin güvenlik duvarını aşarak alıcının e-mail kutusuna gönderilir.
  6. Alıcının e-mail sunucusu, e-mail adresinin geçerli olup olmadığını kontrol eder.
  7. E-Mailin virüs veya zararlı bir dosya taşıyıp taşımadığını kontrol eder.
  8. Bu son noktada alıcı, göndericinin yaşadığı sürece benzer şekilde bir oturum açma sürecinden geçer ve e-maili görüntüler.

 

Bu örnek, sistem için bir tek güvenlik noktası olmadığını göstermektedir ve dolayısıyla bir tek saldırı noktası da yoktur. Kötü niyetli bir kullanıcının, başka birisinden geldiğini iddia eden imzalı bir e-mail göndermek için bir bilgi parçasından daha fazlasına ve bazen fiziksel bir kimlik denetimi aygıtına ihtiyacı olur. Verdiğim bu örnekte Microsoft Outlook gibi bir desktop uygulamasından gönderildiği ve e-mail sunucusunun posta göndermek için sadece şirketinde intranetinden erişilebilir olduğunu varsaydım.

 

 

Makalemin ilk bölümü bu kadar. İkinci bölümde kimlik denetimi ve yetkilendirme başlığını genişletip, IIS ile Asp.Net’te kimlik denetimi ve yetkilendirmeye değinicem.

 

 

Tekrar görüşmek üzere, iyi çalışmalar dilerim.

 

 

Kaynaklar:
http://www.w3.org/Security/Faq/

http://www.w3schools.com/site/site_security.asp

Web 2.0 Teknolojileri – Eric Van Der Vlist, Danny Ayers, Erik Bruchez, Joe Fawcett, Alessandro Vernet

 

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: ,

Software | Web | Web Security | Articles

JSON (Javascript Object Notation) ve ASP.Net

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 13:45
Bu konuyu daha derinlemesine görüp öğrenebilmek için JSON.Net isimli bir kütüphane kullanacağız. Bu kütüphaneyi aşağıdaki linkten ücretsiz olarak indirebilirsiniz:

 

http://www.codeplex.com/Json/Release/ProjectReleases.aspx?ReleaseId=6987

 

İlgili kütüphaneyi indirdikten sonra kütüphaneye ait DLL dosyasını ASP.Net projemize referans olarak ekliyoruz ve ardından kodlamaya geçiyoruz. Kodların açıklamaları satır aralarında yer alacaktır.

 

Özellikle bu bölüme dikkat. Sayfa başında sadece Page Language kısmı yer almalı.
<%@ Page Language="VB" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Bir script oluşturup runat=server belirtiyoruz.

Ardından Kisiler isimli classımızı yaratıyoruz.

<script runat=server>

 

Class Kisiler

Private pAdi As String

Private pSoyadi As String

Private pUyrugu As String

Private pMeslegi As String

 

Sub New()

 

End Sub

 

Sub New(ByVal OAdi As String, ByVal OSoyadi As String)

Me.Adi = OAdi

Me.Soyadi = OSoyadi

End Sub

 

Property Adi() As String

Get

Return pAdi

End Get

Set(ByVal value As String)

pAdi = value

End Set

End Property

 

Property Soyadi() As String

Get

Return pSoyadi

End Get

Set(ByVal value As String)

pSoyadi = value

End Set

End Property

 

Property Uyrugu() As String

Get

Return pUyrugu

End Get

Set(ByVal value As String)

pUyrugu = value

End Set

End Property

 

Property Meslegi() As String

Get

Return pMeslegi

End Get

Set(ByVal value As String)

pMeslegi = value

End Set

End Property

 

End Class


Classımızı oluşturduktan sonra page load olayında kisiler sınıfımızı kullanarak

Bir kisi olusturuyoruz ve degerlerini atiyoruz

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

Dim kisi As New Kisiler()

kisi.Adi = "Steve"

kisi.Soyadi = "Ballmer"

kisi.Uyrugu = "United States"

kisi.Meslegi = "Microsoft CEO"

Bu bölümde ise JSON kütüphanemizden ve dllimizden yararlanıyoruz

Amacımız kisi parametresine atadığımız değeri JSON.Net’i kullanarak

Bir labelde kullanıcıya JSON verisi olarak göstermek.

Dim JSON As String = ""

JSON = Newtonsoft.Json.JavaScriptConvert.SerializeObject(kisi)

label1.Text = JSON

End Sub

</script>

Bu bölümde ise yazdığımız ekstra bir şey yok.

Sadece bir label işimizi görüyor.

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:Label ID="label1" runat="server" Text="Label"></asp:Label></div>

</form>

</body>

</html>

 

 

 

Gördüğünüz gibi JSON.Net’i kullanarak bir JSON verisi oluşturmak son derece kolay. Aslında daha açık konuşmak gerekirse çok keyifli bir konu JSON. Eğer işi orta seviyenin üzerine çıkarabilirseniz XML yerine JSON’u tercih edebilirsiniz. Bir çok avantajını JSON ile ilgili daha önceki makalelerimde belirtmiştim. Umarım bu 3 makalenin hepimize bir faydası olur ve projelerimizde kullanırız.

 

Farklı makalelerde tekrar görüşmek üzere.

 

 

 

Kaynaklar:

# ASP.Net AJAX – Daron Yöndem

# www.json.org

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , , ,

Software | Web | Articles

JSON (Javascript Object Notation) ve JSON veri kaynağı kullanımı

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 13:43
 

JSON bir javascript obje ve veri saklama metodudur. Özellikle Web 2.0 ile birlikte JSON, Ajax’la daha fazla kullanılmaktadır. Bunun sebebi JSON ile düzenlenmiş veri yapısının Javascript komutları ile daha kolay ve daha hızlı bir şekilde erişim sağlanılabilir düzeyde olmasındandır.

 

JSON, XML ile kıyaslandığında daha az kod yazılan ve daha az yer kaplayan özelliklere sahiptir. Birtakım web projelerinde 10 mb yer kaplayabilen xml dosyaları JSON ile 3 mb gibi çok daha küçük bir yer kaplayabilir hale getirilebiliyor. Bunun sebebi JSON’da hücre taglerinin ve veri isimlerinin tekrar tekrar yazılmamasıdır.

 

Küçük bir örnekle JSON ile XML arasındaki farklılıklara değinmek istiyorum. Aşağıdaki 2 örneğe dikkatlice bakınız.

 

{

futbolcudata:{

 

futbolcular; [

{

adi:’Metin’,

soyadi:’Oktay’

},

{

adi: ‘Hakan’,

soyadi: ‘Sukur’

}

]

}
}

 

 

Yukarıdaki JSON verisinin bir de XML haline göz atalım.

 

<futbolcudata>

<futbolcular>

<adi>Metin</adi>

<soyadi>Oktay</soyadi>

</futbolcular>

<futbolcular>

<adi>Hakan</adi>

<soyadi>Sukur</soyadi>

</futbolcular>

</futbolcudata>

 

 

Görüldüğü gibi xml ile çok daha fazla veri yazılıyor, tagler tekrarlamak ve kapatılmak zorunda kalıyor. Bir de bunun büyük projelerde yapıldığını düşünürsek kaybedilen alan ve zaman elbette artıyor.

 

Şimdi ise JSON verilerinin yazılışında dikkat etmemiz gereken kurallara bir göz atalım.

 

Objeler: Süslü tırnak işaretleriyle başlar ve biterler. {}

 

Obje üy