20 Nisan 2012 Cuma

A potentially dangerous Request.Form value was detected from the client

"A potentially dangerous Request.Form value was detected from the client" hatası .NET Framework 1.1 ile gelen ve .NET Framework 2.0 da da bulunan "Request Validation" özelliğinden kaynaklanmaktadır. Kullanımındaki amaç script kodları yada html kodları aracılığıyla yapılabilecek script injection'larına engel olmaktır. Mesela bir textbox'ın içersinde "<" yada ">" işaretleri yerleştirecek olursanız form submit edildiği an hata ile karılaşırsınız.

Ancak bazı durumlarda kullanıcının bunu yapmasına müsade etmemiz gerekebilir.

Bu sorunu çözmenin 2 yolu var
1) web.config de Request Validation'ı disable etmek (tüm uygulama için geçerli olacaktır)
2) Bu sorunu çözmek istediğiniz sayfa için @Page yönergesine validateRequest=false yazmak.

Ref http://kb.seekdotnet.com/ViewArticle/42data.aspx

23 Eylül 2011 Cuma

Bir ülke iflas ederse ne olur?


Bir ülkenin iflas etmesi o ülkenin yükümlülüklerini yerine getirememesi anlamına geliyor. Yani bir ülke memur maaşlarını, borçlarını ödeyemiyorsa teknik anlamda iflas etmiş olarak kabul ediliyor.

Bugüne kadar hiçbir ülke memurlarına maaş ödemeyle, alacaklılarına borç ödeme arasında seçim yapmak zorunda kaldığında alacaklıları tercih etmedi. Yani aralarında silahlı kuvvetlerinde yer aldığı memurlara maaşları öyle ya da böyle ödenirken, diğer alacaklılara para yok deniliyor.
Bir ülke ben borçlarımı ödemiyorum dediğinde, banka ya da kişilerde olduğu gibi alacaklılar kapısına gelip, mallarına haciz koyamıyor.
Peki iflas eden ülkenin başına neler geliyor? Bugüne kadar ülke iflaslarının hiçbirisinde devletler alacaklılarına size hiç para ödemeyeceğim demedi.
Genelde yapılan 'Ben iflas ettim, size olan borçlarımın bir kısmını sileceğim. Kalanını da uzun bir vadede ödeyeceğim' şeklinde bir dayatma oluyor.
Örneğin Arjantin 2003 yılında 'Ben iflas ettim' dediğinde borçlarının dörtte üçünü sildi. Arjantin'e borç veren dev bankalar ve bu ülkenin bonolarını alan 500 bin yatırımcı paralarının yüzde 75'ini kaybetti.
Ancak bir ülkenin 'Ben borçlarımı ödemiyorum' demesi öyle kolay değil. Böyle bir şey yapan ülkeye yatırımcılar bunun faturasını daha sonra mutlaka ödetiyor.
O ülkenin bir daha dünya piyasalarından kolay kolay borç bulması mümkün olmuyor. Bulunan borcun faizi de son derece yüksek oluyor.

16 Ağustos 2011 Salı

Excel'de hücre içinde bir alt satıra nasıl geçilir?

Excel'de bir hücreye bir satırdan fazla veri girmek istiyorsanız Enter tuşuna bastığınızda o hücre içinde bir alt satıra geçmek yerine bir sonraki hücreye geçtiğini acı bir şekilde farkedeceksiniz :mrgreen: 

Çeşitli tuş kombinasyonları deneyip doğru olanı buluncaya kadar sinir katsayınızı artırmadan önce cevabı forumlarda arama başlayan arkadaşlar için

Excel'de bir hücrede bir alt satıra geçmenin formülü: ALT + ENTER

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");
      }
   }
}