Sayfalar

26 Ocak 2012 Perşembe

SQL Server 2008 tasarım modunda bir tablonun değiştirilmesi

Sql Server'da her zaman TSQL kullanarak bir tablo için yapısal bir değişiklik yapılması tavsiye edilir. Ancak, veritabanı geliştiricileri için SQL Server Management Studio kullanarak değişiklikler yapmak uygun bir seçenektir. SQL Server 2008 Management Studio' da varsayılan olarak etkin olan "Prevent saving changes that require the table re-creation" seçeneği seçili olduğundan değişiklik yapılmak istendiğinde aşağıdaki uyarı mesajı ile karşılaşılır.
 
"Saving changes is not permitted. The changes that you have made require the following tables to be dropped and re-created."

Bu uyarıyı almadan SQL Server Management Studio kullanarak tasarım modunda tablolar üzerinde değişiklik yapabilmek için varsayılan olarak seçili olan "Prevent saving changes that require the table re-creation" seçeneğinin seçili olmaması gerekmektedir.

Bunun için
SQL Server Management Studio da "Tolls" menüsünden "Options" seçeneği seçilir. Açılan penceredeki soldaki ağaç yapısındaki menü'den "Designers" ın altında yer alan "Table and Database Designers" seçilir. Bu ekrandaki "Prevent saving changes that require the table re-creation" özelliğinin yanındaki check işareti kaldırılarak "ok" butonuna basılarak değişikler uygulanır.



19 Ocak 2012 Perşembe

Multi thread yaşam.

İlk görevle başlıyor ilk nefes. Öyle ya! Nefes almakta bir görev değil mi?? Her nefeste de görevleşmiş zamanlar. Bir bakmışız görev bitmiş.

Multithread bir yaşam multi thread'de de zamanı iyi ayarlamak lazım. Bir yazılımcıdan da böyle bir bitiş beklenirdi zaten :))

/* Hepsi bir tarafada sosyal aktiviteleri bile bir görev gibi yapar oldum sinirimi bozanda bu zaten. pehh :p

Bilmeyenler için kısaca Multi Thread : Birden fazla işin (görevin :) ) aynı anda yapılması.
*/

Minimum Kapsayan Ağaç (Minimum Spanning Tree)

C# da minimum kapsayan ağaç algoritmasını uyguluyoruz. Algoritma hakkında detaylı bilgiyide ekleyeceğim. Şimdilik c# kodlarını sizlerle paylaşıyorum.


using System;

namespace MinimumSpanningTree
{
    public abstract partial class BaseEntity
    {
    }
}

------------------------------------------------------------------------------------------
using System;

using System.Collections.Generic;

namespace MinimumSpanningTree
{
    public abstract partial class BaseEntityCollection : List where T : BaseEntity, new()
    {
    }
}

------------------------------------------------------------------------------------------
using System;

namespace MinimumSpanningTree
{
    public partial class GraphEdgeCollection : BaseEntityCollection
    {
    }
}



------------------------------------------------------------------------------------------
using System;

namespace MinimumSpanningTree
{
    public partial class GraphEdge : BaseEntity
    {
        #region Ctor
        public GraphEdge()
        {
        }
        #endregion

        #region Properties
        ///<summary>
        /// Kenarın bağlı onduğu başlangıç noktası
        /// </summary>
        public int StartNode { get; set; }

        /// <summary>
        /// Kenarın bağlı onduğu bitiş noktası
        /// </summary>
        public int FinishNode { get; set; }

        ///<summary>
        /// Kenarın ağırlığı
        /// </summary>
        public int EdgeWeight { get; set; }      
        #endregion
    }

}

------------------------------------------------------------------------------------------
using System;

namespace MinimumSpanningTree
{
    class Program
    {
        /// <summary>
        /// Graph listesini kenar ağırlıklarına göre sıralar.
        /// </summary>
        /// <param name="x" />
        /// <param name="y" />
        /// <returns></returns>
        private static int CompareEdgeWeights(GraphEdge x, GraphEdge y)
        {
            if (x == null)
            {
                if (y == null)
                    return 0;
                else
                    return -1;
            }
            else
            {
                if (y == null)
                    return 1;
                else
                    return x.EdgeWeight.CompareTo(y.EdgeWeight);
            }
        }
        static int nodeNumber = 0;
        static void Main(string[] args)
        {
            try
            {
                GraphEdgeCollection graphEdgeCol = ReadGraph();
                graphEdgeCol.Sort(CompareEdgeWeights);
                int totalWeight = 0;
                int counter = 0;
                foreach (GraphEdge edge in graphEdgeCol)
                {
                    //Listemiz kenar ağırlıklarına göre sıralandığı için burada seçim yaptırmıyoruz. Sıradakini alıyoruz.
                    if (counter == nodeNumber - 1)
                    {
                        Console.WriteLine("Toplam Ağırlık:" + totalWeight);
                        Console.ReadKey();
                        return;
                    }
                    if (edge.StartNode == edge.FinishNode)//Halka içeriyor bir sonraki kenara bak
                        continue;
                    Console.WriteLine("({0},{1})={2}", edge.StartNode, edge.FinishNode, edge.EdgeWeight);
                    totalWeight += edge.EdgeWeight;
                    counter++;
                }
                Console.WriteLine("Toplam Ağırlık:" + totalWeight);
            }
            catch (Exception exc)
            {
                Console.WriteLine("HATA OLUŞTU: " + exc.Message);
            }
            Console.ReadKey();
        }

