SQL Sub Query ve Join işlemi arasında performans testi

Yazılarım Yorum Yok »

Elimizde iki tablolu bir yapı olduğunu düşünelim, İşçiler ve Yöneticiler. Üç adet yöneticimiz ve bu yöneticilere bağlı 60000 çalışanımız olsun. Yöneticilere ait olan işçi sayılarına baktığımızda :

Select COUNT(*),yoneticiID
From tblIsci
Group By yoneticiID
Order By yoneticiID

Yonetici ID

İşçi Sayısı

1

40000

2

19999

3

1

İlk olarak 1 adet işçinin bağlı olduğu ID si 3 olan yöneti ve işçi bilgilerini sorgulayalım.

Sıra

SQL Sorgusu

Sonuç

1

SELECT isciID,
	   isciAdi,
           (SELECT yoneticiAdi 
	    FROM tblYonetici 
	    WHERE tblYonetici.yoneticiID = 
     tblIsci.yoneticiID)
     FROM tblIsci
     WHERE tblIsci.yoneticiID = 3

Etkilenen Satır Sayısı : 1

Sorgu Maaliyeti : 0.0006

2

SELECT isciID,
	   isciAdi,
	   yoneticiAdi 
  FROM tblIsci
	   INNER JOIN tblYonetici ON (tblYonetici.yoneticiID =
	   tblIsci.yoneticiID)
WHERE tblIsci.yoneticiID = 3

Etkilenen Satır Sayısı : 1

Sorgu Maaliyeti : 0.0006

Yukarıdaki 1 ve 2 numaralı testleri incelediğimizde etkilenen satır sayısı ve sorgu maaliyetleri aynı oldu. Şimdi birde etkilenen satır sayısı arttığında sorgu maaliyetinde bir değişme olacak mı ? bunu gözlemleyelim.

Sıra

SQL Sorgusu

Sonuç

3

SELECT isciID,
	   isciAdi,
           (SELECT yoneticiAdi 
	    FROM tblYonetici 
	    WHERE tblYonetici.yoneticiID = 
     tblIsci.yoneticiID)
     FROM tblIsci
     WHERE tblIsci.yoneticiID = 1

Etkilenen Satır Sayısı : 40000

Sorgu Maaliyeti : 4.326

4

SELECT isciID,
	   isciAdi,
	   yoneticiAdi 
  FROM tblIsci
	   INNER JOIN tblYonetici ON (tblYonetici.yoneticiID =
	   tblIsci.yoneticiID)
WHERE tblIsci.yoneticiID = 1

Etkilenen Satır Sayısı : 40000

Sorgu Maaliyeti : 0.305

3 ve 4 numaralı testlerimize baktığımızda etkilenen satır sayıları eşit ve 40000, ama bu sefer sorgu maaliyetleri Join işleminde düşük çıktı.

Sonuç olarak kullanacağımız sorgularda eğer farklı tablolardan veriler ile çalışıyor ve etiklenecek olan satır sayısının büyük olacağını kestirebiliyorsak Join işlemlerini Sub Query işlemlerine tercih etmeliyiz.

Windows’un Versiyonunu Öğrenmek

Yazılarım 1 Yorum »

Geliştirmekte olduğumuz uygulamalarda, bazen uygulamamızı kuracak olduğumuz bilgisayarın işletim sisteminin versiyonuna göre farklı işlemler gerçekleştirmemiz gerekebiliyor. Bunun içinde bu işlemlerden önce işletis sistemi bilgisini almamız gerekiyor.

OperatingSystem sınıf özelliklerini, kullanılan işletim sistemi hakkında gerekli bilgileri sağlar. OSVersion özelliği System.Environment sınıfı, bir OperatingSystem nesnesini döndürür.

System.OperatingSystem osInfo = System.Environment.OSVersion;

osInfo nun Version.Minor yada Version.Major bilgilerine göre işletim sistemine karar verebiliyoruz.

Örneğin :

PlatformID = 1 , Major=  4  , Minor=10 ise Windows 98

?Download winver.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 System.OperatingSystem osInfo = System.Environment.OSVersion;
            string winVersion ="";
 
            switch (osInfo.Platform)
            {
 
                case System.PlatformID.Win32Windows:
 
                    switch (osInfo.Version.Minor)
                    {
                        case 0:
                            winVersion = "Windows 95";
                            break;
                        case 10:
                            if (osInfo.Version.Revision.ToString() == "2222A")
                                winVersion = "Windows 98 Second Edition";
                            else
                                winVersion = "Windows 98";
                            break;
                        case 90:
                            winVersion = "Windows Me";
                            break;
                    }
                    break;
 
 
                case System.PlatformID.Win32NT:
 
                    switch (osInfo.Version.Major)
                    {
                        case 3:
                            winVersion = "Windows NT 3.51";
                            break;
                        case 4:
                            winVersion = "Windows NT 4.0";
                            break;
                        case 5:
                            if (osInfo.Version.Minor == 0)
                                winVersion = "Windows 2000";
                            else
                                winVersion = "Windows XP";
                            break;
                        case 6:
                            if(osInfo.Version.Minor == 1)
                                winVersion = "Windows 7";
                             else if(osInfo.Version.Minor == 0)
                                winVersion = "Windows Vista";
                            break;
 
                    } break;
            }
            lblVersion.Text = winVersion;

