20 Dolarlık VAKIT

by Yasin Sirkecili 12. Nisan 2009 10:39

Numan GÖÇERİ'nin blogunda rastladığım bu yazıyı paylaşmak istedim.


20 DOLARLIK VAKİT

Adam yorgun argın eve döndüğünde 5 yaşındaki oğlunu kapının önünde beklerken görmüş. Çocuk babasına: “Baba 1 saatte ne kadar para kazanıyorsun?” diye sormuş. Zaten yorgun gelen adam: “Bu senin işin değil!…” diye cevaplamış. Bunun üzerine çocuk: “Babacığım, lütfen, bilmek istiyorum.” diye ısrar etmiş. Adam: “İlla bilmek istiyorsan 20 dolar” diye cevap vermiş.
Bunun üzerine çocuk: “Peki bana 10 dolar borç verir misin” diye sormuş. Adam iyice sinirlenip: “Benim senin saçma oyuncaklarına veya benzeri şeylerine ayıracak param yok, hadi derhal odana git ve kapını kapat!” demiş. Çocuk sessizce odasına gidip kapısını kapatmış. Adam sinirli sinirli bu çocuk nasıl böyle şeylere cesaret eder diye düşünmüş. Aradan bir saat geçtikten sonra adam biraz daha sakinleşmiş ve çocuğa parayı neden istediğini bile sormadığını düşünmüş. Belki de gerçekten lazımdı.
Yukarı çocuğun odasına çıkmış ve kapıyı açmış. yatağında olan çocuğa: “uyuyor musun?” diye sormuş. Çocuk “Hayır” diye cevap vermiş. “Al bakalım istediğin 10 doları. Sana az önce sert davrandığım için üzgünüm ama uzun ve yorucu bir gün geçirdim” demiş. Çocuk sevinçle haykırmış; “teşekkürler babacığım”
Yastığının altından diğer buruşuk paraları çıkarmış. Adamın yüzüne bakmış ve yavaşça paraları saymış. Bunu gören adam iyice sinirlenerek: “Paran olduğu halde neden benden para istiyorsun? Benim senin saçma oyuncaklarına ayıracak vaktim yok.” demiş. Çocuk: “Ama yeterince yoktu.” demiş ve paraları babasına uzatarak:
“İşte 20 dolar. 1 saatini alabilir miyim?” demiş.

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Yasin Sirkecili ?

by Yasin Sirkecili 2. Ocak 2009 10:31

  Yasin Sirkecili ???




Blogumda hakkımda alanı yokmuş... bende farkettim

Her insan kendi hakkında bişeyler yazıp çizmeyi çok sever... Esas olan insanın kendini anlatması değil... Tanıyanların onu anlatmasıdır...
Bu sebeple ben beni değil beni tanıyanlar yorumlarıyla beni anlatsın...

(iyi şeyler yazın haaaa Smile)

3 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Yasin Sirkecili

Visual Studio 2008 SP1 ISO File

by Yasin Sirkecili 30. Aralık 2008 07:55
Adamı sinir eden Installer ı yerine download edip saklayabileceğiniz bir dosya
Visual Studio 2008 Service Pack 1 ISO File: http://www.microsoft.com/downloads/details.aspx?familyid=27673C47-B3B5-4C67-BD99-84E525B5CE61&displaylang=en

3 kişi tarafından 3.3 olarak değerlendirildi

  • Currently 3,333333/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Genel

3 Ocak Cumartesi - Çankaya Üniversitesi

by Yasin Sirkecili 25. Aralık 2008 03:12
CETURK Java Teknolojileri Ankara Etkinliği (3 Ocak 2009 Cumartesi)
Bugüne kadar gerçekleştirdiği bir çok etkinlikle üyelerine ve bilişim sektörünün gelişmesine katkıda bulunan CETURK başkentimiz Ankara'da yapacağı büyük bir organizasyon ile karşımızda.