        ///<summary>
        /// Graf'ın tanımlanması için kullanılan fonksiyon
        /// </summary>
        private static GraphEdgeCollection ReadGraph()
        {
            try
            {
                Console.WriteLine("Graf düğüm sayısını giriniz...: ");
                nodeNumber = Int32.Parse(Console.ReadLine());//Düğüm sayısı okundu.
                int edgeNumber = nodeNumber;//Düğüm sayısı kadar edge olabilir
                GraphEdgeCollection graphEdgeCol = new GraphEdgeCollection();
                GraphEdge graphEdge = new GraphEdge();
                int[,] graphEdgeArr = new int[nodeNumber, edgeNumber];//Dizinin iki paremetreside düğüm numarası
                for (int i = 0; i < nodeNumber; i++)
                {
                    for (int j = 0; j < edgeNumber; j++)
                    {
                        if (graphEdgeArr[i, j] > 0 && graphEdgeArr[j, i] > 0)// Daha önce ağırlık değeri girilmiş ise
                            continue;
                        Console.WriteLine("{0}. düğüm ile {1}. düğüm arasındaki kenarın (edgenin) ağırlığını girin...:", i + 1, j + 1);
                        int weight = Int32.Parse(Console.ReadLine());
                        if (weight != 0)
                        {
                            graphEdgeArr[i, j] = weight;
                            if (i != j)
                                graphEdgeArr[j, i] = weight;
                            //bu kontrole gerek kalmadı çünkü yukarıda aynı ise buraya gelmiyor.
                            //if (graphEdgeCol.Find((a) => a.StartEdge == i && a.FinishEdge == j) ==null &&
                            //    graphEdgeCol.Find((a) => a.StartEdge == j && a.FinishEdge == i)==null)
                            //{
                            graphEdge = new GraphEdge();
                            graphEdge.StartNode = i+1;
                            graphEdge.FinishNode = j+1;
                            graphEdge.EdgeWeight = weight;
                            graphEdgeCol.Add(graphEdge);
                            //}
                        }
                    }
                }
                return graphEdgeCol;
            }
            catch (Exception)
            {
                throw;
            }
        }

        static void deneme()
        {
            try
            {
                Console.WriteLine("Graf düğüm sayısını giriniz...: ");
                int nodeNumber = Int32.Parse(Console.ReadLine());//Düğüm sayısı okundu.
                int edgeNumber = nodeNumber;//Düğüm sayısı kadar edge olabilir
                int[,] graphEdge = new int[100/*Düğüm sayısı*/, 4];
                //int[,] graphEdge = new int[nodeNumber/*Düğüm sayısı*/, edgeNumber];
                int[,] tree = new int[nodeNumber, edgeNumber];
                for (int i = 0; i <= nodeNumber; i++)
                {
                    for (int j = i + 1; j <= nodeNumber; j++)
                    {
                        Console.WriteLine("{0}. düğüm ile {0}. kenarın (edgenin) ağırlığını girin...:", i + 1, edgeNumber);
                        int weight = Int32.Parse(Console.ReadLine());
                        if (weight != 0)
                        {
                            //graphEdge[edgeNumber, j] = weight;//ağırlığı
                            graphEdge[edgeNumber, 1] = i;//ağırlığı
                            graphEdge[edgeNumber, 2] = j;//ağırlığı
                            graphEdge[edgeNumber, 3] = weight;//ağırlığı

                            edgeNumber++;
                        }
                    }
                }
            }
            catch (Exception exc)
            {
                Console.WriteLine("HATA OLUŞTU: " + exc.Message);
            }
            Console.ReadKey();
        }
    }
}

C# ile Fibonacci Hesaplama

Klavyeden girilen n. sıradaki fibonacci sayısını veren program.

Önce fibonacci hakkında bilgi alalım. Bilgi için tıklayınız.

