|  |  | |  | |  Site artık aktif değildir. | |  | |  |
   | |  | | s.a. Sql Server | Babama Sql Server´da güvenliğin nasıl sağlandığını anlatıyordum. Kullanıcı ve şifrelerin olduğundan bahsederken default olarak şifre olmadığını ve "sa" kullanıcısının olduğunu söyledim. Başka kullanıcı adlarının açılması ve mutlaka şifre olması gerektiğini anlattım ve yani dedim "sa" nın şifresi yoktur, "sa" ile girilebilir. Babamın cevabı müthişti; "Desene bizim sunucuya Selamün Aleyküm diyen giriyor." | 03.08.2005 10:57 ufukyayla | Sekiz yorum var |
| |  | |  |
  | |  | | 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. | 28.07.2005 22:18 ufukyayla | Henüz yorumlanmadı |
| |  | |  |
  | |  | | Messengerin Suyu Çıktı | MSN Messengerimin listesine şöyle bir göz attım. Kime ait olduğunu bilmediğim bir sürü nik. Bu adamları gerçekten tanıyor muyum? E-mail adreslerine baktım;
st_ar42@hotmail.com eb2cet@hotmail.com zsd_sf7@hotmail.com tc5xs@hotmail.com gibi saçma sapan ve kime ait olduğu konusunda en ufak bir fikir vermeyen adresler.
Yinede bunları ezberleme şansımız var. Birde gül, yarasa, börtü böcek, şampanya şisesi, bira bardağı gibi ve sadece bu simgelerden oluşan nikler var. Kimsin sen kardeşim?
Birde hergün kullandığı niki değiştiren, hatta nik olarak özlü sözler, şarkı sözleri, kısa fıkralar yazanlar var.
Daha beteri kendi "Ahmet" olupta oraya "Mehmet" yazanlar.
Ve ikide bir yeni adres alıpta eklememi isteyenler. Aynı kişiye ait bir sürü nik var. Hangini kullanıyor hangini kullanmıyor bilmiyorum.
Artık bu işin suyu çıktı. Herkes adam gibi adını yazsın. Yada tek bir nik kullansın ve bu nike bakınca kim olduğu anlaşılsın.
Bundan sonra doğru dürüst "Görünen Ad" kullanmayanlarla görüşmeyeceğim. | 27.07.2005 16:38 ufukyayla | On altı yorum var |
| |  | |  |
  | |  | | Windows Vistanın Duvarkağıdı | Şok haber!
Allah selamet versin dedem hala sağlam ve işinin başında. Aldığım haberlere göre amcamın bilgisayarında Microsoft´un Windows XP´de default duvarkağıdı olarak kullandığı buğday tarlasını gören dedem "Bu tarlaya buğday ekilmez, yazık, başka birşey ekmek lazım, yazılım işi başka, çiftçilik başka" diyerek o tarlayı Microsofttan kiralamak istemiş. Her ne kadar "Amca biz buraya buğday, lale filan ekiyoruz, fotoğraf çekip duvarkağıdı olarak kullanıyoruz, bize lazım, şimdi gitsek elin tarlasının fotoğrafını kullansak telifti, tazminattı uğraşırız" deselerde, dedem "O zaman ben ne ekersem onu çeker kullanırsınız" diyerek tarlayı kiralamış. Aşağıdaki resimde dedemi keyifli keyifli tarlayı sürerken görüyorsunuz. Karpuz, kavun ekecekmiş. Bu durumda Windows Vista çıkana kadar bizim karpuzlarda yetişmiş olacağından default duvarkağıdının karpuz tarlası olacağı haberini hemen vereyim dedim.

Fotoğraftaki kişi gerçekten dedemdir, ona göre | 25.07.2005 19:49 ufukyayla | Beş yorum var |
| |  | |  |
  | |  | | Sınıf Nesne Nesneye Yönelik Programlama | ASP.net sınıf, nesne, NYP, class, object, OOP