CETURK , 3 Ocak Cumartesi günü Çankaya Üniversitesi Mavi Salon'da "CETURK Java Teknolojileri Ankara Etkinliği" inde Java dünyasını bir araya getiriyor. Java dünyasındaki en son teknolojilerin ve gelişmelerin anlatılacağı etkinlikte Java dünyasının önemli isimleri , Kenan Sevindik, Melih Sakarya, Özcan Acar ve Ümit Vardar sunum yapacaklar.
Melih Sakarya JBoss Seam
Ümit Vardar JPA ve Hibernate
Kenan Sevindik Spring Framework'e Giriş
Özcan Acar Apache Wicket Framework
PANEL Java Dünyası ve Türkiye

Ayrıntılı bilgi ve kayıt için tıklayınız.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Duyurular | Genel

Colourful DropDownList

by Yasin Sirkecili 9. Aralık 2008 23:50
 

Mail ile gelen bir soruya cevap olarak yazdığım üzere...
DropDownList içerisine System.Drawing.Color structındaki renk adlarını ve değerlerinin nasıl aktarılabileceğini ve ilgili renklerin itemlara nasıl verilebileceğini aşağıdaki kısa kod bloğunu kullanarak yapabilirsiniz. User Profile eylemlerinde kullanıcının kendi background rengini seçebilmesi adına güzel bi uygulama olabilir. kolay gelsin...

protected void Page_Load(object sender, EventArgs e)
{
string[] renkler = System.Enum.GetNames(typeof(System.Drawing.KnownColor));
Array degerler = System.Enum.GetValues(typeof(System.Drawing.KnownColor));


for (int i = 0; i < renkler.Length; i++)
  {
     ListItem item = new ListItem(renkler[i].ToString(),degerler.GetValue(i).ToString());
     item.Attributes[
"style"] = "background:" + renkler[i];
     DropDownList1.Items.Add(item);
  }

}

1 kişi tarafından 3.0 olarak değerlendirildi

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , , ,

ASP.NET | C#

Profile Groups in Web Applications

by Yasin Sirkecili 9. Aralık 2008 15:12
ASP.NET 3.5 Web Aplikasyonlarında IDE ProfileCommon sınıfından Profile nesnesini türetmediği için ASP.NET Web Site larda olduğu gibi Profile.GroupName.PropertyName şeklinde grup içindeki özelliklere erişmeniz mümkün değildir. Bu durumu ya profile yapısı içinde bir class inherit ederek kendiniz yapılandırıp çözümleyebilirsiniz. Yada

<group name="iletisim">
<add name="ad" defaultValue="yasin" allowAnonymous="true"/>
<add name="soyad" defaultValue="sirkecili" allowAnonymous="true"/>

<
add name="telefon" defaultValue="0532XXXYYZZ" allowAnonymous="true"
/>
</
group
>

şeklindeki bir grup özelliği için

Label1.Text =
HttpContext.Current.Profile.GetProfileGroup("iletisim").GetPropertyValue("telefon");

ifadesini kullanıp erişebilirsiniz.

Not: Profile yapılandırması için daha sonra detaylı bilgi yazacağım.

3 kişi tarafından 4.3 olarak değerlendirildi

  • Currently 4,333333/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET | C#

Merhaba, ben Y Jenerasyonundan Yasin...

by Yasin Sirkecili 9. Aralık 2008 11:31

İş hayatına bakış açım ve tecrübelerim doğrultusunda anlamlandıramadığım serzenişlerimi ortaya koyan yeni bir sınıf türetilmiş; Y JENERASYONU 
Akşam Gazetesinin haberi olan ve Arda Çetinkaya'nın blogunda rastladığım bu yazıyı burdanda paylaşmak istedim.



