Archive

Archive for the ‘productivity’ Category

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 image ü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.

imageTest 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. image

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)

image

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.

image

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.

 image

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.

image

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 ?

Browser Speed Tests: Firefox 3.6, Chrome 4, Opera 10.5, and Extensions – Browser speed tests – Lifehacker.

C#.Net le Windows Service ve Message Queuing Uygulaması

Windows service uygulamalari start stop olarak iki asamali bir yapi sunsa da startla baslayan ve devam eden bir surecte icerdigi icin bir kompozisyon calismasi gibi gelir bana; giris gelisme sonuc.
Her asamada yapmak istediklerini kolayca uygulayabileceginiz konfigurasyon konusunda hem config dosyalarini hem de guvenlik icin windows guvenlik ayarlarini adapte edebileceginiz windowsun bu edebi yaklasimli uygulamasina artilariyla oldugu kadar eksileriyle de bakmaya calisalim.

image Visual Studio da sekilde gorulecegi uzere project tiplerinden windows service secerek uzerinde calisacagimiz ana projeyi olusturmakla ise baslayalim. Anlatima partner olarak olarak sectigim bu projede Message Queuing yapisini kullanarak queu yu dinleyen ve gelen paketi mail olarak gonderen ya da paket geldiginde belli kisilere mail olarak uyari gonderen bir servis yazmaya calisacagim.

Windows service projesini olusturdugumuzda karsimiza design viewda acilacak olan ekranda herhangi bir islem yapmayi planlamadigim icin direk olarak code view a geciyorum. Code viewda goreceginiz uzere makalenin girisinde de soyledigimiz gibi Start ve Stop override functionlari ServiceBase den otomatik olarak implemente edilmis olarak gelmekte.

image

Giris gelisme ve sonuc dedigimiz yapiyi servise uygulamak icin isStopped seklinde bir property tanimlayarak start icerisinde olusturacagim processi servis stop olana kadar devam ettirmek yonunde bir yapi kurguluyorum. Bunu bir sleep mekanizmasi kurgulayak belli araliklarla queu yu dinlemek seklinde de tasarlayabilirdik ama servis stop olana kadar kuyrugu dinlemesi ve anlik mesaj atimini saglamasi ornegimiz acisindan daha tercih edilir bir yapi olarak gozukmekte.

image

Bu kurguladigimiz yapiya uygun olarak OnStart processini guncellememiz gerekicek. Bu guncellemeyle birlikte queue yu dinlememiz ve yeni bir mesaj geldiginde haberdar olmamiz gerek. Bunun icin bir handler yazarak bunu gueue ya ReceiveCompleted Handler i olarak attach etmemiz gerekecek. Boylelikle uygulamamizin son asamasi olan mail gonderimini saglayacak ve uyarilar ilgili maillere gonderilecektir. OnStartta gorulecegi uzere proje dahilindeki settings yapisi kullanilarak Queue pathi verilebilmekte ve bu da kullanimi kolaylasirmaktadir.

image

Uygulamamiza son seklini verdikten sonra basit olarak maili atacak fonksiyonu da uygulamamizin icine dahil ediyoruz. Ayri bir yapilandirmayla mail mimarisini harici bir class icerisinde tutmak daha saglikli olacaktir. Ancak ornegimiz icerisinde gozukmesi acisindan mail fonksiyonunu da buradaki govdeye ekledik.

image

Mail fonksiyonalitesiyle birlikte giris gelisme ve sonuc kismimiz tamam. Ancak service uygulamasi icin bir proje daha ekleyerek kurulum asamasini da yapilandirmamiz gerekli. Setup & install asamasini da projemize ekleyerek servisimizin manual degil de kolay bir arayuzle kurulmasini saglamak kullanislilik acisindan faydali olacaktir.

image

Bunun icin ekranda da gorulecegi uzere Other project types kismindan setup & deployment secenegi secilerek sagdaki kisimdan da Setup projesi secilmek suretiyle projemize Setup asamasini katmis oluyoruz.

image

Setup asamasini yapilandirmak icin, ekran goruntusunde gorulecegi uzere proje uzerine sag tiklayarak add project output secerek kuruluma dahil edilecek olan projemizi ekliyoruz. Setup Project->Add->Project Output->Service1(Primary Output)

image

Bu eklemeyi yaptiktan sonra Setup Project->View->Custom Actions sekmesini takip ederek custom actionlarin sagda listelenmesini sagliyoruz. Bu asamayla birlikte Install Rollback asamalarinda neler olacagini tanimlamis olacagiz. Bunun acilan ekranda Custom Actions a sag tiklarak ekrandaki gibi application folderdan primary output olarak ekledigimiz projeyi secerek Custom Actions a dahil ediyoruz.

image

Bu dahil etme isleminden sonra once primary projeyi daha sonra setup projesini build ederek setup projesinde build configurationinda Setup projesi icinde build sekmesini isaretliyoruz. Boylelikle build islemiyle birlikte install icin gerekli msi dosyamiz olusturularak kullanilabilir bicimde sunulmus olacaktir.

Bu islemler sonucunda setup projesine sag tiklayarak install\uninstall secenekleriyle windows servisimizi kurup geri yukleyebiliriz.

Visual Studio 2008 Setup Error

November 26, 2009 Leave a comment

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

November 20, 2009 Leave a comment

image

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

October 9, 2009 Leave a comment

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

 

Categories: productivity

Programlar \ Prism

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

 

Technorati Tags: ,,
Categories: productivity