tiocfaidh ar la...

by Yasin Sirkecili 30. June 2008

Eskiye oranla iskelete dönmüştüm, ama önemli değildi... Çözülmeyi reddeden tek bir Cumhuriyetçi Siyasi Savaş Tutuklusu’nun dayanma gücünü kıracak hiçbir şeyi yoktu tüm emperyalist cephaneliklerinde... Soğuktan donarak yeniden döndüm. Kar pencereden battaniyenin üstüne yağıyordu. Tiocfaidharla, dedim kendi kendime. Tiocfaidharla... çıplak ve acıyla iki büklüm olmuş... çürüyen çöp yığınlarının ortasında bir köşeye çömelmiş, dışkı kokusunun sidik ve çürüyen artık yiyeceklerin hasta edici kötü kokusuna karışıp kalacağı yere bağırsaklarını boşaltmaya zorlanan yıkanmamış bir beden. Bu tür işkenceye bir ad bulsunlar haydi diye düşündüm, ayağa kalkıp temiz hava almak için pencereye giderken. Dayaklar, tazyikli sular, açlık ve yoksunluk. Bu kabuslar kabusuna bir ad taksınlar haydi...”

 

Bu zulmün, bu işkencenin adı... kibarca HÜCRE’ydi. Açıkça TABUTLUK... İşte bu işkencenin adı siz seyredenlerce “AVRUPA STANDARTI”!!!!

Direnmekten, savaşmaktan gurur duyuyorum. Dışarda bizi yok edemezlerdi. Cehennem de-liklerinin içinde acımadan işkence ediyorlardı bize ve yine yok edemiyorlardı. Korkuyordum ama teslim olmayacağımı biliyordum. Boyun eğmektense tüm işkence silahlarının zalim gücünü göğüsleyebilirim...



 

Validatörlerin püfleri - 1

by Yasin Sirkecili 28. June 2008
  • RequiredFieldValidator

RequiredFieldValidator kontrolünün InitialValue propertysini kullanarak dropdownlist seçimlerimizde açıklama yazsını yazdığımız itemların seçilmesi durumunda validatörün tetiklenmesini sağlayabiliriz.

<asp:DropDownList ID="DropDownList1" runat="server">
   <asp:ListItem>Lütfen bir kişi seçiniz</asp:ListItem>
   <asp:ListItem>Yasin Sirkecili</asp:ListItem>
   <asp:ListItem>Levent Yıldız</asp:ListItem>
   <asp:ListItem>Mete Tunca</asp:ListItem>
   <asp:ListItem>Sem Göksu</asp:ListItem>
    </asp:DropDownList>
    <asp:Button ID="Button1" runat="server" Text="Button" />
     <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="DropDownList1" ErrorMessage="isim seçmediniz"  InitialValue="Lütfen bir kişi seçiniz"></asp:RequiredFieldValidator>

Yukarıdada gördüğünüz üzere ListItemlarımızdan 0 indexine sahip olan ve sadece açıklama nedeniyle kullandığımız itemın seçilmesi durumunda validatörün tetiklemesini sağlamak için Initial Value proprtysine itemla aynı text değeri atıyoruz. Initial Value propertysinin özelliği kendisine atanan katar ile validatörün kontrol ettiği kontrolün text değerinin aynı olmamasını sağlamaktır. Eğer iki değer aynı ise validatörün tetiklenerek uyarı mesajı vermesini sağlayacaktır.

  • CompareValidator

Çoğumuzun genellikle iki farklı kontroldeki değerlerin birbirleri ile aynı olup olmadığını denetlemek için kullandığımız CompareValidator aslında tek bir kontroldeki katarın sabitlenen bir değere eşit yada büyük yada küçük gibi kontrollerini yapmanın yanı sıra aynı zamanda girilen değerin data tipinide kontrol edebilir. Örneğin;

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
   <asp:Button ID="Button1" runat="server" Text="Button" />
   <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="textboxa yasin yazmadınız."             ValueToCompare="yasin"></asp:CompareValidator>

