test-pit BETA

14.Ağustos.2010

Aşağıdaki API bildirimlerinden hangisi işletim sistemini kilitler (Ctrl + L) ?

Hatasız bir uygulama yazmak için kullanıcıyı ortadan kaldırmaktır diye duymuştum bir zamanlar. Yazılımlarımızda hatalar olacak. Bu kaçınılmaz ama en aza indirmek içinde çaba sarfetmek te bizim görevimiz. Lakin bunun için heryere try cacth blokları da koymak pek mantıklı bir yaklaşım değil:)
Bu durumlar için, özellikle web uygulamalarında "Error Feedback" denilen bir yöntem çok sık kullanılır.
Amaç;
çalışma zamanı bir sayfa da yada ona bağlı bir uygulamada hata oluştuğunda, hata ile ilgili detayların geliştiriciye mail olarak gönderilmesi daha sonra da kullanıcıya hata mesajı yerine basit bir html sayfası gösterilmesinden ibaret.

Öncelikle ihtiyaçları belirleyelim. Yani hangi bilgilerin gönderilmesi gerekiyor bir bakalım.

Error Class

Gönderilecek Feefback için güzle bir html şablonu oluşturalım. Şablon içinde bilgi gireceğimiz alanları küme parantez parametreleri ile işaretleteyim ki String nesnesini Format metotu ile rahatça kullanabilelim.

Mail Text

Daha iyi anlamak için Error nesnesi için yazdığımız yardımcı ErrorProvider nesnesine deki CreateMessage asdlı sabit metota göz atalım.

Error Provider

Herşey tamam gibi, sırada oluşabilecek hataları elde elebileceğimiz Global Application Class' ından yardım almaya geldi. Global.asax ' ın Application_Error adlı metotu, uygulama içinde hata oluştuğunda otomatik devreye girer. Bizde burada devreye girip ihtiyacımız olab kodları yazıyoruz.

Global.asax

Son bir adım kaldı. Kullanıcı hata mesajları yerine bizim belirlediğimiz sayfaları görsün istiyorsak;

Web.Config

web.config dosyası içindeki customError -> mode özelliğini On olarak değiştiririz. error alt düğümleri ile olası hatalar için  uygun sayfaların yollarını redirect özellikleri ile belirttikten sonra uygulamada bitmiş oluyor. Çeşitlendirmek mümkün.

Örnek proje.

Data kaynağınız xml olduğunda okuma veritabanından okumak kadar kolay olmayabilir. XmlDataSorce ile bu işlem çok kolay hale getirebilir.

Repeater

Kodu biraz inceleyelim;
XmlDataSource nesnesinin DataFile özelliği (xml) data kaynağının yolunu ister. Bu disk üzerinde bir dosya olabileceği gibi bir rss dökümanı da olabilir.
Önemli olan DataFile ile belirttilen (xml) data içinden ne istenildiğidir. Bunu yapmanın en pratik yolu xpath kullanmak olacaktır.
XmlDataSource nesnesinin XPath özelliği ile de bunu belirtmek gerekir.

xml

Data kaynağını belirttikten sonra bunu gösterecek bir kontrole ihtiyaç var. Benim seçimim Repeater olacak. (DataList yada Grid de kullanılabilir). ItemTemplate içinde göstermek istenilen node adı XPath metoduna parametre olarak verilir ve değeri gösterilir.

Örnek proje.

Asp.Net sunucu kontrollerinden TextBox kontrolünü TextMode="Multiline" özelliği ile kullanıldığında MaxLength özelliği çalışmamaktadır. Buraya çözüm için alternatif yöntemler yazacağım zaman zaman.

İlk çözüm yine sunucu kontrollerinden CustomValidator ile olacak.

CustomValidator;
textarea

devam edecek...

Vista' da gadget olduğu dönemlerde hiç hoşlanmadığım fakat Seven ile çok severek kullandığım Sticky Notes uygulaması hakkında MS tarafından yayınlanan bir bilgiyi düzeltmek için bu yazıyı ekliyorum.

Sticky Notes

Yazıda metinleri biçimlendirebilmek için bazı tuş kombinasyonları listelenmiş. Hatalı olan kombinasyon, metinerin boyutunu değiştiren.
Bilgiye göre;

  Increased text size : Ctrl+Shift+>
Doğrusu;
  Ctrl+Shift+.

  Decreased text size : Ctrl+Shift+<
Doğrusu;
  Ctrl+Shift+,

Uzun yıllardır notebook kullanıyorum. Klavye düzeninde < ve > işaretleri aynı tuş üzerinde. Durum böyle olunca nasıl bu kombinasyonlar kullanılacak pek anlayamadım.

Küçük bir araştırma yaptım. Esas sorun MS'in yerelleştirme konusunda sağlam bir hata yapmasından ibaret. Dillerin kullandığı Klavye yerleşiminin farklı olması sorunun esas sebebi.

Uygun Olmayanlar Uygun Olanlar
keyboad layout keyboad layout
Kanada (Fransızca)
Danimarka
Hollanda
İtalyan
Norveç
Portekiz
İspanyol
İsveç
Almanya
Avusturya
Fransa
Belçika
Çek Cumhuriyeti
İrlanda
Brezilya
Romanya
İngiltere
Arabistan

Kaynak

Bildiğiniz gibi verileri Hash'lemek için bir çok yöntem var. Bunlara alternatif olarak Ms Sql Server içindeki HashBytes sistem fonksiyonu ile de yapmak mümkün.

Fonksiyon iki adet parametre alır. İlk parametre Hash algoritmasının adı (MD2, MD4, MD5, SHA, SHA1) diğeri ise Hash'lenecek veri(varchar, nvarchar, varbinary). Fonksiyondan geriye ise varbinary tipinde değer döner (8000 bytes).

Örnek olarak, web uygulaması için basit bir login işlemi yapalım.

Örnek tablo:

create table

Kayıt eklemek için bir procedure.

Create proc insertuser

Son olarakta kullanıcı kontrolü yapan bir procedure.

create proc validateuser

Script