Y Jenerasyonu iş dünyasını yeniden şekillendiriyor

 Son zamanlarda, iş dünyasında kendi kurallarını ortaya koyan, işin kendine uygun olmadığını anladığında hemen başka arayışlara giren bu yüzden de sık sık iş değiştiren yeni bir çalışan profili ağırlığını hissettirmeye başladı. Ancak bu değişime şaşırmamak gerekli çünkü 1980 sonrasında doğan kuşak artık büyüdü ve iş dünyasının azımsanamayacak bir yüzdesinde pay almaya başladı. ‘Y Jenerasyonu’ olarak tanımlanan bu kuşağın sık iş değiştirmesi, seçme ve yerleştirme alanında faaliyet göstteren Antal International Türkiye ve iworkLife Türkiye’nin araştırmasının sonucu olan tespitlerden birkaçı. Aynı araştırmanın sonuçlarına göre bu kuşak, çok sık iş değiştirmesine karşın kendine uygun işi bulduğuna inandığı anda yüksek performans ve kapasitesiyle önemli başarılara imza atmaktan geri kalmıyor. Şirketlere Y Jenerasyonu’yla yakından ilgilenmelerini ve kendilerini bu kuşağa hazırlamalarını öneren Antal International Türkiye ve iworkLife Türkiye Genel Müdürü Mine Batıyel, bu kuşağın iş dünyasından beklentilerini ve çalıştıkları ortamı nasıl şekillendirdiklerini anlattı.

Y Jenerasyonu’nu nasıl tanımlarsınız, öncelikleri neler, iş hayatında onları ne mutlu eder?

Bir önceki kuşak ile benzerliklere sahip olsa da Y Jenerasyonu’nun çok belirgin özellikleri var. Öncelikle liderlik tanımını işbirlikçi ve iletişim halinde olabildikleri yöneticiler için kullanıyorlar. Tecrübe konusunu önemsemiyorlar çünkü dünyanın çok çabuk değiştiğini düşünüyorlar ve hep yeni şeyler öğrenilmesi gerektiğinin farkındalar. Daima soru sormak ve anında yanıt almak istiyorlar. Kendi kendini yönetmek konusunda başarılılar ve hep bunu arzu ediyorlar. Para ödülünü ise diğer ödüllerden üstün tutuyorlar. Y Jenerasyonu için paranın anlamı; istedikleri hayatı sürdürmek için geçerli olan yegane şey olması. Çalışma saati kısıtlamaları yok. Ne kadar gerekirse o kadar çalışıyorlar, bu yüzden 09:00-18:00 mesai saatleri onlara göre değil. Çünkü kendilerine ayıracak zamana ihtiyaçları var. Ayrıca çok mutlu çalışırken bile şirketten ayrılma stratejileri oluşturmuş durumda olabiliyor. Bağlılık hissetmiyorlar ve idealleri uğruna çaba göstermekten kaçınmıyorlar.

NEDEN SIK İŞ DEĞİŞTİRİYORLAR?
Araştırmanıza göre, sık iş değiştiriyor ve gelecek görmüyorlarsa işlerini bırakabiliyorlar. Daha önceki kuşaklarda böyle bir tutum gözlenmezken 80 sonrası kuşak neden böyle?

Bilişim ve teknoloji ile büyüyen bir jenerasyondan bahsediyoruz. Onlar bir önceki kuşaklardan farklılar. Çünkü hızla gelişen ve değişen teknolojinin tüm nimetlerinden yararlanabildikleri bir hayat yaşıyorlar. Yaşamlarının her alanında teknolojiyi kullanmaya çok yatkınlar. Bu kuşak elbette içinde bulunduğu zamanın sunduğu imkanların farkında.
Peki, bu yaklaşım iş dünyasında ‘zora gelememe’ olarak nitelendiriliyor mu?