?Download winver.vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 Dim osInfo As System.OperatingSystem = System.Environment.OSVersion
Dim winVersion As String = ""
Select Case osInfo.Platform
 
    Case System.PlatformID.Win32Windows
 
        Select Case osInfo.Version.Minor
            Case 0
                winVersion = "Windows 95"
                Exit Select
            Case 10
                If osInfo.Version.Revision.ToString() = "2222A" Then
                    winVersion = "Windows 98 Second Edition"
                Else
                    winVersion = "Windows 98"
                End If
                Exit Select
            Case 90
                winVersion = "Windows Me"
                Exit Select
        End Select
        Exit Select
 
 
    Case System.PlatformID.Win32NT
 
        Select Case osInfo.Version.Major
            Case 3
                winVersion = "Windows NT 3.51"
                Exit Select
            Case 4
                winVersion = "Windows NT 4.0"
                Exit Select
            Case 5
                If osInfo.Version.Minor = 0 Then
                    winVersion = "Windows 2000"
                Else
                    winVersion = "Windows XP"
                End If
                Exit Select
            Case 6
                If osInfo.Version.Minor = 1 Then
                    winVersion = "Windows 7"
                ElseIf osInfo.Version.Minor = 0 Then
                    winVersion = "Windows Vista"
                End If
                Exit Select
 
        End Select
        Exit Select
End Select
lblVersion.Text = winVersion

windows bilgilerinin tam listesi aşağıdaki resimlerde mevcuttur

Login failed for user ‘NT AUTHORITY\IUSR’.

Yazılarım, tİpucu Yorum Yok »

IIS 7 üzerinde yayınladığınız uygulamanızda , sql server ile yapmak istediğiniz veri tabanı işlemlerinde “Login failed for user ‘NT AUTHORITY\IUSR’.” hatasını alıyorsanız , Çözüm Kimlik Doğrulama seçeneğini tııkladıktan sonra Karşımıza çıkan pencerede Anonim Kimlik Doğrulama üzerinde sağ tuş tıklayıp düzenle yada yandaki menüden düzenle seçeneğini seçtikten sonra Uygulama Havuzu Kimliğini seçip Tamam diyoruz.

Login failed for user ‘IIS APPPOOL\Classic .NET AppPool’

Yazılarım, tİpucu Yorum Yok »

Windows 7 ile birlikte gelen IIS 7 ve IIS 7.5 üzerinde , asp.net + sql ile hazırlamış olduğunuz bir sayfayı localhostunuzda yayınlmaka istediğiniz de Login failed for user ‘IIS APPPOOL\Classic .NET AppPool’ diye bir hata alırsanız eğer

Çözüm :

Denetim Masası – Yönetimsel Araçlar – Internet Information Services (IIS) Yöneticisi ni çalıştırın. Karşınıza çıkan pencerede Uygulama Havuzlarını seçin. Classic .NET AppPool üzerinde sağ tıklayıp Gelişmiş Ayarları seçiniz.

Açılan Pencerede İşlem Modeli grubunda Kimlik bölümünü LocalSystem sistem olarak değiştirdiğimizde problemimiz çözülecektir.

Java’da string to int , int to string Dönüşümleri

Yazılarım Yorum Yok »

int bir değeri string ifadeye dönüştürmek için String.valueOf() fonksiyonundan yararlanıyoruz.

 public class MainClass {
 
public static void main(String[] arg) {
 int degisken = 12;
 System.out.println(String.valueOf(degisken));
 
}
 
}

string bir ifadeyi int degere dönüştürmek için ise Integer.parseInt() fonksiyonundan yararlanıyoruz.

 public class MainClass {
 
public static void main(String[] arg) {
 System.out.println(Integer.parseInt("100"));
 }
 }

eğer bu ifadeyi bir textfiledden elde ediyorsanız

 
int deger = Integer.parseInt(txtAlan1.getString()); // stringi inte dönüştürme
 txtAlan1.setString(String.valueOf(deger)); // int degeri textfield e aktarma

CHECKEDLISTBOX Kullanımı

Yazılarım 3 Yorumlar »

Çoklu seçme şansını bize sunan CHECKEDLISTBOX bileşeni birçok durumda gerçekten işimizi kolaylaştırmaktadır. Normal listbox ile kullanımı hemen hemen benzerdir.

Selectedindex: Seçilen liste elemanının sıra numarasını verir.
Items.Count: Listedeki tüm elemanların toplam sayısını verir. Textbox1.Text=Checkedlistbox1. Items.Count
Checkeditems.count: Seçili olan elemanların sayısını verir.
Selecteditem: Hangi check seçili ise onun adını verir.
Items.Contains: Tüm liste içeriğini parantez içinde verilen değerle kontrol eder. Deger varsa true, yoksa false dır.

