Asp.net Application Profiling
Birçoğumuzun gözden kaçırdığı, kaçırmasa da yapmayı ötelediği işlemlere göz atıyorum bu aralar. Yazılmış kodların ya da çalışır bir sistemin profile edilmesi hızlı gelişen süreçler dahilinde lüks olarak nitelense de ayrılacak kısa süreler umulmadık çözümlere ulaştırabilir problemleri, gereksinimleri.
İşte bu gereksinimlerin öneminden yola çıkarak Profiling ve Monitoring araçlarını incelemeye çalışacağım kısa kısa.
İlk incelemek istediğim araç AutomatedQA adlı bir firmaya ait olan AQtime adlı bir uygulama. Performans üzerine ürünler geliştiren bu firmanın AQtime ürününde hedeflenen performansa etki eden işlemleri izlemek ve memory kullanımını debug etmek. Ayrı olarak kullanılabildiği gibi Visual Studio içinden de kullanmak mümkündür. Deneme sürümünde her visual studio başlangıcında deneme sürümü confirmasyonu alması bir süre can sıkıcı gelebilir.
Native code için profile ve debug imkanı da veren bu uygulamada yapılandırmamızı asp.net uygulaması için yapıyor olacağız.
Asp.Net uygulamamızı Visual Studio 2005\2008 içerisinde açtıktan sonra proje özelliklerinden Build menüsü yardımıyla Debug işlemleri için Optimize Code seçeneğinin seçili olmadığından emin olalım. Bu seçimden emin olduktan sonra projeyi tekrar compile edelim.
Test edebilmek amacıyla basit birkaç for döngüsü kullanacağım bir web application oluşturdum. Bu web application in öncelikle iis e application olarak tanımlamamız ve virtual bir path vermemiz gerekli.
Test uygulamasıyla ilgili IIS yapılandırmasından sonra AQTime yapısına baktığımızda New Project seçeneğiyle yeni bir profiler projesi başlatıyoruz. Açılan bu projeyi IIS teki test sitemizle konuşturmak için bin folderı altındaki web uygulaması için assembly dll’ ini sol navigasyon menüsündeki Add Module seçeneğiyle projeye ekliyoruz.
Öncelikle test etmek ve izlemek istediğimiz uygulama Asp.Net uygulaması olduğu için Asp.Net modunu seçiyoruz.
Profile etmek istediğimiz aşamaları area alanından seçerek profiling işlemini başlatıyoruz. (Ingilizce bir kelimeye etmek fiili ekleyerek türkçeleştirmek en sevmediğim kullanımlardan biridir aslında ama profiling türkçe olarak daha mantıklı bir şekilde çeviremedim)
Run dedikten sonra karşınıza bir pencere daha çıkacaktır ve bu pencereden hangi işlemleri Runtime işlemlerini mi sonrasını mı vs izleme aşamalarını seçebilirsiniz.
Bu seçimi de yaptıktan sonra ayarların tamam olduğunu ve IIS uygulamasının başlatılmasının beklendiğini gösteren bir uyari göreceksiniz. Bu uyarıyla birlikte IIS uygulamasını Internet Explorerdan çağırmak AQtime ı aktif etmek ve izleme işlemine başlamak için yeterli.
Profiling esnasında uygulamanızda neler olup bittiğini hangi modullerin kaç saniyede ayaklandırıldığını sistemin nerelere eriştiğini erişemediğini monitor penceresinden izleyebilirsiniz.
Proje süreçlerinde zaman alması bakımından çokta üzerinde durulmaya ama zaman zaman harcanan zamanı kat kat fazlasını kazandıran işlemler olan Profiling ve Performans aşamalarındaki araçları incelemeye devam edeceğim.
CRM Configuration Manager
Dynamics Crm konusunda yazılmış kişisel bir proje olmasının riskini göz ardı edilebilmesi durumunda oldukça faydalı olabilecek bir uygulama. Crm Server taşınması esnasında oldukça faydalı olabilecek bir ürün.
Özellikle ilişkili varlıkları Import\Export imkanı sunabilmesi faydalı bir özellik olarak altı çizilebilir.
Bilgi ve download için : CRM Configuration Manager.
Javascript Libraries
Herseyi librarye yikmak anlayislara gore yaklasimlara gore sevilen ya da pek sevilmeyen bir yaklasim.
Library kullanarak javascript islerini bir nevi outsource etmek, zamandan tasarruf; bu konuda haklilar da zira yiginla yazilmasi gereken javascript kodlarini library kullanarak hizlica ustesinden gelmek esas alana yogunlasmak konusunda bos alan saglayan bir yontem.
Diger acidansa herkesin tahmin edecegi uzere kolaycilik. Zamandan ya da emekten tasarruf yerine bu tarz librarylerle kolay ve hizli bir sekilde is yapmak kolaycilik, bir kismin dusuncesine gore.
karar sizin;
Really Useful Tutorials You Should Have Read in February 2010 | W3Avenue.
Browser Hız Testleri: Firefox 3.6, Chrome 4, Opera 10.5, and Extensions – Browser speed tests – Lifehacker
Sonuclar cok sasirtici degil aslinda. Her browserin kendine has one ciktigi nokta digerlerini ezdigi ozellikler mevcut. Hangi browseri sececeginiz tek bir soruda kilitlenip kaliyor. Neyden vazgecebilirim ? Memory, hız, pluginler ?
Visual Studio 2008 Setup Error
Otomatik bir windows guncellemesi sonrasi calismayan bir visual studio 2008 alinan hata;
Cannot find one or more components. Please reinstall the application.
Sistem kayit entrylerine varana kadar bir temizlik ve tekrar Visual Studio 20008 kurulum denemesi sonrasinda alinan hata;
Cannot find one or more components. Please reinstall the application.
Saatlerce forumlarda gecirilen zaman anlam veremedigim boyle cozum mu olur dedigim bir yoldan geldi.
C:\WINDOWS\WinSxS\ klasoru altinda yer alan x86_Microsoft.VC90.ATL* klasoru icindeki atl90.dll dosyasi her ne hikmetse yerinde yok. Yerinde yeller esen dll i onceki kurulumlara ait backup klasorlerinden (Ayni formatla baslayan bir onceki klasor) alip buraya yuklediginizde Visul Studio 2008 i sorunsuz bir sekilde kurabildiginiz goreceksiniz.
Cozmek icin gecen saatleri herhangi bir backup klasorunde aramayin. Bulamazsiniz.
Asp.Net GridView \ Auto-generate Fields
Asp.net GridView konrolu yerine tercihim genel olarak Devexpress componenti icerisinde yer alan AspxGridView kontrolu olmustur.
Bu yuzden daha once yasamadigim bir durumu GridView kontrolunu kullandigim bir proje sonrasinda paylasmak istedim.
Eger GridView a Datatable ya da Dataset yardimiyla databound yapiyorsaniz ve sagdaki resimde gorulen check isareti isaretliyse
Datatable icerisinde gonderdiginiz datalari tekrarlayarak Gridview a bind edildigini goreceksiniz.
Dikkat edilmesi gereken ince bir ayrinti olarak dusundum.
Request Değerlerini ekrana yazdırmak
Request nesnesinde Querystringle gonderilmis degerleri adres satirinda yakalamk her zaman kolay degildir. Bu degerleri ekranda gorerek olasi bir hatayi tespit etmek icin kullanilacak basit bir kod;
int i,k;
NameValueCollection collSet = Request.QueryString;
string[] arr1 = collSet.AllKeys;for (i = 0; i < arr1.Length; i++)
{
Response.Write("Key : " + Server.HtmlEncode(arr1[i]) + "<br>");
String[] arr2 = collSet.GetValues(arr1[i]);
for (k = 0; k < arr2.Length; k++)
{
Response.Write("Value:" + Server.HtmlEncode(arr2[k]) +"<br>");
}
}
Konseptler Üzerine
Iyi bir software engineer\yazilim muhendisi olmak icin programlama dili mi onemli yoksa konseptler patternler designler mi uzun uzadiya yazmak ve sormak istiyorum aslinda, cokca tartisilan bu konuyu.
Bu konu uzerinde degil ama bilinmesi gereken konseptlere dair guzel bir yazi ; buradan
Programlar \ Prism
Mozilla labstan oldukça işe yarar bir uygulama. Web uygulamalarını desktop uygulaması olarak dönüştürerek browser bağımlılığından kurtarmak amaçlı bu program için http://prism.mozilla.com/ adresi kullanılabilir.
Web 2.0, Web 3.0 trendleriyle tüm uygulamalar internet üzerinde erişilebilir ortamlara aktarıldıktan sonra desktopa dönerek kendi çapındakini evrimini tamamlayacak belki de. Ya da döngü bu şekilde devam edecek, kimbilir.