şeklinde bir kontrole girilen veriyi başka bir kontrolle karşılaştırmak yerine bir değerle karşılaştırabiliyoruz. Aynı olayı CompareValidatorımızın Operator ve Type properytlerinden faydalanarak matematiksel karşılaştırmalar yapmak gibi işlemler içinde kullanabiliriz. Örneğin;

<asp:CompareValidator ID="CompareValidator1" runat="server"  ControlToValidate="TextBox1" ErrorMessage="10dan büyük bir sayı yazmadınız." Operator="GreaterThan" Type="Integer" ValueToCompare="10"></asp:CompareValidator>

Burda kullanıcıyı integer tipinde bir değer girmeye zorlamanın yanı sıra aynı zamanda 10dan büyük bir değer girmeyede mecbur bırakıyoruz.

Sadece girilen verinin tipini kontrol etmek istersek;

<asp:CompareValidator ID="CompareValidator1" runat="server"  ControlToValidate="TextBox1" ErrorMessage="lütfen tam sayı bir değer giriniz." Operator="DataTypeCheck" Type="Integer"></asp:CompareValidator>

şeklinde Operator propertysinin DataTypeCheck değerini kullanarak girilen verinin istediğimiz veri türüne olan uygunluğunuda kontrol edebiliriz. Test uygulaması yaptığınızda göreceğiniz üzere CompareValidatorün gelişmiş özellikleri birçok konuda RegularExpression ihtiyacını ortadan kaldırıyor.

Operator property'si 7 farklı değer alabilir. Bu değerler DataTypeCheck , Equal , NotEqual , GreaterThan , GreaterThanEqual , LessThan , LessThanEqual şeklinde olup bu değerlerden faydalanarak kontrol değerini karşılaştırma şeklinizi kolaylıkla belirleyebilirsiniz.

Type property'si ise 5 farklı değer alır ve bu değerler şöyledir: Currency , Date, Double, Integer, String

FileUpload dosya boyutu sınırı ve işlem süresi

by Yasin Sirkecili 27. June 2008

FileUpload kontrolü ile kullanıcı dosyalarını sunucunuza aktarırken pekde dikkat edilmeyen ancak DOS ataklarına karşın muhakkak önlem almamız gereken bi özellikten bahsetmek istiyorum. Default olarak bir asp.net uygulamasında maximum 4 MB yani 4096kb bir talebi işleme sokabiliriz. FileUpload'a eklenen kullanıcı dosyalarının bu sınırı aşması durumunda sayfa hata verecek ve dosya transfer edilmeyecektir. Ancak bu durum sunucuda 4mb lık talepler yaratacağından ard arda yapılması bir nevi Denial of service atack haline gelecektir. Hem bu durumu engellemek. Hemde ihtiyaç duyduğunuzda daha yüksek dosya boyutuna izin vermek için aşağıdaki düğümü ve niteliklerini web.config sayfanıza eklemeniz gerekiyor.

<httpRuntime maxRequestLength="11264" executionTimeout="120"/>

burda;

maxRequestLength : kb cinsinden dosya boyutu değeri örneğin ben 11 MB olarak belirledim.
executationTimeout : Request talebinin ne kadar süre içerisinde işlem görebileceğini sn cinsinden belirtir. Süre aşıldığında talebin iptali sağlanır. Bu durumda sunucunuzun taleplere cevap verme yetisi azaldıkça işlem süresi içinde gerçekleşmeyen talepleri iptal edeceğinden aynı zamanda aplikasyonunuzun korunmasına yardımcı olacaktır.

Dinamik eklenen kontroller ve Updatepanel trigger ilişkisi

by Yasin Sirkecili 25. June 2008

for (int j = 1; j <= Convert.ToInt32(toplamsayfa.Value); j++)
{
LinkButton lnkbutton = new LinkButton();
lnkbutton.Text =" " + j.ToString() + " ";
lnkbutton.Font.Overline = false;
lnkbutton.CommandArgument = j.ToString();
lnkbutton.Command += new CommandEventHandler(lnkbutton_Command);
lnkbutton.ID = "lnk" + j.ToString();
AsyncPostBackTrigger trig = new AsyncPostBackTrigger
();
trig.ControlID = lnkbutton.ClientID.ToString();
UpdatePanel2.Triggers.Add(trig);
Panel1.Controls.Add(lnkbutton);
}