Şimdi yazacak olduğumuz örnek kod parçasında Checkeditems.count tan bahsedeceğiz. Yukarıda açıkladığımız gibi listemizde seçili olan elemanların sayısını öğrenmek yada seçili olanlarla işlem yapmak istiyorsak Checkeditems tan yararlanıyoruz.

[C#]

private void button1_Click(object sender, EventArgs e)
{
string seciliDeğerler = “”;
if (checkedListBox1.CheckedItems.Count > 0)
{
for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++)
{
seciliDeğerler += checkedListBox1.CheckedItems[i].ToString() + ” , “;}
MessageBox.Show(seciliDeğerler);
lblSecililer.Text = seciliDeğerler;}
}

[VB.NET]

Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim seciliDeğerler As String = “”
If checkedListBox1.CheckedItems.Count > 0 Then
For i As Integer = 0 To checkedListBox1.CheckedItems.Count – 1seciliDeğerler += checkedListBox1.CheckedItems(i).ToString() & ” , ”
Next
MessageBox.Show(seciliDeğerler)lblSecililer.Text = seciliDeğerler
End If
End Sub

checkedlistbox

Base64 şifreleme

Yazılarım, tİpucu Yorum Yok »

Base64 şifreleme , 8 bitlik bir veriyi 64 bitlik bir veri haline getirerek 8 bit olmayan farklı katmanlarda veri iletişimi sırasında veri kaybını önlemek için kullanılır. Internet Explorer , Outlook Express ve diğer internet uygulamalarının dosya aktarımı veya otorum açma işlemlerinde yaygın olarak kullanılan bir şifreleme yöntemidir.

[C#]

public static string Encode(string sifrelenecekIfade)
{
byte[] sifrelenmisIfade = System.Text.ASCIIEncoding.ASCII.GetBytes(sifrelenecekIfade);
return System.Convert.ToBase64String(sifrelenmisIfade);
}

public static string Decode(string sifresiCozulecekIfade)

{

byte[] cozulmusIfade = System.Convert.FromBase64String(sifresiCozulecekIfade);

return System.Text.ASCIIEncoding.ASCII.GetString(cozulmusIfade);

}

[PHP]

<?php

echo base64_encode(”bilyaz.com”);

echo base64_decode($sifresiCozulecekIfade);

?>

UML de Sınıf Diyagram Notasyonları

Yazılarım Yorum Yok »

Uml ile bir sistemi ifade ederken şekillerden yararlandığımızdan bahsetmiştim. Bu yazımıda bu şekilleri inceleyeceğiz
Sınıf : Aşağıdaki ifadeyi sınıf tasarımlarında kullanırız. Burada tanımladığımız öznitelikler ve operasyonların önlerindeki işaretler erişilebilirlik ifadeleridir.
“+” ifadesi herkese açık (public)
“-“ ifadesi sınıfa özel (private)
“#” ifadesi korumalı (protected)


yazının devamı için http://www.bilyaz.com/yazilim-muhendisligi/uml-de-sinif-diyagram-notasyonlari.html/ adresini ziyaret ediniz.

UML (Unified Modelling Language)

Yazılarım Yorum Yok »

Herhangi bir işi geliştiren farklı departmanlar vardır ve bu departmanlar birbirlerinden farklı ortamlarda çalışsalarda aslında aynı işi geliştirirler. Birde proje içerisinde aktif rol alanların yanı sıra bu işi bize yaptıran bir yönetim ve işi bize veren müşterimiz vardır. Bu farklı grupların işte yapılacaklar konusunda , yapım sonucunda ortaya çıkacaklar konusunda aynı düşüncelere sahip olabilmesi için ortak bir dil kullanmaları gerekmektedir. Nasıl matematikte 2 + 2 = 4 se ve bu bir toplama işlemi ise bu yönetim içinde aynı şeyi ifade eder , çalışanlar içinde yada tamamen bağımsız birisi içinde .

Bunun içinde geliştirmekte olduğumuz işlerde UML (Birleşik Modelleme Dili) den yararlanırız. UML ile sistemimizi geliştirmeye başlamadan önce analiz aşamasında belirlediklerimizi diyaramlar yardımı ile hayata geçirmiş oluruz. Eksiklikleri , çalışma prensiplerini hatta senaryolarımızı bile…

http://www.bilyaz.com/yazilim-muhendisligi/uml-unified-modelling-language.html/ yazının devamı için ziyaret ediniz

Pasta Grafiği Oluşturma (C#,VB.NET)

Yazılarım Yorum Yok »

Uygulamalarımızda elimizdeki mevcut verilerden yararlanarak kullanıcılara daha dikkat çekici bir görünüm vermek için grafiklerden yararlanırız. Örneğin sattığımız dört ürünün aylık satışa göre toplamda aldığı pay,televizyon kanallarının belirli bir saatte izlenme oranları gibi.
Makalemde sizlere pasta grafiği oluşturmdan bahsedeceğim. Uygulamamızda kullanıcılardan aldığımız üç değere dayanarak dinamik olarak grafik oluşturacağız. Uygulamamızı çalıştırdığımızda da aşağıda gördüğümüz ifade oluşacak.

Yazının Devamı