30 Nisan 2009 Perşembe

Stored Procedure (Saklı Yordam)

Stored Procedure nedir?
Bir tabloya bağlı olmaksızın veritabanı içinde tanımlanan belirli bir işi yapmaya yönelik kodlardır. Başka bir değişle "Derlenmiş sql cümlecikleridir".
Bunlar birer veritabanı nesnesi oldukları için, doğrudan veritabanı yöneticisi olan programda (örneğin Sql Server) yer alırlar. Veritabanınızı nereye taşırsanız orda yer alırlar.
Stored Procedure ne işe yarar?
Çalıştırmak istediğimiz sql cümleciklerini bir Saklı Yordam içine yerleştirerek, bunun bir veritabanı nesnesi haline gelmesini ve çalışıtırıldığında doğrudan, veritabanı yöneticisini üzerinde barındıran sunucu makinede işlemesini sağlarız.
Stored Procedure faydaları nelerdir?
İstemci makinelerdeki iş yükünü azaltır ve performansı arttırır (yazıldığı zaman aynı zamanda compile edildikleri için query optimizer tarafından optimize edilmiş en hızlı şekilde çalışır).
Sql cümleleri, Saklı Yordam’ lardan çok daha yavaş sonuç
döndürür
Çok katlı mimariyi uygulamak isteğimiz projelerde faydalıdır.
Networkü (Ağ Trafiğini) azaltır.
Açık Sql cümleciklerine nazaran daha güvenlidir
Programlama deyimlerini içerebilirler. if, next, set vs.. programlama dillerindekine benzer özellikler sunar. Gelen parametrelere göre sorgu yapılıp sonucun dönmesi sağlanabilir.

Trigger (Tetikleyici)

  • Trigger nedir?
    Bir tablo üzerinde belirli bir olaya bağlı olarak tetiklenip çalışan SQL kodlarıdır. Diğer bir değişle trigger tetikleyicidir,veritabanında kayıt eklerken,silerken ve değiştirirken arkda tarafata kendi kendine calışan sql cümleleridir.
  • Triggerlar neden kullanılır?
    Genel amacı veri bütünlüğünü korumaktır. Bunun için yapılacak herhangi bir değişiklikte izin verilmemiş işlemler veya gerçekleşmesi durumunda veri bütünlüğünde bozulmalara yol açacak işlemlerde veri bütünlüğünün korunmasına yardımcı olurlar.
  • Hangi olaylar trigerları tetikler?
    Tablo üzerindeki triggerları tetikleyen olaylar insert, update, delete olaylarıdır.
  • Triggerlar nerde kullanılır?
    Bir tablo üzerinde bu olayların öncesinde ve sonrasında tetiklenecek istenildiği kadar trigger yazılabilir. Fakat genel eğilim ve kullanım her bir olay için tek bir trigger kullanmak şeklindedir. Örneğin stok hareketleri sonucunda stok miktarlarının azalması veya artması işlemlerinin, veya tahakkuk ve tahsilatlar sonucu cari hesapların etkilenmesi işlemlerinin triggerlar aracılığı ile yapılmaları tipik bir trigger kullanım yeridir.
  • Triggerların çeşitleri nelerdir?
    Tablo üzerindeki triggerları tetikleyen olaylar insert, update, delete olaylarıdır. Bu olaylara istinaden 3 ana tip triggerdan bahsedilir. Bunlar insert triggerı, update triggerı, delete triggerı şeklindedir.

Basit Store Prosedure Örnekleri


Arkadaşlar bu yazıda size Basit Store Prosedure Örnekleri göstereceğim. Örnek tablomuz yandaki resimdeki gibidir.



Tüm masaları Listeleyelim

create proc [dbo].[sp_masalar_listele]
as
select
*
from tbl_Masalar

ID ye göre masa Listeleyelim

create proc [dbo].[sp_masa_byid]
(
@id int
)
as
select
MasaID,MasaNo,MasaDurum,MasaNotu
from A.tbl_Masalar(NOLOCK)
WHERE A.MasaID=@id


Masa Silelim

