Ana içeriğe atla

Kayıtlar

AK etiketine sahip yayınlar gösteriliyor

AppDomain Sınıfı ile Müşteri İhtiyaçlarının, Dinamik Kod Üretilerek Karşılanması

Günümüz iş uygulamalarında, artan ihtiyaçlar doğrultusunda yazılım geliştiriciler olarak bizler, ihtiyaçları karşılamak için pek çok farklı tasarım modellerini hayatımıza sokmak zorunda kalıyoruz. Bu modellerden son zamanlarda en popüler olanı ise .Net altyapısını kullanarak CodeDom sınıfı ile dinamik kod üretip, üretilen kodun uygulamada dinamik çalıştırılmasıdır. Böylece, müşteriden müşteriye değişen ihtiyaçlar nedeniyle, parametrik yapılarla uygulamanın çatısını bozabilecek seviyeye gelebilen değişikliklerin önüne geçmiş oluyoruz. Peki, CodeDom sınıfını kullansak da kullanmasak da, bir şekilde dinamik oluşturduğumuz kodu çalıştırmak istediğimizde ne gibi problemlerle karşılaşırız? .Net altyapısında dinamik oluşturulan dosyalar, aynı uygulama tarafından bir kez yüklendiğinde bellekten boşaltma şansınız kalmaz.

Refactoring Nedir?

Yazılımda “Refactoring” yeniden düzenleme anlamına gelmektedir. Başka bir deyişle, yazılım davranışını değiştirmeden kodun karmaşıklığını azaltmak, okunabilirliğini arttırmak, çıkabilecek hataların düzeltilmesini ve ileride koda yapılabilecek eklentileri kolaylaştırmak için uygulanan bir işlemdir. Çevik yazılım geliştirme sürecinde yeniden düzenlemenin önemli bir yeri vardır. Kodlama süresince belli aralıklarla yapılacak yeniden düzenlemeler, yazılımcının kodu daha rahat, hatasız, hızlı tamamlamasına olanak sağlar. Öncelikle şunu belirtmemizde fayda var. “Yeniden düzenleme” yapmadan önce, düzenlemelerin yapılacağı kod bloklarının tespit edilmesi ve birim testlerinin oluşturulması gerekmektedir. Düzenlemenin temel amacında, yazılımın genel davranışında herhangi bir değişiklik yapılmaması vardır. Dolayısıyla Public fonksiyonlar ve/veya sınıfların giriş çıkış parametrelerinin değişmeyeceğini kabul etmeliyiz. Böylece, kodun yeniden düzenlenmeden önceki oluşturulan birim testlerini düzen

Web Servisi 3G Bağlantısında Retransmition Sorunu

Bu yazımızda istemci-sunucu arasında web servisi ve 3G iletişiminde gönderilen/alınan veri miktarlarında yaşanılan problemli bir senaryodan bahsedilecektir. Problemli Senaryo Tanıtımı ve Deneyler Aşağıdaki şekilde “Application Server” olarak adlandırılan sunucu üzerinde örnek bir web servisi bulunmaktadır. PDA istemci el terminali de 3G ile internete bağlanıp, web servisine erişerek bir dosya istemektedir. İstenilen dosya bayt dizesi olarak network üzerinden el terminaline gönderilmektedir. Bu senaryoda alınan verinin boyutu 250 KB olmasına rağmen, network izleme araçlarıyla bakıldığında 1,25 MB civarında veri alış-verişi olduğu gözlenmektedir. Yani indirilen verinin 5 katı gibi bir veri boyutu oluşmaktadır. 3G sağlayıcılar, ücretlerini veri alış veriş miktarına göre belirlemektedir. Gerçek verinin 5 katı boyutunda veri alış verişi yapmak, doğal olarak fazla maliyet demektir. Problemin neden kaynaklandığını anlamak için senaryo aşağıdaki gibi farklılaştırılmıştır.