yukarıda gördüğünüz son projemden, basit bir sayfalama algoritmasına ilişkin kısa bir blok. Burda dikkatinizi çekmek istediğim.

AsyncPostBackTrigger trig = new AsyncPostBackTrigger
();
trig.ControlID = lnkbutton.ClientID.ToString();
UpdatePanel2.Triggers.Add(trig);

şeklinde updatepanelinize dinamik olarak trigger ekleyebilirsiniz.

Server-side table - tr - td

by Yasin Sirkecili 22. June 2008
Az önce mail ile gelen sorulardan birine yazdığım cevabı burdada yayınlamak istedim. Bildiğiniz üzere asp.nette server-side table kullanarak dinamik olarak tablolar oluşturup verilerinizi bu tabloların hücrelerine aktarabilir ve görüntüleyebilirsiniz. Genel olarak baktığımızda veritabanı işlemleri hususunda verilerimizi datalist, detailsview, datagrid gibi kontrollere template tanımlayıp istediğimiz düzende görüntülenmesini sağlıyoruz. Ancak hem vt işlemlerinde bu kontroller olmadan kendi tablolama yapımızı oluşturarak verilerimizi görüntüleyebiliriz hemde veritabanı işlemleri haricinde de sunucu taraflı kodlarımızla arayüz görselliğine yön verebiliriz.

Örneğin;

  • Table table = new Table(); // System.Web.UI.WebControls.Table sınıfından yeni bir table nesnesi türetiyoruz
    TableRow tr = new TableRow(); // System.Web.UI.WebControls.TableRow sınıfından yeni bir tablerow nesnesi tıretiyoruz
    TableCell td1 = new TableCell();// System.Web.UI.WebControls.TableCell sınıfından yeni bir tablecell nesnesi türetiyoruz
    TableCell td2 = new TableCell();
    td1.Text =
    "yasin"; // türettiğimiz tablecell nesnesinin içerisine yasin yazıyoruz.
    td2.Text = "sirkecili";
    tr.Cells.Add(td1);
    // tablecell nesnemizi satır görevi görecek olan tablerow satırına ekliyoruz
    tr.Cells.Add(td2);
    table.Caption =
    "bu bir basliktir"; // asp.net 2.0 ile hayatımıza giren caption property si ile tablomuza başlık ekliyoruz.
    table.CaptionAlign = TableCaptionAlign.Left; // tablo başlığımızın görüntülenme şeklini System.Web.UI.WebControls.TableCaptionAlign enumaratör ile seçiyoruz. eğer hiç müdahale etmez isek standart olarak centered gelecektir.
    table.BackColor = System.Drawing.Color.Red; // table'ımıza arkaplan rengi seçiyoruz.
    table.BorderStyle = BorderStyle.Solid; // tableımızın border stilini belirliyoruz.
    table.Attributes.Add("Border", "2"); // border kalınlığını belirlemek amacıyla server-side table'ımızın html çıktısındaki attributelara müdahale ediyor ve border kalınlığını 2px olarak belirliyoruz.
    table.Rows.Add(tr); // içine daha önce hücrelerimizi eklediğimiz satırımızı tablomuza ekleyip ilişkilendiriyoruz.
    this.Controls.Add(table);// dinamik olarak hücrelerini ve satırlarını oluşturup stillerini belirlediğimiz tablomuzu görüntülenmesi amacıyla sayfamıza ekliyoruz.

    (ne açıklama yazdım ama beah Smile)

şeklinde aşağıdaki gibi çıktı yaratacak bi table oluşturabiliriz.

  • <table Border="2" border="0" style="background-color:Red;border-style:Solid;">
     <caption align="Left">
      bu bir basliktir
     </caption><tr>
      <td>yasin</td><td>sirkecili</td>
     </tr>
    </table>


tablomuzun görüntüsü bu şekilde olacaktır.

hepsi bu kadar...