using System;
namespace CalculateFibonacci
{
    class Program
    {
        static void Main(string[] args)
        {
            int a;
            Console.Write("Kaçıncı Sıradaki Fibonacci Sayıyısını İstiyorsunuz..:");
            a = Convert.ToInt32(Console.ReadLine());
            int[] Fabo = new int[a];
            for (int i = 0; i < a; i++)
            {
                if (i<2)
                    Fabo[i] = i;
                else
                    Fabo[i] = Fabo[i-1] + Fabo[i -2];
                Console.WriteLine((i + 1) + ".Sıradaki Fibonacci Sayısı..:" + Fabo[i]);
            }
            Console.ReadLine();
        }
    }
}

18 Ocak 2012 Çarşamba

Java'da Ondalık Tabandaki Bir Tamsayının İkilik Tabana Dönüştürülmesi

Klavyeden okunan ondalık tabandaki bir tamsayıyı ikilik tabana dönüştüren program.

package fulyaodabasi;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Decimal2Binary();
    }

    private static void Decimal2Binary()
    {
      System.out.print("Sayı giriniz :");
      int decNumber = new Scanner(System.in).nextInt();
      String binNumber="";
      if (decNumber <= 0)
      {
          System.out.println("Girmiş olduğunuz sayı sıfırdan büyük olmalıdır.");
          return;
      }

      while (decNumber != 0)
      {
          if (binNumber.length() % 5 == 0)
              binNumber = " " + binNumber;
         
          binNumber = (decNumber % 2) + binNumber;

          decNumber /=2; // decNumber = decNumber / 2;
      }
      System.out.println("İkilik (Binary) sayı: " + binNumber);
    }
}

Bunlarda ilginizi çekebilir : 
C#'da 16'lık Sistemden 2'lik Sisteme Çevirme
C#'da 2'lik Sistemden 16'lık Sisteme Çevirme

Java'da Ortalama, Standart Sapma, Ortanca (Median) Hesaplama

Rastgele olarak dolduracağınız bir tamsayı dizisinin ortalamasını, standart sapmasını, ortancasını (median) ve ağırlıklandırılmış ortalamasını hesaplayan program.

import java.util.Arrays;
public class Main {

     public static void main(String[] args) {
        int[] arrNumber = new int[1000];
        int arrLength = arrNumber.length;
        //-----Ortalaması
        int sumNumber =0;
        for (int i= 0; i < arrLength; i++)
        {
           arrNumber[i]=(int)(Math.random()*255);
           sumNumber+= arrNumber[i];
        }
        double avg = sumNumber/arrLength;
        System.out.println("Ortalaması : " + avg);
        //-----Standart sapma
        double standardDevNum=0;
        for (int i= 0; i < arrLength; i++)
        {
           double s = arrNumber[i]-avg;
           standardDevNum += s*s;//karesi
        }
        double standardDev = Math.sqrt(standardDevNum/2);
        System.out.println("Standart sapması : " + standardDev);
        //-----Ortancası (Median)
        Arrays.sort(arrNumber);
        double median = 0;
        int mid=0;
        // median = (0.5*(arrLength+1));
        if(arrLength %2 == 1)//dizi eleman sayısı tek ise
        {
            mid = (arrLength + 1) / 2;
            median = arrNumber[mid] ;
        }
        else{//dizi eleman sayısı çift ise
            mid = arrLength/2;
            median= (arrNumber[mid-1] + arrNumber[mid]) / 2.0;
        }
     
        System.out.println("Ortanca (Median) : " + median);
     }
}

Java'da Permütasyon Hesaplama

N tane tamsayı içeren bir dizinin tüm permütasyonlarını ekrana yazdıran program.
Örnek: 1,2,3 için: 3! permütasyon olur. 3! = 3*2*1 = 6
            3! permütasyon için çıktı 1 2 3, 1 3 2, 2 1 3, 2 3 1, 3 1 2 ve 3 2 1 'dir.

package fulyaodabasi;

import java.util.Arrays;

public class Main {
   
     public static void main(String[] args) {
        int arrLength=3;
        int[] arrNumber = new int[arrLength];
        /*for (int i = 0; i < arrLength; i++) {
          arrNumber[i]=(int)(Math.random()*10);
          System.out.println("dizi {0}. elemanı"+arrNumber[i]);
        }*/
        arrNumber[0]=1;
        arrNumber[1]=2;
        arrNumber[2]=3;

        GetPermutations("", arrNumber);
    }

    private static void GetPermutations(String current,int[] arrNumber)
    {
        int arrLength = arrNumber.length;
        if(current.length() < arrLength)
        {
            for (int i= 0; i < arrLength; i++) {
                String digitString = String.valueOf(arrNumber[i]);
                if (current.indexOf(digitString) < 0)
                    GetPermutations(current + arrNumber[i], arrNumber);
            }
       }
       else if (current.length() == arrLength)
           System.out.println(current);
    }
}