Visual Studio 2008 Test Edition Web ve Load Test İncelemesi (Bölüm 7) – Load Test

Bir önceki makalemizde Web Testi ile test senaryosunu oluşturmuş ve yük testi için hazır hale gelmiştik. Load Test/Yük testi, uygulamanın farklı senaryolarda sergileyeceği performansın ölçülmesini sağlayan bir test yöntemidir. Çoğu zaman, eğer uygulamamız tek bir makinede çalışıyorsa, performansı hakkında bir fikir sahibi olabiliriz. Fakat web uygulaması gibi performansın etkilenebileceği pek çok faktörün bir araya geldiği durumlarda, uygulamamızı ancak yük testinden geçirerek sonuçlarına göre iyileştirmeler yaptıktan sonra daha sağlıklı fikrimiz olur. Visual Studio içerisinde gelen yük testi, farklı tarayıcılarla, farklı kullanıcı profilleri için hafif ve ağır yük senaryolarını oluşturabilecek pek çok özellik içermektedir. Bunu, yerel makinemizde basitçe uygulayabileceğimiz gibi (gerçekçi sonuçlar vermeyebilir), pek çok farklı makineyi dâhil ederek de (bir “Controller”, bir veya birden fazla “Agent”) uygulayabiliriz. Yük Testi Oluşturulması Daha önce oluşturduğumuz test projesi içeri

Visual Studio 2008 Test Edition Web ve Load Test İncelemesi (Bölüm 6) – Web Test

İlk 5 makalemizin ardından ( Bölüm 1 , Bölüm 2 , Bölüm 3 , Bölüm 4 , Bölüm 5 ), web test uygulamasının oluşturulması ve yük testi adımlarına geçiyoruz. Web Test, bir web sayfasının / uygulamasının / servisinin veya bunların kombinasyonlarının işlevselliğini denemek için uygulanan, tarayıcınızdaki http isteklerini (GET/POST) kaydedip sonrasında bunları aynı sırayla çalıştıran test yöntemidir. Bu test yöntemi, uygulamanın performansını anlık ölçmek için kullanılabileceği gibi, yük testinin bir senaryosu olarak da kullanılabilir. Bu test yönteminde farklı kontrol ve değer alma kuralları mevcuttur. Kontrol yöntemleri; ekran alan isimleri, metin, etiketler, http istemleri sırasında geçen süreler için kullanılabilir. Sonuçları olmasını beklediğimiz değerlerle kıyaslayıp, sistemin kıstaslarımıza olan uygunluğunu ölçebiliriz. Kullanılabilecek araçlar ve senaryo kayıtlarının oluşturulması Web Test için kullanılabilecek 2 araç mevcuttur. Bunlardan biri, Microsoft Web Test Recorder, diğeri ise,

Visual Studio 2008 Test Edition Web ve Load Test İncelemesi (Bölüm 5) - Ağ Dışında (Workgroup) Agent ve Controller Servisleri için Kullanıcı ve Grupların Düzenlenmesi

Kurulum ve kullanım ile ilgili bölümlere başladığımız makale serimizde ( Bölüm 1 , Bölüm 2 , Bölüm 3 , Bölüm 4 ), yük testi sırasında  uzak makineler için metriklerin toplanmasında yaşayabileceğimiz olası bir probleme ve çözümüne değineceğiz. Böyle bir problem ile karşılaşıldığında, yük testi raporunda şöyle bir hata görülür; “Exception LoadTestCounterCategoryNotFoundException-The performance counter category ‘Network Interface’ cannot be accessed on computer '….' (Access is denied) ; check that the category and computer names are correct.” Uzak bir makinenin performans metriklerini toplayabilmek için, eğer çalıştırılan sistem bulunduğunuz ağın dışında (örn: sanal makinelerden oluşan ağ) ise, öncelikle, “controller” ve “agent” servislerinin kurulu olduğu sistemler üzerinde gerekli erişim haklarına sahip kullanıcıların yaratılması ve bu kullanıcıların, bazı özel test gruplarına dâhil edilmesi gerekmektedir. Bunun için, bu makinelerde önceden belirleyeceğimiz kullanıcı isimlerini

