27 Temmuz 2011 Çarşamba

C# Generic Sınıflara Giriş #2

Generics Nedir

Generics size tip-güvenliği ve performansı düşünmeden generic sınıflar yapabilmenizi sağlar.Sunucuyu yanlızca bir kere generic sunucu olarak implement edersiniz, aynı zamanda istediğiniz tip için kullanabilrsiniz. Bunu yapabilmek için < ve > parantezlerinin içine kullanacağımız tipi yazarız. Mesela aşağıda bir generic stack yapısının nasıl olduğu  görülmektedir:


public class Stack
{
   T[] m_Items; 
   public void Push(T item)
   {...}
   public T Pop()
   {...}
}
Stack stack = new Stack();
stack.Push(1);
stack.Push(2);
int number = stack.Pop();
Kod Blok 2 generic stack yapısını göstermektedir.  Kod Blok 1 ile Kod Blok 2 yi karşılaştırın göreceksiniz ki, Stack tanımı haricindeki her yerde  Code block 1 deki object yerine Kod Blok 2, ye T yerleştirilmiştir:
public class Stack
{...}
Generic stack yapısını kullanırken compiler ı generic parametre olan T yerine hangi tipin kullanılacağını hem stack yapısını tanımlarken hemde başlatırken bilgilendirmemiz gerekiyor:

Stack stack = new Stack();
Compiler ve runtime geri kalan herşeyi yapar.
Kod Blok 2. Generic Stack Yapısı
public class Stack
{
   readonly int m_Size; 
   int m_StackPointer = 0;
   T[] m_Items;
   public Stack():this(100)
   {}
   public Stack(int size)
   {
      m_Size = size;
      m_Items = new T[m_Size];
   }
   public void Push(T item)
   {
      if(m_StackPointer >= m_Size) 
         throw new StackOverflowException();
      m_Items[m_StackPointer] = item;
      m_StackPointer++;
   }
   public T Pop()
   {
      m_StackPointer--;
      if(m_StackPointer >= 0)
      {
         return m_Items[m_StackPointer];
      }
      else
      {
         m_StackPointer = 0;
         throw new InvalidOperationException("Cannot pop an empty stack");
      }
   }
}

23 Temmuz 2011 Cumartesi

Site Haritası Oluşturma ve Web Yönetici Araçlarına Kayıt

Google, Web Master Tools ile hızlı, kolay ve iyi şekilde siteniz hakkında detaylı bilgiye sahip olabilir. Aynı zamanda Web Master Tools'a kayıt olmak Arama Motoru Optimizasyonu (SEO) içinde faydalı olacaktır. Web Yönetici Araçları'na blogunuzun site haritasını yükleyebilir ve böylelikle Google'ın sizin siteniz hakkında bilgi sahibi olmasını sağlayabilirsiniz.


Web Yönetici Araçlarını Kullanmak için Sebepleriniz Var

1. Site haritası oluşturmak.
2. İçerik Analizi Yapabilmek; Sitenize giden bağlantılar, Anahtar Kelimeler, İç bağlantılar, Abone istatistiklerinizi inceleyebilirsiniz.
3. Sitenizdeki URL'leri Bulunamadı, Erişilemiyor, HTTP, Site Haritaları içerisinde, Zaman aşımına uğradı, robots.txt ile kısıtlanıyor, İzlenemiyor gibi kategorilere ayrılmış listeler yardımı ile kolayce görüntüleyebilme ve varsa sorunları düzenlem imkanı.
4. Harici Bağlantılar: Sitenize başka sitelerce verilmiş olan bağlantıları görüntüleme imkanı.
5. Harici Bağlantıların içeriği hakkında bilgi.
6. URL İndekslenme: Google tarafından hale hazırda indekslenmiş olan bir içeriğin indekslenmesini istemiyorsanız URL'yi kaldırma imkanı.

Liste benzer maddelerle daha da uzatılabilir.