Java'da Olağanlaştırılmış Histogram

0 ile 255 arasındaki tamsayılar ile rastgele olarak doldurulmuş 10.000'lik bir dizinin olağanlaştırılmış histogramını hesaplayan program.

package fulyaodabasi;

import java.util.Arrays;
public class Main {

    public static void main(String[] args) {
        OlaganlastirilmisHistogram();
    }

     private static void OlaganlastirilmisHistogram()
    {
        int[] arrNumber = new int[10000];
        double[] arrHist = new double[255];

        for (int i= 0; i < arrNumber.length; i++)
        {
            //127 250-1
            arrNumber[i]=(int)(Math.random()*255);
            arrHist[arrNumber[i]]=arrHist[arrNumber[i]]+1;
            System.out.println("ilk dizinin " + (i+1) + ".elemanı :" + arrNumber[i]);
        }
        //Histogramı olağanlaştırıyoruz
        for (int i= 0; i < arrHist.length; i++) {
            arrHist[i]=arrHist[i]/arrHist.length;
            System.out.println("Histogramın " + (i) + ".elemanı :" + arrHist[i]);
        }
    }

}

12 Ocak 2012 Perşembe

Kare Matris İçinde Eşkenar Dörtgen Yazdırmak

Kullanıcının girdiği bir sayıyı okuyarak ekrana verilen boyutta kare matris içinde boş eşkenar dörtgen yazdıran program.

Ekran Çıktısı

#include "stdafx.h"
#include <iostream>
#include <string>

void main()
{
  int sayi;
  scanf("%d",&sayi);
  printf("Girilen matris boyutu : %d\n",sayi);
  int medyan = 0;
  if(sayi % 2 == 0)
      medyan = sayi/2;
  else
      medyan= (sayi+1)/2;

  std::string str ="*";
  int pad =0;
   int tmp=0;
  for(int i=1; i<=sayi; i++)
  {
      str="";
      pad=medyan-i;

      if(pad<0)
          pad *= -1;

      str.insert(0,pad, ' ');
       if(i==sayi && sayi % 2 == 0)
      {
          str.insert(str.size()-2, 1, '*');
      }
      else
        str.insert(str.size(), 1, '*');


      if(i>1 && (i!=sayi && sayi % 2 != 0))
      {
        str.insert(str.size(), sayi-((pad*2)+2), ' ');
        str.insert(str.size(), 1, '*');
      }
      else if(i>1 && (i<(sayi-1) && sayi % 2 == 0))
      {
        str.insert(str.size(), (sayi-1)-((pad*2)+2), ' ');
        str.insert(str.size(), 1, '*');
      }
      else if(i==sayi && sayi % 2 == 0)
      {
         str.insert(str.size()-1, 1, '*');
      }
      std::cout << str << std::endl;
  }
}

10 Ocak 2012 Salı

Uzun uzun zaman sonra Merhaba!!! :)

Son 2 senedir beni içerisine alan zaman kasırgası biraz durulduda (1-2 günlük bir süre) bende kendisiyle yarışır gibi hemen yapamadıklarımdan başladım yine. 1 gün 48 saat olsa yine yetmezde bana işte ardı arkasına birikenler yapılmadıkça sadece dağlaşıyor karşımda. Bu dağın karşısında daha fazla minnacık kalmadan biryerden listeyi azaltmak gerek diye düşündüm ve uzunca zaman önce başlattığım bilgi paylaşımı bloğuma geri döndüm :).
Eee tabi başka isteklerimde yok değil ama bu kasırgayı coşturmak olur, coşsun coşsunda sonunda kasırga durulduğunda ben ben olmayabilirim :). İş ve okul hayatını bir arada götürmek fazlasıyla yordu ama okulun bitmesine az zaman kalmasının ve ara tatile girmiş olmanında verdiği doping ile coştum. Bu enerjiyi iyi değerlendirip daha fazla paylaşımda bulunmaya çalışacağım.
Ayrıca bu ara arkadaşlarla yeni proje fikri üzerinde yoğunlaştık, fırsat buldukça yapacağımız çalışmaları okul bitince hızlandırıp bir an önce hepinizlede paylaşmak istiyoruz. Sonuç mu? Bence eğlenceli olacak.
Döndüm ben Merhaba!!! :) Herkese zamanı iyi değerlendirebileceği anlar diliyorum.

Merhaba,

Fulya Odabaşı.

9 Ocak 2012 Pazartesi

EnableEventValidation

Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEven Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

EnableEventValidation'ın default değeri true dur. EnableEventValidation="false" yaptığınızda sorun çözülür.