create proc [dbo].[sp_masa_sil]
(
@masaID int
)
as
delete
from tbl_Masalar
where MasaID=@masaID

Masa Ekleyelim

create proc [dbo].[sp_masa_ekle]
(
@masaID int output,
@masaNo int,
@masaDurum int,
@masaNotu nvarchar(50)
)
as
insert into
tbl_Masalar
values(@masaNo,@masaDurum,@masaNotu)
set @masaID=@@identity

Masa Güncelleyelim

create proc [dbo].[sp_masa_guncelle]
(
@masaID int output,
@masaNo int,
@masaDurum int,
@masaNotu nvarchar(50)
)
as
update
tbl_Masalar
set
MasaNo=@masaId,
MasaDurum=@masaDurum,
MasaNotu=@masaNotu
where MasaID=@masaID


İyi Çalışmalar...:)

29 Nisan 2009 Çarşamba

3 KATLI MİMARİ


Bu modelde veritabanı üzerinde sırasıyla şu katmanlar bulunur:
  • En altta veri erişim katmanı( Data Access Layer).
  • Ortada iş katmanı( Business Layer ).
  • En üstte sunum katmanı( Prensentation Layer ).
VERİ ERİŞİM KATMANI
Veri erişim katmanı tablolar,stored procedure'lar ve diğer bileşenler ile sağlam bir ilişki kurarak veri mantığını sağlar.Veri tabanına esnek , kolay,hızlı ve güvenli erişim sağlar.Diğer katmanlar istetklerini veri katmanına gönderirler.Bu istekleri alan veri katmanı , isteğe göre tablolara kayıt ekleme,silme,kayıt güncelleme ,stored procedure'lar ile kayıt seçme , dataset geri döndürme gibi işlemleri yapacaklardır.Projelerde böyle bir veri erişim katmanın bulunması ,veritabanı güvenliği açısından performans,hız,güvenlik ve kod okunabirliği açısından avantajlar sağlar.
İŞ KATMANI
Uygulamanın iş mantığını kapsayan Business(iş) katmanının, veri erişim katmanındaki kod kalabalığından etkilenmemesi amaçlanmaktadır.İş katmanı,tüm işlemlerin yapıldığı kısımdır.Her türlü denetim burada yapılır.Sunum katmanından gelen istekleri hazırlayan ve veri katmanına gönderen kısımdır.
SUNUM KATMANI
Sunum katmanı,iş katmanı ve veri katmanından gelen bilgilerin kullanıcılara gösterildiği kısımdır.Yani bir arayüz denilebilir.HTML sayfalar bu katmana örnek verilebilir.

BumpTop ile Masaüstünüz 3. Boyutta !

Bu yazımda sizlere BumpTop u tanıtacağım.
Masaüstünüzü görsel bir şölene haline getirmenin tam sırası.BumpTop sayesinde masaüstünüzdeki simgelerinizi istediğiniz gibi hareket ettirebilirsiniz.
Bu konuda daha fazla bilgi edinmek için ;
http://www.donanimhaberi.com/bumptop-ile-masaustunuz-3-boyutta
ayrıca bu linkteki sayfadan download yapabilir kendi pc nizde yazılımı deneyebilirsiniz ama program normalde ücretli yaklaşık $29 ama deneme sürümünü indirip deneyebilirsiniz.
Tek sorun olarak ekran kartınızın modelinde yaşayabilirsiniz. Örneğin benim ekran kartım ati x1400 radion olduğu için bu yazılımı deneyemedim :( ama siz benim yerime de deneyebilirisiniz :)
deneyen arkadaşların yazılım hakkında ki yorumlarını bekliyorum...

24 Nisan 2009 Cuma

Programcılığa yeni başlayanlara: Small Basic

Microsoft, bilgisayarda yeni programlama öğrenmek isteyenler için Small Basic adlı hoş tasarımlı bir program üretmiş. Dil olarak BASIC kullanılıyor ama GW-BASIC QBASIC gibi değil.
Program hakkında bilgi ve örnek kodlara buradaki PDF dosyadan erişebilirsiniz.

23 Nisan 2009 Perşembe

USB Bellekten Vista Kurulumu