Böyle bir değerlendirmenin doğru olmadığını düşünüyorum. Y Jenerasyonu’nun sık sık iş değiştirmesinin altında yatan nedenleri araştırdık. Gıda, hızlı tüketim, perakendecilik, teknoloji ve medya sektörlerine yönelik gerçekleştirdiğimiz araştırmada Y Jenerasyonu’nun işten ayrılma nedenlerini şöyle sıralayabiliriz: Motivasyon eksikliği, iş ve özel hayat dengesi, zayıf yönetim, yetersiz destek, takdir edilmeme, az miktarda anlamlı iş yapma olanağı, ücret, terfi süresinin uzun olması, verilen sözlerin yerine getirilmemesi ve fazla iş seyahati… Bunların göz ardı edilmemeli.

Peki, Y Jenerasyonu’nun iş konusundaki ne tür yaklaşımları yöneticilere alışılmadık geliyor?

Açık sözlü olmaları ve patronların her zaman doğru olmadıklarını dile getirmeleri alışılmadık gelebilir. Ayrıca bazı davranış ve tutumları sadakatsizlik olarak algılanabilir.
Sizce şirketler bu kuşaktan çalışanlarına karşı nasıl bir tutum izlemeliler?

Y Jenerasyonu, iş dünyasını yeniden şekillenmeye zorluyor. Ancak bu yeni neslin hareket biçimleri zaman zaman şirketler tarafından tam olarak anlaşılamayabiliyor. Oysa ki yarının iş dünyasında Y Jenerasyonu’nun önemli bir yeri olacak. Firmalar da bugünden tedbirlerini almalı ve Y Jenerasyonu’na dahil olan çalışanlarını en verimli şekilde kullanabilecekleri bir kültüre hazırlanmalılar.

ŞİRKETLER İÇİN FIRSAT OLABİLİRLER
Bu kuşaktan çalışana sahip bir firma neler kazanır?

Sık iş değiştirmelerinin bir dezavantaj olarak görülmemesi gerekiyor. Benim tavsiyem; eleman arayan şirketlerin insan kaynakları yetkilileri önlerine gelen CV’lerde böyle bir adaya rastladıkları zaman hemen eleme yapmasınlar. Görüşmeye çağırarak adayın iş değiştirmesinin altında yatan nedenleri öğrensinler. Çünkü Y Jenerasyonu, beklentileri karşılandığında çok verimli işler çıkarabilen bir nesil. Bu da şirketler için önemli fırsatları beraberinde getiriyor. Bu kuşak, yöneticilerinin kendinden daha iyi olabileceğini nadiren kabulleniyor ancak tam performanslı ve odaklı olduklarında çok başarılı çalışmalar ortaya koyuyor.
Siz 10 yıl içinde bu kuşağı nerede görüyorsunuz? Mutlaka yönetimde olacaklardır. Değişime çok açık olduklarından, değişen şartlara kolay ayak uydurabileceklerini düşünüyorum. Bu kuşak, kariyer ve başarı odaklı… Geleneksel yaklaşımlara karşı gelebilir, organizasyonel davranışları değiştirebilirler. Kendilerine nasıl davranılmasını istiyorlarsa karşılarındakilere de o şekilde davranacaklardır.

BİR LİDER PROFİLİ

Mine Batıyel, Y Jenerasyonu liderleriyle ilgili şu tespitlerde bulunuyor: “Onlar, başarı ve kazanmak ister. Başarıyı, hiyerarşik düzenyle değil ilişkiler geliştirerek, çalışanları etkileyerek ve takım çalışması yaparak elde etmeye çalışırlar. Birlikte çalıştıkları kişiler de onların liderlik vasıflarını ortaya çıkarmalarını teşvik eder. Yönettikleri kişilerin kuvvetli yanlarını çok iyi bilirler ve bu yönlerini kullanarak kişinin başarıya ulaşmasını sağlamaya çalışırlar. Y Jenerasyonu, yöneticilerini de motive eder. Başka kişilerin başarılarını görmek onlarda neredeyse saplantı halindedir.”

AHU UZ

2 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Genel

