30 Nisan 2009 Perşembe
Stored Procedure (Saklı Yordam)
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.
create proc [dbo].[sp_masalar_listele]
as
select
*
from tbl_Masalar
create proc [dbo].[sp_masa_byid]
(
@id int
)
as
select MasaID,MasaNo,MasaDurum,MasaNotu
from A.tbl_Masalar(NOLOCK)
WHERE A.MasaID=@id
create proc [dbo].[sp_masa_sil]
(
@masaID int
)
as
delete from tbl_Masalar
where MasaID=@masaID
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
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 ).
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 !
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
Program hakkında bilgi ve örnek kodlara buradaki PDF dosyadan erişebilirsiniz.
23 Nisan 2009 Perşembe
USB Bellekten Vista Kurulumu
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
CubeDesktop Tryout
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
İ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
Bilgisayarı Kapatma Virüsü
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
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.
//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("Uzaklk="+oklid[j, 0]);
kare[j] = 1 / Math.Pow(oklid[j, 0], 2);
listBox1.Items.Add("Karar="+oklid[j,1]);
listBox1.Items.Add("A§rlkl 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§rlkl Oylama
if (g > f)
// MessageBox.Show("Karar=negatif","A§rlkl Oylama");
textBox4.Text = "Sonuc= negatif";
else
// MessageBox.Show("Karar=pozitif", "A§rlkl Oylama");
textBox4.Text = "Sonuc= pozitif";
//en yakn K komŸusu algoritmas
if(n>m)
// MessageBox.Show("Karar=negatif","En yakn k KomŸusu Algoritmas");
textBox5.Text="Sonu‡ = negatif";
else
// MessageBox.Show("Karar=pozitif","En yakn k KomŸusu Algoritmas");
textBox5.Text = "Sonu‡ = pozitif";
}
Application.Exit();
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
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.