Literal & Mode Enumeration

by Yasin Sirkecili 22. June 2008

Pek fazla kullanmasakda Literal kontrolü gözünüze çarpmıştır. Nedir ? ne işe yarar? hiç baktınız mı ?

Literal kontrolü label kontrolü gibi text propertysine atanan değeri html çıktısına yazdırır. Label'dan 1. farkı label text propertysindeki değeri html çıktısında span tagları arasında yazdırırken literal text propertysine atanan değeri doğrudan doğruya yazdırmayı sağlar. Peki bu durum nerde ve nasıl işe yarar?

mesela html çıktısına html tagları yazarken kullanabiliriz.

Literal kontrolüne ait mode property sine System.Web.UI.WebControls.LiteralMode enumaratörüne ait enum değişkenlerinden yaptığınız seçime göre kontrolün davranış nitelikleri değişecektir.

örneğin;

  • Label1.Text = "<YSN>yasin sirkecili</YSN>";
    Literal1.Mode = LiteralMode
    .PassThrough;
    Literal1.Text = "<YSN>yasin sirkecili</YSN>"
    ;
    Literal2.Mode = LiteralMode
    .Encode;
    Literal2.Text = "<YSN>yasin sirkecili</YSN>"
    ;
    Literal3.Mode = LiteralMode
    .Transform;
    Literal3.Text = "<YSN>yasin sirkecili</YSN>";

PassThrough: Text propertysine atanan değerin modifiye olmadan görüntülenmesini sağlar.
Encode: Text propertysine atanan değeri html-encoded haline getirerek tag işaretlerinin encoded karakterlere dönüşmesini sağlar.
Transform: Text propertysine atanan değer içerisinde browser tarafından yorumlanamayan tagların süzülerek gösterilmesini sağlar. Ancak günümüzde kullandığımız tüm tarayıcıların xhtml desteklediğini düşünürsek, Çıktının PassThrough modundan bir farkı olmayacaktır. Çünkü xhtml varolmayan tagların görüntülenmesine sebep olacaktır.

yukarıdaki kod blogunu çalıştırdığımızda alacağımız örnek çıktı aşağıdaki gibi olacaktır.

  •         Label:
            <span id="Label1"><YSN>yasin sirkecili</YSN></span>
            <br />
           
            Literal (PassThrough Mode):
            <YSN>yasin sirkecili</YSN>

            <br />

            Literal (Encode Mode):
            &lt;YSN&gt;yasin sirkecili&lt;/YSN&gt;

            <br />
           
            Literal (Transform mode):
            <YSN>yasin sirkecili</YSN>



ben...

by Yasin Sirkecili 19. June 2008

Yasin Sirkecili

Sevgili arkadaşım Hande Öztemir'den bana çok güzel bi çalışma...

Visual Studio options back-up

by Yasin Sirkecili 18. February 2008
Faydalı Bilgiler :)

Visual Studio ayarlarınızın yedeklerini almak için Tools Menüsünden Import Export Settings seçeneğini kullanabilirsiniz. Böylelikle herhangi bir durum neticesinde özelleştirdiğinzi IDE
ayarlarınızı saklayabilir. Diskdeki bir ayarı yeniden adapte edebilirsiniz...

Konserve Programcı

by Yasin Sirkecili 10. February 2008

 

Wizardlar ile program yazan arkadaşlar için türettiğimiz yeni isim: "Konserve Programcı" :)

Value and Reference Types

by Yasin Sirkecili 10. February 2008
Değer Tipleri ve Referans Tipleri  C# Değer tipi ve referans tipi olmak üzere iki ayrı değişken yönetimi mevcuttur. 
  • Değer tipleri programın çalışma zamanında değerleri ile birlikte belleğin stack bölgesinde türü ve içeriği ile saklanan değişken türüdür. Esnekliği yüksektir.
 
  • Referans tipleri ise belleğin Heap bölgesinde saklanan ancak bellekteki yerinin stack bölgesinde 4 byte olarak tanımlandığı değişken türüdür. Bu 4byte = 32 bit lik referans boyutu işletim sistemine bağlıdır. Eğer 64 Bit bir işletim sistemi kullanıyorsanız stack bölgesinde heap bölgesindeki herhangi bir değişkeni referans eden pointer değerinin boyutu 8 byte yani 64 bit olacaktır.

  Değer tiplerinin aşağıdaki örnekte olduğu gibi birbirine eşitlenmesi kopyalama yöntemi ile gerçekleştiğinden birbirinden bağımsızdırlar.