Kadınlar ile Erkekler arasındaki farka Transact SQL ile bi bakış...

by Yasin Sirkecili 23. Kasım 2008 16:36


Daha iyi anlatılamazdı Tongue out

18 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Genel

CETURK Yazılım Seminerleri

by Yasin Sirkecili 22. Kasım 2008 23:00

Bugüne kadar gerçekleştirdiği bir çok etkinlikle bilişim sektörünün gelişmesine katkıda bulunan CETURK etkinliklerine devem ediyor.

22 Kasım Cumartesi günü "CETURK Yazılım Seminerleri" etkinliği düzenleniyor. IBM'de gerçekleşecek seminerde ORM ve Hibernate, Web 2.0 ve IBM Yaklaşım ve Kurumsal Servis Odaklı Mimari (Enterprise SOA) seminerleri verilecek.

Etkinliğe katılım her zamanki gibi ücretsiz olacaktır. Seminere katılan 5 kişiye çekiliş ile kitap hediye edilecektir.

Ayrintılı Bilgi ve Kayıt

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Duyurular

Makalelerimden Bazıları...

by Yasin Sirkecili 22. Kasım 2008 21:21

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Genel

Value and Reference Types

by Yasin Sirkecili 22. Kasım 2008 20:49

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.
 

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

C#

C# 3.0 Test Sürüşü - 1 (Variable - Implicity typed local variables)

by Yasin Sirkecili 22. Kasım 2008 20:48

C# 3.0 da artık tür belirtmeksizin değişken tanımlamamıza olanak sağlayan yenilikler mevcut. Ancak bu değişkenlerin özelliği object değişkenler gibi referans tipli değişkenler değildir. Bunun yerine değeri atanırken tipinin belirkendiği değişkenlerdir. Bu özelliği JavaScriptten hatırlayacaksınız.

örneğin:

var deger = "yasin"; // string tipinde deger adında bir değişken yaratmış oldunuz.
var deger2 = 4 // integer tipinde deger2 adında bir değişken tanımlamış oldunuz.

gördüğünüz gibi var adıyla değişkenin valuesune bakarak değişkene değer aktarılabiliryor. Aslında bu tarz basit bir eylemi bi kaç ay önce bir projede db ile yaptığımız etkileşimler esnasında ihtiyaç duyup yazmıştım. Meğer kolayı varmış :)  (Radyonun resimlisi benim aklıma gelmişti sendromu) :) herneyse konumuza dönecek olursak var değişken tanımlamasında yukarıda da gödüğünüz üzere değişkenin değerinin türüne bakaraktan değişkenin tipini belirliyor yani eğer değişkene değer atamazsanız

örneğin;

var yasin; // değeri olmadığını için türünü belirleyemeyecek ve hata verecektir.

bununla beraber eğer değişkene null değerini atarsanız yine aynı hatayı verecektir.

var yasin2 = null // HATA !!


Bir noktaya daha değinmek gerekirse

var nesne 123 // nesne değişkenim şuanda integer tipinde;
nesne = "yasin sirkecili"; // HATA !! nesne değişkenimiz oluşturulurken integer tipinde olduğundan tekrar değer atayıp tipini değiştiremezsiniz.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

C#

C# & Fibonacci

by Yasin Sirkecili 22. Kasım 2008 20:48

Forumda sorulan bir soru için yazdığım cevap: Fibonacci dizisini c# ile nasıl kısayoldan bulunabileceği...

ArrayList arys = new ArrayList();
arys.Add(1);
for (int
i = 1; i <= arys.Count; i++)
{
if
(arys.Count < 2)
{
arys.Add(1);
}
else
{
arys.Add(Convert.ToInt32(arys[i - 1]) + Convert
.ToInt32(arys[i - 2]));
if
(arys.Count == 20)
{
listBox1.Items.AddRange(arys.ToArray());
break
;
}
}
}

1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4184,6765,10949,