Bu makale Sınıf (Class), Nesne (Object), Nesneye Yönelik Programlama (OOP - Object Oriented Programming) kavramlarını anlatmak için kaleme alınmıştır. Ayrıca Olay Sürmeli (Event Driven) programlama kavramına da kısaca değinilmiştir.
Makalenin taslağını yazdığım yerden mermer ocakları görünüyor, ilham geldi, bu sebeple örnekleri mermer temalı veriyorum.
Sınıf (Class) Kendisinden nesneler türetilen, temel özellikleri ve işlevi önceden kendisini yazan programcı tarafından belirlenmiş nesne şablonlarıdır. Bir sınıfa, ait olduğu aduzayı (namespace) hiyerarşisi içinden erişilebilir.
Nesne (Object) Bir sınıftan türetilmiş program parçalarıdır.
Nesneye Yönelik Programlama (OOP) Uygulamaları nesneler kullanarak yani bir çok nesnenin bir araya gelmesi ile oluşturmak demektir. Yani kullandığınız yordamları direk uygulama koduna yazmayıp, sınıflar içine yazıyor ve bu sınıflardan türettiğiniz nesneler üzerinden çağırıyorsanız Nesneye Yönelik Programlama yapıyorsunuz demektir.
Olay Sürmeli (Event Driven) Programlama Yazdığınız kod belli bir sırayla çalışmıyor ve her kod parçasının çalışması bir olaya bağlanmışsa buna Olay Sürmeli Programlama denir. Mesela bir butona tıklanması (Command_Click), yazı kutunun içindeki metnin değişmesi (Text1_Change) birer olaydır. Her olay oluştuğunda olayın yordamı içindeki kod çalışır.
OOP ile Olay Sürmeli programlama kavramlarının karıştırılmasının sebebi de budur. Bir buton bir nesnedir. Butona tıklamak bir olaydır. Nesne başka şey, nesnenin olayları başka şeydir. Makalenin ilerleyen kısımlarında örnek olarak oluşturacağım Hesap adlı nesnenin hiç olayı yoktur. Ama o bir nesnedir. Nesneye Yönelik Programlamada nesnelerin olaylarının olması şart değildir.
Bütün Dünyayı bir framework kabul ediyoruz. Mermerin; "Taşlar.Mermerler" aduzayı içindeki sınıflar olduklarını varsayıyoruz. Mermerleri kabaca sınıflara ayırırsak BeyazMermer, SiyahMermer, KırmızıMermer gibi sınıflar (classes) oluşur. Bu sınıfların bazı özellikleri (properties) önceden bu sınıfları yapan (Allah C.C.) tarafından belirlenmiştir. Sertlik, renk vs. gibi. Bunlara müdahale edemeyiz ama istediğimiz sınıfı kullanabiliriz. Bize siyah bir mermer nesnesi lazımsa SiyahMermer sınıfından türetiriz. Örneğin MySQL kullanıyorsak System.Data.SqlClient aduzayı içindeki SqlClientConnection sınıfı işimize yaramaz ama System.Data.ODBC aduzayı içindeki ODBCConnection sınıfını tercih ederek işimizi görürüz. Elbette sınıflardan türetilen nesnelerin müdahale edebileceğimiz özellikleri de (properties) vardır; en, boy, kalınlık gibi. Şimdi bize 80 x 20 x 2 cm. ebadında, kapı eşiğine koymak için beyaz bir mermer (nesnesi) lazım. Öyleyse bu nesnemizi BeyazMermerler sınıfından türetmeliyiz. BeyazMermerler sınıfı "Taşlar.Mermerler" aduzayı içindedir.
Dim KapıEşiği As Taşlar.Mermerler.BeyazMermer
diyerek nesnemizi tanımlarız. Henüz düşünüyoruz; "bana BeyazMermer sınıfından bi mermer lazım." Hala ortada nesne filan yok. Sadece genel olarak kullanacağımız şeyin neye benzeyeceğini düşündük ve tanımladık. Peki elimizde mevcut önceden hazırlanmış bir mermeri mi, yoksa yeni bir tane keserek onu mu kullanacağız? Eğer yeni (New) bir tane lazımsa;
KapıEşiği = New Taşlar.Mermerler.BeyazMermer
deriz ve nesnemiz oluşur. New anahtar kelimesi nesne oluşturulup referansı KapıEşiği'ne atanmadan önce sınıfın ilk yapılandırma komutlarının işlemesini sağlar. Bu cümleyi anlamadıysanız ilerleyen satırlarda verdiğim örneğe bakın. Üzerinde BeyazMermer sınıfının önceden tanımlı bütün özelliklerini (properties) taşıyor. Müdahale edebileceğimiz özelliklerinide biz belirleyelim;
KapıEşiği.Boy = 80 KapıEşiği.En = 80 KapıEşiği.Kalınlık = 2
taşımız hazır.
Taşlar.Mermerler aduzayı içindeki BeyazMermer sınıfından KapıEşiği adlı nesnemizi türettik.
Taşlar.Mermerler namespace'i içindeki BeyazMermer class'ından KapıEşiği adlı object'imizi türettik.
Dim KapıEşiği As New Taşlar.Mermerler.BeyazMermer şeklinde de yazabilirdik.
---------------------------------------------------
Şimdi Dünya Framework'ünden .NET Framework'üne geçelim. System.Data.OleDB aduzayı içindeki OleDbConnection sınıfından Con isimli bir nesne türetelim.
Imports System.Data.OleDB
Dim Con As OleDbConnection
Con = New OleDbConnection()
System.Data.OleDB aduzayı içindeki OleDbConnection sınıfından Con adlı nesnemizi türettik.
Bu sınıfın kendisini yazan tarafından belirlenmiş özellikleri vardır. Bazılarına müdahale edebiliriz, bazılarına edemeyiz.
Con.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;data source=C:\dene.mdb"
Tabii .NET dünyasında mevcut sınıfları kullanmak gibi bir kısıtlama yok. Kendi sınıfımızı kendimiz yazabilirz ve ondan nesnelerimizi türetebiliriz.
Şimdi Matematik aduzayı içinde Temel işlemler sınıfını oluşturalım. Bu sınıf toplama, çıkarma, bölme, çarpma gibi temel matematik işlemleri yapacak olsun. 1. Sayı, 2. Sayı ve İşlem özelliklerine değer atayacağız, Hesapla metodunu çağırıp sonucu Sonuc özelliğinde okuyacağız.
Matematik.vb adlı bir text dosyası oluşturun ve yazmaya başlayın;
Imports System
Namespace Matematik
Public Class Temel Dim csIslem As String Dim ciSayi1 As Integer Dim ciSayi2 As Integer Dim ciSonuc As Integer Public Sub New() csIslem = "+" ciSayi1 = 4 ciSayi2 = 2 Hesapla() End Sub Public Property Islem() As String Get Return csIslem End Get Set(Value As String) csIslem = Value End Set End Property Public Property Sayi1() As Integer Get Return ciSayi1 End Get Set(Value As Integer) ciSayi1 = Value End Set End Property Public Property Sayi2() As Integer Get Return ciSayi2 End Get Set(Value As Integer) ciSayi2 = Value End Set End Property Public ReadOnly Property Sonuc() As Integer Get Return ciSonuc End Get End Property Public Sub Hesapla() Select Case csIslem Case "+" : ciSonuc = ciSayi1 + ciSayi2 Case "-" : ciSonuc = ciSayi1 - ciSayi2 Case "*" : ciSonuc = ciSayi1 * ciSayi2 Case "/" : ciSonuc = ciSayi1 / ciSayi2 End Select End Sub End Class
End NameSpace
Şimdi derleyelim; vbc.exe matematik.vb /out:matematik.dll /t:library
Not; Derlemeyle ilgili daha ayrıntılı bilgi için yazının sonuna bakın
Derleme sonucunda oluşan Matematik.dll dosyasını sunucumuzun "bin" dizinine kopyaladıktan sonra hazırladığımız bu sınıfı denemek için deneme.aspx adlı bir dosya oluşturun ve aşağıdaki kodu içine yapıştırın;
<%@ Page Language="VB" %> <%@ Import Namespace="matematik" %> <script runat="server"> Private Sub Page_Load(ByVal Sender As System.Object, ByVal E As System.EventArgs) Dim Hesap As Matematik.Temel Hesap = New Matematik.Temel
Response.Write("İlk atanan değerlerin verdiği sonuç = " & Hesap.Sonuc & "<br/>")
Hesap.Sayi1 = 10 Hesap.Sayi2 = 2 Hesap.Islem = "+" Hesap.Hesapla()
Response.Write(Hesap.Sonuc) End Sub </script>
İşte bu kadar.
<%@ Import Namespace="matematik" %> satırıyla matematik aduzayını sayfamıza import ettik.
Matemetik aduzayı içindeki Temel sınıfından Hesap adlı nesnemizi türettik; Dim Hesap As Matematik.Temel Hesap = New Matematik.Temel
New anahtar kelimesi kullanarak sınıfın yapılandırma komutlarını (constructor) çalıştırdığımız için 1. Sayıya 4, 2. sayıya 2 ve İşlem olarak "+" atandığından yazdırılan sonuç 6 oldu. Dikkat edin Hesap.New() diyerek New() yordamını çağırmadık. "Hesap = New Matematik.Temel" yazmamız bunu sağladı. Response.Write("İlk atanan değerlerin verdiği sonuç = " & Hesap.Sonuc & "<br/>")
Özellikleri atadık; Hesap.Sayi1 = 10 Hesap.Sayi1 = 2 Hesap.Islem = "+"
Hesapla() metodunu çağırarak hesaplamayı yaptırdık; Hesap.Hesapla()
Sonuc özelliğini okutarak sonucu ekrana yazdırdık. Response.Write(Hesap.Sonuc)
Örnekleri çalıştırırsanız tarayıcı penceresine; İlk atanan değerlerin verdiği sonuç = 6 12 yazıldığını göreceksiniz.
Not; Sınıfımızı yazarken Public ReadOnly Property Sonuc() As Integer satırında ReadOnly yazmamız dikkatinizi çekmiş olmalı. ReadOnly yazarak Sonuc özelliğinin sadece okunabilir olduğunu, dışarıdan değer atanarak değiştirilemeyeceğini belirtiyoruz.
Derleme Derlemeyi yaparken MS-DOS komut istemine geçin. [matematik.vb adlı dosyanın bulunduğu dizine gidin. vbc.exe matematik.vb /out:matematik.dll /t:library komutunu çalıştırın. Eğer; 'vbc.exe' iç ya da dış komut, çalıştırılabilir program ya da toplu iş dosyası olarak tanınmıyor. şeklinde bir hata alırsanız derleme komutunu çalıştırmadan önce; Path="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322" komutunu çalıştırın. Burada C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 dizini vbc.exe'nin bulunduğu dizindir. Eğer sizin bilgisayarınızda farklı bir dizinde ise o dizinin yolunu yazın.
Eğer fazladan bir aduzayını import ediyorsak derlerken referans vermemiz gerekir. Mesela sınıfımızın kodunda; Imports System.Data yazarak System.Data aduzayını import etmiş olsaydık;
vbc.exe matematik.vb /out:matematik.dll /t:library /r:system.data.dll yazmamız gerekirdi.
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 | 25.07.2005 18:26 ufukyayla | Dört yorum var |
| |  | |  |
  | |  | | Evren AYANı Protesto Ediyoruz | Sevgili arkadaşımız ve herşeye muhalefetiyle bilenen Evren AYAN'ı bu aralar gören var mı ?. Artık hiç birşey protesto edilmiyor http://www.EvrenAyan.Net güncellenmiyor yeni birşey öğrenmek isteyen .NET'e geçmek isteyen arkadaşlar böyle bir hazineden mahrum bırakılmıştır. Ayrıca .NET mi, Java mı? gibi sorulara da Evren AYAN sistem dışı olduğundan cevap bulunamamaktadır. Bizlerde sevgili internet kullanıcılarını ve yeni programcı arkadaşlarımızı düşünüyoruz. Türk Gençliği için Türk Programcıları için Evren AYAN'ı protesto ediyoruz. Hepinizin bu girişimimize destek olmanız bekliyoruz. Sevgili Evren AYAN'ımızı elimizden aldığı için yengemizide protesto ediyoruz.
Not : İşbu protesto Fındık Kabuğu, Selim TOPALOĞLU, Mehmet TURAÇ ve Ufuk YAYLA ortak girişimidir. | 24.07.2005 19:25 ufukyayla | Yirmi yorum var |
| |  | |  |
  | |  | | Hayır Hayır Olamaz | Kendimi kaptırmış akşamın bir saatinde kod yazıyorum. Hani arada bir takılırsınız, boş boş duvara bakarsınız düşünürken işte öyle bir an, sağ elimle tempo tutuyorum. O da ne? "Ankaralı Namık" adında birinin "Kazı Koçum Kazı" adlı parçasına tempo tutuyorum. Silkindim. Şarkının bulunduğu dizine gittim, Peçenekli Süleyman, Ankaralı Namık ve Turgut, Erzurumlu Acılı Abuzer vs. adlı dizinler var. Amerikanın bilmem neresinde yazılmış .NET Framework ile aynı diski paylaşan veri yığınları. Nasıl oluyorda bu kadar arabesk olabiliyoruz? Biryerlerde okumuştum, insan beyninde kod yazmaya yarayan kısımla müzik dinleyeme yarayan kısım arasında yakınlık varmış. Mesela kötü müzik kod verimini azaltıyor, hataya sebeb oluyormuş. Bu doğru galiba. Tabi yapmaya çalıştığım şeyin sürekli hata vermesinin sebebini Peçenekli Süleymanın üzerine yıkamam ama yinede listeyi temizleyip başka birşeyler dinleyeceğim. | 23.07.2005 20:07 ufukyayla | Beş yorum var |
| |  | |  |
    | |  | | RSS Kaynağım Hatalıymış Meğer | Karalama Defterinin (Blog) RSS motorunu oluşturan aspx dosyasını epeydir kurcalamıyordum. FeedReaderle takip ettiğim bazı sitelerin RSS'lerinde resimlerin yollarının yerel (domain adı olmadan) verilmesi sebebiyle yüklenemediğini görürdüm ve kızardım. Birde baktım ki bende öyle yapmışım. Düzelttim ve elimde bulunan RSS okuyucularla denedim bir sorun çıkmadı. | 22.07.2005 09:24 ufukyayla | Henüz yorumlanmadı |
| |  | |  |
 |