Wordpress gibi diğer blog platformlarında hazır eklentilerle oluşturulabilen Site Haritasını Blogger'da oluşturmak için atom.xml beslemesini kullanabiliriz. Eğer halen site haritanızı Web Yönetici Araçlarına kaydettirmediyseniz, vakit kaybetmeden Web Yönetici Araçlarına kayıt olun. Kayıt işleminden sonra var olan sitenizi kayıt ettirmelisiniz. Size verilecek olan kodu istenlen yere yerleştirin ve sitenizi doğrulayın.

Doğrulama işleminden sonra, site haritası eklemek istediğiniz blogunuzu Web Yönetici Araçlarıda seçin. Açılan pencerede sayfanın solunda yer alan Kontrol Panelinden Site Yapılandırma > Site Haritaları yolunu izleyin ve Bir Site Haritası Gönderdin seçeneğine tıklayın açıan kutucuğa alttaki gibi Site Haritanızı ekleyin;

http://blogadiniyaz.blogspot.com/atom.xml?redirect=false&max-results=100
ya da
http://www.siteadiniyaz.com/atom.xml?redirect=false&max-results=100

* Eğer besleme için Feedburner kullanıyorsanız, ?redirect=false kodunu eklediğinizde hata kodu alabilirsiniz.
* max-results=100 kodu sitenizde yer alan son 100 yazınızın site haritanızda yer almasını sağlayacaktır.

Eğer sitenizde 100'den fazla sayıda yazınız varsa;
atom.xml?redirect=false&start-index=101&max-results=100

Eğer sitenizde 200'den fazla sayıda yazınız varsa;
atom.xml?redirect=false&start-index=201&max-results=100

Daha fazla yazınız varsa benzer şekilde ilerleyebilirsiniz.


Site Haritası Hazırlamak için Farklı Yöntemler


En önerilen yöntem Web Yönetici Araçları ile Site haritası oluşturmaktır. Ancak merak edenler için site haritası oluşturmaya olanak sağlayan birkaç siteden de bahsetmek isterim.

* xml-sitemaps.com sitesiyle bilgisayarınıza herhangi bir program yüklemeden, bedava olarak site haritası oluşturabiliyorsunuz. Oluşturulan site haritası Google, Yahoo!, Live Search başta olmak üzere tüm arama motorlarına uygun. 500 sayfalık limiti var.

* WriteMaps, online olarak site haritası oluşturmanıza, düzenlemenize ve paylaşmanıza izin veren web tabanlı ücretsiz bir araç.

* FTP tipindeki Blogger blogları için; Gsite Crawler

gibi Site Haritaları oluşturabileceğiniz farklı sitelerde kullanılabilir.

13 Temmuz 2011 Çarşamba

İpucu: SQL Server Servislerini Komut Satırından Yönetme

SQL Server Servislerini tıpkı diğer servsilerde olduğu gibi komut satırından başlatabilir, durdurabilir veya duraksatabilirsiniz. Varsayılan veritabanını yönetmek için şu komutları komut satırında kullanabilirsiniz:

NET START MSSQLSERVER SQL Server'ı bir servis olarak başlatır.
NET STOP MSSQLSERVER Servis olarak çalışan SQL Server'ı  durdurur.
NET PAUSE MSSQLSERVER Servis olarak çalışan SQL Server'ı duraksatır.
NET CONTINUE MSSQLSERVER Duraksatılan SQL Server'ı kaldığı yerden devam ettirir.

Diğer adlandırılmış SQL Server örneklerini ( Named Instances) yönetmek için şu komutları kullanabilirsiniz:


NET START MSSQLSERVER$instancename SQL Server'ı bir servis olarak başlatır.
NET STOP MSSQLSERVER$instancename Servis olarak çalışan SQL Server'ı  durdurur.
NET PAUSE MSSQLSERVER$instancename Servis olarak çalışan SQL Server'ı duraksatır.
NET CONTINUE MSSQLSERVER$instancename Duraksatılan SQL Server'ı kaldığı yerden devam ettirir.