ben ilk 20 terimini buldum siz isterseniz çoğaltabilirsiniz.

1 kişi tarafından 2.0 olarak değerlendirildi

  • Currently 2/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

C#

ScriptManager ve AsyncPostBackError

by Yasin Sirkecili 22. Kasım 2008 20:47

ASP.NET sayfalarında çalışma zamanında bazen kodlama hataları bazende sunucu işlemlerinden dolayı sıklıkla hata ile karşılaşırız. Bu gibi durumlarda kullanıcıya hata mesajını göstermek yada kullanıcının anlaması mümkün olmayan bir asp.net sayfasına yönlendirmek genel bir problemdir. Bu sorunu aşmak için AJAX yapısındaki ScriptManager kontrolünü kullanabiliriz.

UpdatePanel ve ScriptManagerın AsyncPostBackError eventinden faydalanarak sayfada oluşan hatalarda kullanıcıya hata mesajı göstermemiz mümkün.

Örneğin;

<asp:ScriptManager ID="ScriptManager1" runat="server" OnAsyncPostBackError="ScriptManager1_AsyncPostBackError" EnablePageMethods="True" />
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click1" Text="Tıkla" />
</ContentTemplate>
</asp:UpdatePanel>
<br />
</div>

burada dikkat ederseniz ScriptManagerın OnAsyncPostBackError client side eventinı ScriptManager1_AsyncPostBackError eventına yönlendiriyoruz. Bundan sonra tek yapmamız gereken bir  hata yaratıp ScriptManager1_AsyncPostBackError eventını kullanarak hatayı kullanıcıdan gizleyerek Kullanıcıya basit bir hata mesajı göstermek.

Öncelikle Button1_Click eventı ile bir hata oluşturuyoruz.

protected void Button1_Click1(object sender, EventArgs e)
{
string[] dizi = new string[2];
dizi[0] = "birinci eleman";
dizi[1] = "ikinci eleman";
dizi[2] = "üçüncü eleman";
}

gördüğünüz gibi 2 elemanlı bir dizide eleman sayısı sınırının üstüne çıktık. Bu durumda IndexOutOfRangeException çalışarak hata verecektir. Biz bu hatayı ScriptManager1 in yakalamasını sağlayarak kendimize göre yönlendirmek için.

protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
ScriptManager1.AsyncPostBackErrorMessage = "bir hata olustu";
}

kod bloğunu kullanabiliriz. Böylelikle kullanıcı sayfada herhangi bir hata oluştuğunda standart hata mesajımızla karşılaşacaktır. Veya kullanıcıyı Response.Redirect("hata.aspx"); ile genel bir hata sayfasına yönlendirebiliriz.

Aynı yapıyı Masterpage içerisinde kullanarak daha genel bir hale getirebileceğimiz gibi. ScriptManager1 kontrolünün AsyncPostBackErrorMessage propertysine herhangi bir mesaj yazdığınızda AsyncPostBackError eventini yazmanıza gerek kalmayacaktır.

ScriptManager1_AsyncPostBackError mesajı içerisinde hata mesajının detaylarını e.Exception.Message diyerek string türünde elde edebilirsiniz.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

AJAX

Validatörlerin püfleri - 1

by Yasin Sirkecili 22. Kasım 2008 20:36
  • 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

1 kişi tarafından 1.0 olarak değerlendirildi

  • Currently 1/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET

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

by Yasin Sirkecili 22. Kasım 2008 20:35

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.

3 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET

Dinamik eklenen kontroller ve Updatepanel trigger ilişkisi

by Yasin Sirkecili 22. Kasım 2008 20:30

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.

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

AJAX | ASP.NET

Server-side table - tr - td

by Yasin Sirkecili 22. Kasım 2008 20:28
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 Tongue out)

ş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...

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET

Literal & Mode Enumeration

by Yasin Sirkecili 22. Kasım 2008 20:28

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>