Vista’yi bilgisayar sistemine kurmak baya bir uzun sürüyor. Peki bu kurulumu kısaltmak sizin elinizde olduğunu biliyor muydunuz. İhtiyacınız olan tek şey 4 Gbyte kapasiteli bir USB disk ve sistemi USB’den Boot eden bir anakart.
Vista CD’sini USB belleklere yükleyip, kurulumu buradan çalıştırmak size önemli bir zaman kazandırır. Bu oldukça optik sürücüsüne sahip olmayan sistemler için büyük bir avantaj. Örneğin Netbook sistemler optik sürücüsüne sahip değiller. Fakat birçok kişi bu sistemlere nasıl Vista kuracağını bilmiyor.
Bunu kendim denedim ve gayet başarılı gerçekleştiriyor ve oldukçada hızlı.Sizde denemek isterseniz bu linkte nasıl yapıldığı adım adım anlatılıyo.Kolay gelsin...


http://shiftdelete.net/usb-bellekten-vista-kurulumu-10252.html

USB Bellekten XP Yüklemek

http://shiftdelete.net/usb-bellekten-xp-yuklemek-10303.html

CubeDesktop Tryout


Masaüstünüzde aynı anda birden fazla program mı çalıştırıyosunuz?

Araç çubuğunuz artık yetersizmi gelmeye başlıyo?

masaüstünüzün görselliğini mi artırmak istiyosunuz?

CubeDesktop ile bunların hepsini gerçekleştirebilirsiniz.

İndirmek icin aşağıdaki linki kullanınız.


Sistem Gereksinimleri :

Microsoft Windows® XP™ or Windows® Vista™
1.4 Ghz processor
512 MB of RAM (1 GB recommended)
DirectX 9.0c
3D accelerated video adapter with at least 64MB of video memory


NOT: bu program sadece 1 saat aktiv kalabiliyor çünkü trial version. :)

Silinen Dosyalarınızı Kurtarın

Yanlışlıkla sildiğiniz dosyaları kurtarmak ister misiniz? Recuva bu işi sizin için ücretsiz olarak gerçekleştirebilir.
İsterseniz sabit diskinizden, isterseniz de USB bellek veya dijital fotoğraf makinenizin hafıza kartından... Nerede olursa olsun, yanlışlıkla sildiğiniz dosyaları geri getirme şansınız her zaman var. Geri Dönüşüm Kutusu'ndan da silseniz veya Shift+Delete tuş kombinasyonunu kullansanız da mutlaka bu seçeneği bir yerlere not edin. Recuva, kısa sürede silinen dosyaları karşınıza getiriyor ve tek tıklamada yeniden kullanılabilir yapıyor.
Nasıl Çalışıyor?
Yazılımın kurulumunu tamamladıktan sonra, yanlışlıkla silinen dosyaların kurtarılacağı diski taratmanız gerekiyor. Tarama işlemi, diskin büyüklüğüne ve bilgisayarınızın performansına göre değişebiliyor. USB belleklerde bu süre, oldukça kısa sayılır.
Programı indirmek için aşağıdaki adresi kullanabilirsiniz.
http://download.piriform.com/rcsetup125.exe

22 Nisan 2009 Çarşamba

Javascript Sağ Tuş Engeli

Bilgisayarı Kapatma Virüsü

Bu yazımda sizlere arkadaşlarınıza karşı uygulayabileceğiniz güzel bir şakayı anlatacağım. Kullandığı bir program ikonunu yapacağınız sahte virüsle değiştireceksiniz ve arkadaşınızın bilgisayarı kapanacak. Sahte virüs diyorum çünkü bu, gerçek bir virüs değil. Aslında şaka demek daha doğru olur.

1. Masaüstünde faremize sağ tıklıyoruz ve sırasıyla "yeni" daha sonra da "kısayol" u tıklıyoruz.

2. Açılan Gözat seçeneği kısmına shutdown -s -t 60 -c "Virus Detection. Computer is shutting down. yazıyoruz. "60" olan yeri istediğiniz bir rakamla değiştirin. Kapanma işleminin saniyesi o. Yani ne kadar sonra kapanacağı.
Arkadaşlarınız için güzel bir şaka!