Visual Studio 2008 Test Edition Web ve Load Test İncelemesi (Bölüm 4)

Diğer makalelerimizde kurulum sürecini tamamladığımız ( Bölüm 1 , Bölüm 2 , Bölüm 3 ) Visual Studio 2008 Test Edition’ın bu makale ile birlikte kullanımına giriş yapacağız. Visual Studio içerisinden Controller Seçimi ve Yönetimi Visual Studio Team System Test Edition kurulduktan sonra, “Test” menüsünden, “Administer Test Controllers …” menü adımına tıklayalım. Eğer ilk kez giriş yapılıyorsa, ekran görüntüsü aşağıdaki gibi olacaktır. Yük testi sonuçlarının kaydedilebilmesi için, “Load Test Results Store” adı altındaki veritabanı bağlantı metnini kontrol etmeniz gerekmektedir. Bağlantı için gereken veritabanı adı “LoadTest” olmalıdır. Bu ayar yapılmadığı takdirde, yük testi gerçekleştiremezsiniz. Yük testini sadece yerel makinenizden yapacaksanız, “Web Testing”  bölümüne geçebilirsiniz.

Visual Studio 2008 Test Edition Web ve Load Test İncelemesi (Bölüm 3)

Son makalemizde, Bölüm 2’de anlatmaya başladığımız kurulum sürecinin devamındaki Controller ve Load Agent servislerinin kurulumlarını detaylandırmaya çalışacağız. Controller Kurulumu Controller kurulumu için, açılan kurulum sayfasından, “Install Team Test Load Agent Controller” bağlantısına tıklamanız gerekmektedir. Biraz bekledikten sonra, aşağıdaki ekran görüntüsü karşımıza çıkar. Burada, Controller servisinin açılışta otomatik başlatılması için, ilgili makinede mutlaka Yönetici (Administrator) haklara sahip kullanıcı adı ve şifresi girilmelidir . Aksi durumda, kurulum başarı ile tamamlansa bile servis başlatılamaz. Kurulum sonrasında yapılması gereken basit ama yapılmadığı durumlarda, Visual Studio – Controller – Load Agent çemberinde iletişim problemlerini gideren bir ayarımız var. Bu düzenlemenin yapılmadığı durumlarda, kullanılan makinelerinizin statik IP adresi yoksa ve/veya yerel ağ bağlantısı varken, kablosuz ağ bağlantısı da açıksa, servisle

Visual Studio 2008 Test Edition Web ve Load Test İncelemesi (Bölüm 2)

Kurulum ve Ayarlar Bölüm 1’de genel bir giriş yaptıktan sonra Visual Studio Test Sürümünün kurulumuna başlıyoruz. Bunun için, aşağıda belirtilen bağlantılardan 90 günlük deneme sürümlerini indirebilirsiniz. Team System Team Suite için: http://www.microsoft.com/downloads/details.aspx?FamilyId=D95598D7-AA6E-4F24-82E3-81570C5384CB&displaylang=en Team Suite Test Load Agent için: http://www.microsoft.com/downloads/details.aspx?FamilyID=572e1e71-ae6b-4f92-960d-544cabe62162&DisplayLang=en Team Suite Kurulumu Bir süre bekledikten sonra, kurulum şeklini soran bir ekran karşımıza gelecektir. Burada, bütün araçların kurulması için tam kurulumu seçebiliriz veya eğer, özel kurulum seçiliyorsa, aşağıdaki ekran karşımıza geldikten sonra;

Visual Studio 2008 Test Edition Web ve Load Test İncelemesi (Bölüm 1)