int i1 = 5;
int i2 = i1;
Response.Write(i2.ToString()); // 5


dediğimizde stack bölgesindeki i1 değişkeninin içeriği yine stack bölgesinde oluşan ikinci değişkenimiz olan i2 nin içeriğine kopyalanır. Bu durumda i1 değişkeninin değerinin değişmesi i2 değişkenini etkilemez.

 Değer tipleri genellikle sınırları belli olan değişken türlerini içerir. Yani Stack bölgesinde saklanan bir değişkenin bellekte kapladığı alan her daim sabittir. Ancak referans tiplerinde bu durum 32 bitlik bir OS için stack bölgesine 4 byte olarak yansırken tanımlanan değişkenin boyut sınırları bilinmediğinden heap bölgesinde ilgili değişkene ait boyut tahmin edilemez.

 string y = “yasin”;
 
string s = “sirkecili”; 

Şeklinde yapılan bir tanımlamada string değişken türü System.String sınıfından gelen bir referans tipi olduğundan belleğin stack bölgesinde iki farklı değişken için 4byte ,4byte olmak üzere iki farklı alan tanımlanır. Heap bölgesinde ise y değişkeni 10byte s değişkeni ise 18 byte yer kaplar.

 Bunun ölçümünü ; 
string y = "yasin";
string s = "sirkecili";
char[] bar = y.ToCharArray();
char[] bar2 = s.ToCharArray();
Response.Write(Convert.ToString((bar.Length * 16 /8)) + " byte <br>");
Response.Write(Convert.ToString((bar2.Length * 16 / 8)) + " byte"); 

Şeklinde yapabiliriz. Char veri tipi 16 bit yani ve bir byte 8 bittir. Bu denklem yardımıyla istediğimiz string türününün kaç byte olduğunu hesaplayabiliriz.  

  Aşağıdaki tabloda c# dilindeki değişkenlere ait türleri ve hangi türlerin hangi tipe ait olduğuna dair bilgi bulabilirsiniz.

     

Tip

Tür

İsim

Boyut(bit)

Açıklama

Değer Sbyte Signed byte 8 İşaretli byte
Değer Byte Unsigned Byte 8 İşaretsiz byte
Değer Short 16bit Signed Integer 16 İşaretli tam sayı(16bit)
Değer ushort 16bit UnSigned Integer 16 İşaretsiz tam sayı(16bit)
Değer İnt 32 bit signed Integer 32 İşaretli tam sayı 32 bit
Değer uint 32 bit unsigned Integer 32 İşaretsiz tam sayı 32 bit
Değer Long 64 bit signed Integer 64 İşretli 64 bit tam sayı
Değer ulong 64 bit unsigned Integer 64 İşretsiz 64 bit tam sayı
Değer Float 32 bit ondalıklı 32 32 bit İşaretli ondalıklı l sayı (7 haneli)
Değer Double 64 bit ondalıklı 64 64 bitİşaretli ondalıklı sayı (15-16 haneli)
Değer Decimal 128 bit real 128 128 bit İşaretli ondalıklı sayı (virgülden sonra 28 hane duyarlı)
Değer Bool Boolean 8 True yada false
Değer Char Karakter 16 Unicode karakterler
Referans String Karakter kümesi Belirsiz Text içerikli veriler.
Referans Object Tür bağımsız ana nesne Belirsiz Tüm türlerin üretildiği Tür bağımsız değişkendir.
 

C#

Hakkımda

Name of author Yasin Sirkecili
Asp.Net Developer

Takvim

<<  July 2008  >>
MoTuWeThFrSaSu
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

Büyük Takvimde Göster

Bağlantılar

    ©2008

    Sign in