3. Daha sonra "ileri" seçeneğine tıklayıp kısayolun ismini belirtiyoruz. Çok kullanılan programlardan biri olması lazım ki işe yarasın. Ben "Internet Explorer" üzerinden anlatacağım.

4. Sıra kısayolun ikonunu değiştirmeye geldi. Değiştirelim ki karşıdaki adam çakmasın değil mi? İkonu değiştirmek için sağ tıklayıp "özellikler" e giriyoruz.

5. Oradan da "Kısayol" ve "Simge Değiştir" e tıklıyoruz.

6. Simgelerden "Internet Explorer" simgesini bulup "Tamam" diyoruz.

7. Artık virüsümüz hazır. Arkadaşınız veya siz ona tıkladığınızda 60 saniye içinde bilgisayar kapanacak.

8. Bu kapanmayı önlemenin tek yolu "Başlat" tan "Çalıştır" seçeneğine gelip "shutdown -a" yazıp "enter" a basmak.

Haydi iyi eğlenceler.

BELLEK TABANLI SINIFLANDIRMA

EN YAKIN K-KOMŞU ALGORİTMASI ve AĞIRLIKLI OYLAMA

ÖRNEĞİ

Bu yöntem, sınıfları belli olan bir örnek kümesindeki gözlem değerlerinden yararlanarak, örneğe katılacak yeni bir gözlemin hangi sınıfa ait olduğunu belirlemek amacıyla kullanılır.

Öncelikle yanda ki arayüzü tasarlayalım.
Tasarım işlemi bittikten sonra kullanacağımız değişkenleri tanımlayalım sonra da OK butonunun Click olayına aşağıdaki kodu yazalım.

//1 pozitif,0 negatif
int[,] dizi = new int[4, 4];
int x1;
int x2;
int x3;
double[,] oklid = new double[4, 2];
int n = 0;
int m = 0;
double temp = 0.0;
double[] kare = new double[3];
double g = 0.0;
double f = 0.0;

private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
x1 = Int32.Parse(textBox1.Text.ToString());
x2 = Int32.Parse(textBox2.Text.ToString());
x3 = Int32.Parse(textBox3.Text.ToString());
dizi[0, 0] = 0;
dizi[0, 1] = 8;
dizi[0, 2] = 2;
dizi[0, 3] = 1;
dizi[1, 0] = 2;
dizi[1, 1] = 6;
dizi[1, 2] = 8;
dizi[1, 3] = 1;
dizi[2, 0] = 2;
dizi[2, 1] = 8;
dizi[2, 2] = 10;
dizi[2, 3] = 0;
dizi[3, 0] = 7;
dizi[3, 1] = 7;
dizi[3, 2] = 1;
dizi[3, 3] = 1;
oklid[0, 0] = Math.Sqrt(Math.Pow((dizi[0, 0] - x1), 2) + Math.Pow((dizi[0, 1] - x2), 2) + Math.Pow((dizi[0, 2] - x3), 2));
oklid[1, 0] = Math.Sqrt(Math.Pow((dizi[1, 0] - x1), 2) + Math.Pow((dizi[1, 1] - x2), 2) + Math.Pow((dizi[1, 2] - x3), 2));
oklid[2, 0] = Math.Sqrt(Math.Pow((dizi[2, 0] - x1), 2) + Math.Pow((dizi[2, 1] - x2), 2) + Math.Pow((dizi[2, 2] - x3), 2));
oklid[3, 0] = Math.Sqrt(Math.Pow((dizi[3, 0] - x1), 2) + Math.Pow((dizi[3, 1] - x2), 2) + Math.Pow((dizi[3, 2] - x3), 2));
for (int k = 0; k < 4; k++)
{
for (int j = 0; j < 3; j++)
{
if (oklid[j, 0] > oklid[j + 1, 0])
{
temp = oklid[j, 0];
oklid[j, 0] = oklid[j + 1, 0];
oklid[j + 1, 0] = temp;
oklid[j, 1] = dizi[j, 3];
}
}
}
for (int j = 0; j < 3; j++)
{
listBox1.Items.Add("Uzaklk="+oklid[j, 0]);
kare[j] = 1 / Math.Pow(oklid[j, 0], 2);
listBox1.Items.Add("Karar="+oklid[j,1]);
listBox1.Items.Add("A§rlkl Oylama="+kare[j]);
if (oklid[j, 1] % 2 == 0)
{
g += kare[j];
n++;
}
else if (oklid[j, 1] % 2 == 1)
{
f += kare[j];
m++;
}
}
//A§rlkl Oylama
if (g > f)
// MessageBox.Show("Karar=negatif","A§rlkl Oylama");
textBox4.Text = "Sonuc= negatif";
else
// MessageBox.Show("Karar=pozitif", "A§rlkl Oylama");
textBox4.Text = "Sonuc= pozitif";
//en yakn K komŸusu algoritmas
if(n>m)
// MessageBox.Show("Karar=negatif","En yakn k KomŸusu Algoritmas");
textBox5.Text="Sonu‡ = negatif";
else
// MessageBox.Show("Karar=pozitif","En yakn k KomŸusu Algoritmas");
textBox5.Text = "Sonu‡ = pozitif";
}
Çıkış için kullandığımız button 2 nin click olayına da aşağıdaki kodu yazalım.

