‘ c# – asp.net ’ Adlı Kategori

En Sevdigim Videolardan :)

Nisan 02, 11 Yazan: akın

[del.icio.us] [Facebook] [Fark] [Faves] [Furl] [Google] [MySpace] [MyWeb] [Newsvine] [Reddit] [Slashdot] [StumbleUpon] [Windows Live] [Yahoo!] [Email] 

Et-Mangal Blogundan – Yazılım bloguna: Bir Dönüşüm Hikayesi:)

Kasım 24, 10 Yazan: akın

Bir süredir Bahadır blogunu yazılım dışı konulara yönlendirmişti. Adsız sporlar, iett araçları, et-mangal tesisleri fln.. 2-3 gün önce bu konuda ona karşı saldırgan bir tavır bile sergilemiştim (şimdi pişmanım ama):p. Bu tavrımın nedeni ise yazılım properties‘i bu kadar gelişmiş olup da hiç paylaşım yapmamasıydı tabii ki.

Sonunda yazılımla alakalı bir yazı görmekten dolayı oldukça mutluyum. Yalnız ilginç bir nokta var: Uzun zamandır yazmamanın etkisiyle olsa gerek koskoca algoritmayı yazmış çizmiş gitmiş : ). Her yazılımcı ileride mutlaka böyle bir algoritmaya ihtiyaç duyar. Herkesin yerine düşünmüş Bahadır sağolsun. Açıkçası ben arşivime ekledim, size de öneririm.. Gitmek için tıklayın: tık

http://fizy.com/#s/1nlero

[del.icio.us] [Facebook] [Fark] [Faves] [Furl] [Google] [MySpace] [MyWeb] [Newsvine] [Reddit] [Slashdot] [StumbleUpon] [Windows Live] [Yahoo!] [Email] 

String Değişkeni EventHandler’a Çevirmek

Kasım 06, 10 Yazan: akın

Aslında bahsetmek istediğim konuyu başlıkta tam anlamıyla açıklayamadım. Web projelerimiz yeterince esnek hale gelince sayfadaki tüm kontroller ve işlevleri dinamik hale geliyor. Kısaca sayfanızdaki controller hard code’dan bağımsız basit bir xml dosyası ile düzenlenebilir hale geliyor. Bu aşamada xml dosyalarından okuduğunuz string değerlerini eventhandler veya method olarak çağırmanız gerekebilir. İşte size bu yazının senaryosu:

Diyelim ki sayfanıza dinamik olarak bir buton eklediniz. Bu butona tıklandığında ise yapabileceği 5-6 tane fonksiyon var ve bunlar string olarak bir dizide tutuluyorlar. Normal şartlarda bir butonun click olayına method bağlamak istediğinizde yazmanız gereken kod aşağıdaki gibi olacaktır:

btnA.Click += new EventHandler(btnA_Click);

Gördüğünüz gibi parantez içine varolan uygun bir method yazmanız istenir. Eventhandler’a parametre olarak string değer vermezsiniz. Elimizde ise string değişkenler olduğuna göre bunu nasıl yaparsınız? String değişkenini eventhandler’a çevirir ve butonun click olayına bağlarsınız:
 var eventName = "btnTest_Click";

            Button btnTest = new Button();

            EventHandler handler = (EventHandler)Delegate.CreateDelegate(typeof(EventHandler), this, eventName);

            btnTest.Click += new EventHandler(handler);

http://fizy.com/#s/1ago1f

[del.icio.us] [Facebook] [Fark] [Faves] [Furl] [Google] [MySpace] [MyWeb] [Newsvine] [Reddit] [Slashdot] [StumbleUpon] [Windows Live] [Yahoo!] [Email] 

Kısa Kısa

Kasım 04, 10 Yazan: akın

Tedbil-i Mekan’da ferahlık vardır demişler zamanında bende çalışma ortamıma bunu uygulamaya karar verdim.

Visual Studio’da sizde yazılım geliştiyorsanız ve beyaz üstüne siyah fonttan çok hoşlanmıyorsanız mutlaka Visual Studio şemalarını kullanmışsınızdır. Uzun bir süredir Ragnarok Blue kullanırken artık değiştirmem gerektiğini düşündüm.

Ragnarok Blue - tıklayın

Ragnarok Blue - tıklayın

Yukarıdaki gibi bir ortamda 2 senedir çalışıyorum. Büyük ekranlarla çalıştığınız zaman güzel oluyor fakat küçük ekranlı bilgisayarlarda çalıştığınızda (laptop gibi) fontlar büyük kalıyor. Bir süredir de zaten yeni bir şema bulmayı planlıyordum. Neyse sonunda içime sinen bir şema buldum. İsmi Humane Studio.

Humane Studio

Humane Studio

Gördüğünüz gibi fontlar daha küçük ve diğerine göre daha ferah bir rengi var. Daha önce Visual Studio’da şema kullanmamış olanlar için belirtmek istiyorum. .vssettings uzantılı dosyanızı Visual Studio’ya import etmek için izlemeniz gereken yol:

Tools -> Import And Export Settings -> Next -> No, just import… + Next -> Browse dedikten sonra dosyayı seçmek sizi yeni görünüme kavuşturacaktır.

Diğer konu tabii ki grip. Hala atlatamadım. Hala savaşıyorum. Sevdi bu grip beni hemde çok:) Anlaşılan bir süre daha benimle birlikte. Bu arada bazı yazarların kitapları bitmesi diye okumuyorum bile. Bazen kendimi frenliyorum kitap hemen bitmesin diye. Bunun yanında tabii bazıları ise bitmemekte ısrar ediyorlar o da ayrı konu tabii.