Yazılım testi, yazılım geliştirme yaşam döngüsündeki en önemli fazlardan biridir. Çıkan ürünün kalitesi; tasarım, kodlama, test ve sonucunda da sistem ihtiyacının karşılanmasına bağlıdır. Yazılım kalitesi, farklı test araçları kullanılarak elde edilen metrikler ile ölçülebilir. Daha önceki yazılarımızda yazılım sürecinde meydana gelen hatalara   ve bu hataların nasıl yönetildiğine değinmiştik. Build Automation and Continuous Integration başlıklı yazımızda, yazılım geliştirme sürecinde, sürekli tümleştirmenin önemini vurgulayarak, bir test aracı ile test scriptlerinin sürekli çalıştırılacak olmasının, yapılan geliştirmelere bağlı hataların tekrar ortaya çıkmasını önleyeceğini anlattık.

HttpWatch ile Sniffing

Tüm web uygulamaları, Http veya Https protokolleri üzerinden çalışırlar. En basit uygulamada bile HTML sayfasının üzerindeki grafikler ve scriptler için web sunucusuna birden fazla Http Request gönderilir. Dolayısı ile profesyonel uygulamalarda, tarayıcı ile web sunucusu arasındaki Http paketlerinin incelenebilmesi oldukça önemlidir. En çok kullanım alanları; Arıza arama (Trouble shooting) Performans ayarlama (Perfermance tuning)  Web sitesinden akan bilgilerin güvenliği olup olmadığını inceleme HttpWatch programı, Internet Explorer ve Firefox gibi tarayıcılarla entegre çalışarak, web sayfalarına her erişimde gelen-giden Http paketlerinin izlenmesini sağlar. Eğer https üzerinden güvenli bir siteye bağlanırsanız, kullanıcıların göreceği şekilde paketleri otomatik olarak decrypt eder. Geleneksel network izleme programları sadece düşük seviye network verilerinin (low-level data) izlenmesini sağlarken, HttpWatch programı optimize edilmiş Http verilerinin hızlı ve anlaşılabilir şekilde

Javascript Ortamında LINQ Kullanımı

LINQ üzerine yazdığımız giriş yazısında belirttiğimiz gibi linq kullanarak, koleksiyonlar veya diziler üzerinde sql benzeri ifadelerle sorgular yazabilmekteyiz. Dizayn modülünü yazarken, “acaba javascript tarafında da linq kullanabilir miyiz?” sorusu aklımıza geldi. Yaptığımız ARGE çalışmaları sonunda, javascript için yazılan bir linq kütüphanesini kullanmaya karar verdik. Bu kütüphane yardımıyla ile C#’daki linq sözdizimine benzer sorgular yazarak, diziler ve bellekteki nesneler üzerinde rahatlıkla işlem yapabilmekteyiz. Öncelikle basit bir örnek üzerinde kullanımını görelim: Range fonksiyonu verilen başlangıç ve bitiş indexleri arasında integer dizi oluşturur, bu diziden çift sayı olanları aşağıdaki gibi where koşulu ile seçebiliriz. //E--> Linq.Enumerable'ın sembolüdür E.Range(0,10).Where("d=>d%2==0").Select("c=>c")   Tablo1. Basit bir linq javascript kullanımı

Routerlı Modem + VPN üzerinden TFS Kullanımı

Geçenlerde yaşadığım bir problemi ve çözümünü yazmak istedim. Evimden ofis ağına bağlanmak için yaratmış olduğum VPN bağlantısı üzerinden, yavaş da olsa bütün sunuculara problemsiz erişebildiğim halde, source control için kullandığımız MS Team Foundation Sunucusuna, Visual Studio içerisinden bağlanamıyordum. Bağlanmış gibi gözüksem bile kısa bir süre sonra Visual Studio bağlantının koptuğunu söylüyordu. Shell window dan sunuculara ping attığımda, ilk ping sonucunda “destination unreachable” hatası aldığımı, sonraki ping lerin ise adrese ulaştığını, işin ilginç yanı ise, ilk ping atılan adresin local makinam olduğunu fark ettim.