Application.Exit();
Eğer istersek x1 , x2 ve x3 değerlerine program her çalıştığında başlangıç değeri verebiliriz.
Ben 0 vereceğim.Bunu da kodun Form1_Load ına yazmalıyım.

private void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = "0";
textBox2.Text = "0";
textBox3.Text = "0";
}

ASP.NET 2.0 ile Mail Gönderme


System.Web.Mail Altında 6 adet sınıf bulunmaktadır, bu sınıflar CdoNtsHelper CdoSysHelper LateBoundAccessHelper MailAttachment MailMessage SmtpMail


Evet sınıfımızı tanıdıktan sonra mail atmaişleminin nasıl yaptığına geçelim. Bunun içinVisual Studio .net’i açalım ve yeni bir web projesioluşturalım. Projemize 5 adet label, 4 adet textbox, 1 adet de buton ekliyoruz. Daha Sonra formumuzu kendimize göre dizayn edelim. Benim yapmış olduğum Form Tasarımı yandaki gibidir.


Formumuz oluşturduktan sonra artık mailimizi gönderme işlemimize geçebiliriz. Bunun için ilk yapmamız gereken System.Web.Mail Sınıfını projemize eklememiz gerekir.
using System.Web.Mail;
Evet projemize Mail sınıfımızı eklediğimize göre artık mail göndermek için gerekli voidimizide yazabiliriz. Not= Mail gönderme işlemini bir void şeklinde oluşturarak farklı sayfalarda kullanabiliriz.
System.Web.Message message ;
public void SendMesaj(string MessageFrom, string MessageTo, string MessageSubject, string MessageBody)
{
message.From = MessageFrom;
message.To = MessageTo;
message.Subject = MessageSubject;
message.Body = MessageBody;
try
{
lblUyari.Text = "Mail Gitti";
SmtpMail.Send(message);
}
catch (Exception ex)
{
lblUyari.Text = "Mail Gönderirken Bi Problem Olu?tu:" + ex.Message;
}
} Maili göndermek için gerekli voidi oluşturduktan sonra butona ait event’a gidip sadece bu voidi oradan çağırmak kalacak.
protected void btnGonder_Click(object sender, EventArgs e)
{
SendMesaj(txtGonderen.Text, txtAlici.Text, txtKonu.Text, txtMesaj.Text);
}
Evet kodumuzu tamamladıktan sonra ilk mailimizi gönderelim, web projemizi çalıştıralım bilgileri girelim ve mailimizi gönderelim.

Gönder butotuna tıklıyoruz.
Mailimizin gidip gitmediğini kontrol edelim ve gittiğini göreceğiz...









ŞAMPİYON GALATASARAY

Bu sene ne kadar da başarısız olsada aslında gönüllerin şampiyonu herzaman galatasaray...