Benchmark testlerimi yaptığım classı bir ara yayınlamayı düşünüyorum. Blogumu takip eden programcılar, yazdıkları methodları test ederek daha optimize hale getirebilirler.

Happy Coding.

http://fizy.com/s/1dlusk

[del.icio.us] [Facebook] [Fark] [Faves] [Furl] [Google] [MySpace] [MyWeb] [Newsvine] [Reddit] [Slashdot] [StumbleUpon] [Windows Live] [Yahoo!] [Email] 

C# Dictionary Benchmarking

Ekim 30, 10 Yazan: akın

System.Collections namespace’inde bulunan Dictionary tiplerinin verileri arasında en hızlı nasıl dönebiliriz? Dictionary tiplerinin en işlevsel özellikleri şüphesiz her verilere bir anahtar atayabilmenizdir.

 Dictionary<string, int> d = new Dictionary<string, int>();
        d.Add("kedi", 2);
        d.Add("kopek", 1);
        d.Add("lama", 0);
        d.Add("iguana", -1);

yukarıdaki kod bloğu Dictionary tipinde “d” değişkenine belirttiğiniz kurallar dahilinde ekleme yapabilmenizi sağlamaktadır. Burada d değişkenin anahtarının tipini “string”, değerinin tipini ise “int” olarak belirttiniz.(Terimleri Türkçeleştirince oldukça garip olduğunu kabul ediyorum.) Yukarıdaki örnekte, 2 sayısını “kedi” anahtar kelimesi ile eşleştirdik. Bundan sonra d["kedi"]; komutu bana 2 sayısını verecektir.

Runtime esnasında dictironary tipini ihtiyaca göre doldurursunuz ve bir noktada içindeki verileri okumak istersiniz. Bunu bir çok yolla yapabilirsiniz. Yazılımlarınızda performans her zaman en önemli kriter olduğuna göre sormamız gereken soru okuma işini en hızlı nasıl yapabiliriz. Öncelikle her bir değeri KeyValuePair tipine çevirerek Foreach ile dönelim:

  foreach (KeyValuePair<string, int> pair in d)
        {
            Console.WriteLine("{0}, {1}",
                pair.Key,
                pair.Value);
        }

Şimdi de Dictionary tipimizin tüm key’lerini bir listeye alıp içlerinde dönelim:

List<string> list = new List<string>(d.Keys);

        foreach (string k in list)
        {
            Console.WriteLine("{0}, {1}",
                k,
                d[k]);
        }

Dictionary tipini okumak için farklı yollar deneyebilirsiniz fakat en yaygın kullanımları bu şekildedir. Bu iki döngüden sizce hangisi işini daha hızlı bitirir? Benchmarking sonuçlarına göre dictionary tiplerini KeyValuePair tipine çevirerek döngüyü ilerletmek daha hızlı sonuç veriyor:

KeyValuePair ile Foreach döngüsüne girdiğinizde işlem sonuca 125ms‘de varıyor.

Key listesi ile döngüye girdiğinizde ise işlem sonuca 437ms‘de varıyor.

Kodlarımızda Dictionary kullandığımız zaman, her bir satırı en uygun değer olan KeyValuePair tipine çevirerek okumamız bizi daha hızlı sonuca ulaştıracaktır.

Happy Coding.

http://fizy.com/#s/1lrvvi

[del.icio.us] [Facebook] [Fark] [Faves] [Furl] [Google] [MySpace] [MyWeb] [Newsvine] [Reddit] [Slashdot] [StumbleUpon] [Windows Live] [Yahoo!] [Email] 

Heap – Stack

Ekim 28, 10 Yazan: akın

Yazılımlarımızda kullandığımız nesneler ve değişkenler memory’de heap ve stack adı verilen iki bölgede tutulurlar.

Stack kısmında int, float gibi runtime öncesinde tanımlanan veriler tutulurken, Heap bölgesinde ise runtime da oluşturduğunuz nesnelerin, fonksiyonların verileri tutulmaktadır.

Örneğin; Test t = new Test(); şeklinde runtime’da bir nesne tanımladığınızda bu nesne heap bölgesinde tutulup, yazılımınızdan referans almadığı zaman Garbage Collector tarafından temizlenecektir.

Stack bölgesi her zaman heap bölgesine oranla daha hızlı çalışacaktır. C,C++ ve C# dilleri her zaman Main() methodu ile başlarlar. Doğal olarak Main methodun’da tanımlanan tüm değişkenler stack bölgesinde tutulacaktır.

Main bloğundan bir method çağırdığınız zaman ise bu method ve değişkenlerinin hepsi heap bölgesinde tutulacaktır.

String tiplerinde işler biraz değişiyor. String yazi; şeklinde bir değişken tanımladığınız zaman, bu değişken, new ile oluşturulacağı için referans tipi olur ve heap bölgesinde tutulur. Yazılımlarınızda o yüzden string değişkenlerine oldukça dikkat etmelisiniz.

Stack bölgesi LIFO mantığına göre (Last In First Out) dizilir. Heap bölgesinde böyle bir kural bulunmamaktadır.

Yazılımlarınız Heap Size Over gibi bir hata verdiğinde, runtime’da oluşturulan nesnelerin veya değişkenlerin boyutlarının izin verilenden fazla olduğunu bilmelisiniz.

Happy Coding:)

http://fizy.com/#s/1lsv9n

[del.icio.us] [Facebook] [Fark] [Faves] [Furl] [Google] [MySpace] [MyWeb] [Newsvine] [Reddit] [Slashdot] [StumbleUpon] [Windows Live] [Yahoo!] [Email]