2 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET

Substitution ile yüksek performans ve Asenkron Caching

by Yasin Sirkecili 22. Kasım 2008 20:26

Asp.net uygulamalarında projelerimizi hızlandırmak için birçoğumuz caching yapısını kullanmışızdır. Ancak sayfaya belli bir süre için caching uyguladığımızda sayfanın tamamı cache bellekte saklanarak belirtilen zaman geçmediği müddetçe yenilenen verileri görmemiz mümkün olmuyordu. Bu sorunu önbelleğe alınan sayfanın dinamik noktalarını caching yapısından ayrı tutmamızı sağlayan substitution kontrolü kendisine gönderdiğimiz html çıktıları ile caching alanından bağımsız olarak dinamik yapısını kullanabilmektedir.

Konuyu bir örnek üzerinde açıklayacak olursak;

substitution.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="substitution.aspx.cs" Inherits="substitution" %>
<%@ OutputCache Duration="15" VaryByParam="none" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label" ></asp:Label>
<br />
<asp:Substitution ID="Substitution1" runat="server" MethodName="SubFonk" />
</div>
</form>
</body>
</html>

 sayfamızda 15sn boyunca caching uygulaması yapacağımızı belirterek. 15sn boyunca sayfanın içeriğinin güncellenmemesini sağlayabiliriz. Ancak burda Substitution kontrolünün methodname propertysinden faydalanarak sayfa üzerinde dinamik bir alan tanımlayıp bu alanı güncelleyecek bir fonksiyon tanımlayabiliyoruz.

substitution.aspx.cs

public partial class substitution : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString();
}
public static string SubFonk(HttpContext icerik)
{
return "Anlık Zaman: " + DateTime.Now.ToString();
}
}

Burada Page_Load eventine yerleştirdiğimiz kod ile sayfaya zamanı yazdırıyoruz. Ancak bu zaman ne kadar postback yaparsak yapalım cache duration süresi boyunca güncellenmeyecektir. Bu nedenle sayfa üzerinde 15sn geçmesini beklemeden güncellenecek bir alana ihtiyacımız olabilir. Bu durumda sayfa üzerine eklediğimiz ve SubFonk fonksiyonundan etkilenmesini istediğimiz Substitution1 kontrolümüz ile yine zamanı string formatında return ediyoruz. Böylelikle sayfanın 15sn lik zaman dilimindeki postbacklerinde Label1 in text propertysinin etkilenmeyeceğini ancak Substitution1 kontrolünün içeriğine string formatında gönderdiğimiz html içeriğinin güncellendiğini gözlemleyebiliriz.

Burada dikkat etmemiz gereken 2 husus vardır. 1. si Substitution kontrolü html çıktısını alacağından bu kontrolün methodname propertysine atadığımız fonksiyonun geriye string türünde veri göndermesi gerekmektedir. Bununla beraber 2. hususta yine bu fonksiyonun static olarak tanımlanması gerektiğidir. Bunun nedeni sayfa her postback olduğunda sunucu tarafında yeniden üretilmesidir. Static tanımlı methodlar bellekte static bölgesinde tutulduğundan yeniden üretilmeden çalışacaktır. Böylelikle caching mekanizmasına aykırı davranmamış olacaktır.

1 kişi tarafından 1.0 olarak değerlendirildi

  • Currently 1/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET

Powered by BlogEngine.NET 1.4.5.0
Theme by Mads Kristensen

Yasin Sirkecili


Yasin Sirkecili
Software Developer
MSN: yasin@sirkecili.com

Calendar

<<  Temmuz 2009  >>
PaSaÇaPeCuCuPa
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

View posts in large calendar

Son Yorumlar

toki toki
3 yorumlar
chat chat
2 yorumlar
al Arnavutluk
Dallas dating Dallas dating
1 yorumlar
us A.B.D.

RecentPosts

Desteklediklerim