Aykut Taşdelen Kitap PDF Download

Blogumun sürekli olarak google’dan bu kelimelerle arandığına şahit oluyorum. Hiç bir yazar kendi emeği olan kitabını PDF olarak ücretsiz dağıtmaz. Lütfen şu bedavacılık alışkanlığından kurtulun. Ve şunu unutmayın eğer kitaplar böyle bedava PDF olarak indirilebiliyor olsa hiç kimse kitap yazamaz hiç bir yayınevi de bir tek kitap basamazdı. Üstelik aradığınız şey yasalara göre bir suç unsurudur. Bazı arkadaşlar ben öğrenciyim o nedenle arıyorum diye bir savunma öne sürüyor. Öğrenci olmak birşeyi bedava elde edebileceğiniz anlamına gelmediği gibi bunu söyleyen pek çok “öğrencinin” kitaba ayıramadığı parayı sigaraya, marka kıyafetlere, telefonlara vs hiç acımadan verdiğine de çok şahit oldum. (Özellikle 2011 den beridir bir üniversitede dersler veriyor ve bu durumu kendi öğrencilerimde bire bir gözlemliyorum) Kaldı ki bu kitaplar yabancı kitaplar gibi 60, 70$’lık kitaplar değiller, PDF’ini aradığınız örneğin Reporting Service kitabı 13 lira, internette daha da ucuza satan siteler bile var üstelik.

Şaka bir yana İstanbulda yaşamıyorum kitaplarınızı bulamıyorum alamıyorum diyorsanız da, info@aykuttasdelen.net üzerinden benimle iletişim kurun kitabınızı imzalayıp kargoyla göndereyim.

Gelen Bazı Yorumlar Üzerine Ek :

Bu yazıya yapılan yorumlardan ve cevap yazmaktan maalesef hicap duyuyorum. Aslında yapılan yorumları “hakarete varmadığı sürece” muhalif bile olsa yayınlıyorum. Yayınlamamak da elimde ama sitemi ve beni takip edenlerin düşüncelerini terbiye sınırını aşmadığı sürece de yayınlayacağım ki halkımızın kültür ürünlerine verdiği değer de ortaya çıksın. Bu konu benim kitaplarımı çoktan aştı ben diğer yazar arkadaşlarım ve benzer durumdaki müzik, sinema ya da farklı kültür ürünlerinin üreticileri adına da bu görevi yerine getiriyorum.

Yayınlamadığım yorumlar arasında bana ağır hakaret edenlerden tutun tehdit edenler bile var. Bir dakika ! Burada savunduğum, yerden göğe kadar haklı doğrularla suçlu olan ben olmadığıma göre, bu suçu işleyenler kendilerinde güçlü de olma hakkını nereden buluyorlar ?

Sesimizi de çıkartmamızı bekledikleri, vazgeçmemizi bekledikleri şeyler; emeğimizin karşılığı, alınterimiz ve hakkımızdır ! Kusura bakmasınlar ama o kadar da uzun boylu değil. Bu ülkede kanun var,  hukuk var. Hem emeğinizi, zamanızı, paranızı harcayarak ortaya bir ürün koyacaksınız hem de birileri bu ürünün karşılığını ödemeden resmen çalmaya çalışacak, bir de üstüne kendini haklı görüp hakaret edip, tehdit edecek…   Bu durum artık kleptomanlığı, saygısızlığı da aştı.

Belirli bir saygı çerçevesinde yorum getiren herkese kapım elbette açık yaptığı yanlışı dilim döndüğünce anlatmaya çalışıyorum. Ama konuyu başka bir noktaya götürenlerle de hukuk çerçevesinde savaşım sürecek. Elinizi vicdanınıza koyun aşağıdaki google aramasının neresi iyi niyetli ve  hoşgörüyle yaklaşılabilir … ?

“aykut taşdelen tüm kitapları bedava indir”    Birini de değil “tümünü” indirecek !

Reklamlar
WPF Windows Presentation Foundation

WPF Windows Presentation Foundation Kitabı Çıktı

Uzun bir süredir üzerinde çalışmakta olduğum WPF Windows Presentation Foundation kitabım pusula yayıncılıktan çıktı. Okurlarım Türkçe kullanımına ne kadar dikkat ettiğimi bilirler, bu kitapta da öğretici, sade ve düzgün bir dil kullandım. Çünkü internetteki yazılarda hep eleştiregeldiğim VJ ağzıyla yazılmış bozuk Türkçeli yazılara çok kızıyorum. Hep kızdığım bir şey de; bu maalesef kitaplarda da yapılıyor ele alınan konuya hayran kalmış onu öve öve bitiremeyen yazar klişesi. Ben konuyu şövenist bir tutumla anlatmak yerine eleştiriler de yaparak, zaman zaman API,MFC, Swing ya da QT gibi farklı teknolojilerle karşılaştırarak, benzerliklerine dikkat çekerek ele aldım. Herşeyden önemlisi C ve Sistem Programcıları Derneğinin genel çizgisi ve tarzında yani bir sistem programcısının bakış açısıyla WPF’i inceledim. Özellikle bazı bölümlerde bu durum dikkatinizi çekecektir. Ayrıca kitapta XAML, MVC, WCF (Windows Communication Foundation) ve Blend ile ilgili de başlıklar bulacaksınız. Kitapta ele alınan başlıklar ise şöyle;
•             MVC ve MVVM Patern’lerinin kullanımı
•             XAML kullanımı
•             Paneller ve Diğer Nesneler
•             Routed Event ve Komutlar
•             WPF’te Kaynak Kullanımı
•             WPF’te DataBinding işlemleri
•             XBAP, BAML vb kavramlar
•             WPF ile animasyon uygulamaları
•             Çizim işlemleri
•             WPF’te Win32 mesajlarının yakalanması
•             WPF MultiThread Programlama
•             WPF’te Tema ve stil uygulamaları
•             WCF kullanımı
•             .NET Framework 4.0 Eklentileri
•             Expression Blend’in Kullanımı
•             Ve diğerleri .

Kitap temini, WPF ve Silverlight eğitimleri için info@aykuttasdelen.net adresinden yazara ulaşabilirsiniz…

What is Dependency Property (WPF) Dependency Property Nedir

Dependency Property Nedir

Bu yazı Aykut TAŞDELEN’in WPF kitabından alıntıdır izinsiz kullanılamaz ! Konuyla ilgili diğer kısımlar kitapta devam etmektedir.

WPF kütüphanesindeki çeşitli sınıflar incelendikçe tasarımdaki genel yaklaşımın WPF’te property’lere daha fazla anlam yüklediği görülecektir. Gerçekten de WPF sisteminde property’ler fonksiyon ve event’lere göre daha önemlidir ve daha sık kullanılmak zorundadır. Bu durum özellikle data binding konusunda daha da keskinleşmektedir. Bu nedenle WPF, CLR’ın sunduğundan daha zengin bir property sistemi sunar.

 

WPF’in “property sistemi” diye anılan niteliği aslında büyük ölçüde dependency property gibi yeni kavramlara dayanmaktadır. Dependency property; WPF property sistemine kaydedilmiş (register edilmiş) property’lerdir. Bu property’ler; value expression’ları, data binding, animasyon, değişim uyarısı, ve styling gibi özel konularda destek sağlar.

 

Dependency Property gibi yeni bir kavramın varlık gerekçesi; söz konusu property’e ait değerin databinding, stil kullanımı, animasyon gibi dışsal girdilere bağlı şekilde hesaplanabilmesini sağlamaktır.
Daha önce de dile getirildiği gibi dependency property’ler özellikle data binding konusunda hayati önem arzetmektedir. Zira bir nesnenin herhangi bir özelliğine veri bağlamanın gerek şartı; söz konusu özelliğin bir dependency property’e sahip olmasıdır !

 

Herhangi bir sınıfta, bir dependency property oluşturmak (yani bir property’i dependency property haline getirmek) için; DependencyProperty sınıfı türünde ve “public static readonly” bir veri elemanı tanımlamak gerekir. Tanımlanan bu elemanın ismini, asıl property’nin isminin sonuna Property kelimesini ekleyerek tanımlamak gerekir. Örneğin Control sınıfında FontSizeProperty elemanı bu şekilde tanımlanmıştır. Böylece FontSizeProperty, FontSize isimli property’nin dependency property’si olmaktadır.

 public class Control: FrameworkElement {
    public static readonly DependencyProperty FontSizeProperty;     // ... }

 

Bu  eleman artık WPF’in property sistemine register yani dahil edilebilir. Bu işlem DependencyProperty sınıfının statik Register() fonksiyonu ile gerçekleştirilir. Register() ilk parametresine asıl property’nin ismini, 2.parametresine türünü, 3.parametresine ise property’nin ait olduğu sınıfın türünü almalıdır.

 

public class Control : FrameworkElement {
    public static readonly DependencyProperty FontSizeProperty;
    static Control()
    {
         FontSizeProperty = DependencyProperty.Register("FontSize",   typeof(double),                      typeof(Control));
    }
}

 

Bu noktada artık asıl property’e ilişkin implementasyon gerçekleştirilebilir. Ancak bu noktada CLR property’lerinden farklı olarak DependencyObject sınıfından kalıtım yoluyla elde edilen GetValue() ve SetValue() isimli metotlar kullanılacaktır.

 

public Object GetValue(DependencyProperty dp)

 

public void SetValue(

      DependencyProperty dp,

      Object value

)

 

Bu metotlar dependency property’de saklanan değeri get ve set eder. Kodun aşağıda tamamlanmış son halini inceleyiniz.

 

public class Control : FrameworkElement {     public static readonly DependencyProperty FontSizeProperty;
    
    static Control()
    {
         FontSizeProperty = DependencyProperty.Register(                      "FontSize",                      typeof(double),
                     typeof(Control));
    }
 
     public double FontSize
     {
          get
          {
              return (double) this.GetValue(FontSizeProperty);
          }
          set
          {
              this.SetValue(FontSizeProperty, value); 
          }
     }
}

.NET ‘te Windows Mesajlarının Dispatch Edilmesi

.NET ‘te Windows Mesajlarının Dispatch Edilmesi

C# gibi dillerdeki event kavramı aslında yüksek seviyeli programcıların konuyu kolay anlayabilmesini ve kullanabilmesini sağlamak üzere düşünülmüş uyduruk bir kavramdır. Aslında event diye bilinen olgu aşağı seviyede mesaj kavramının karşılığıdır. Mesaj; sistem tarafından tespit edilen girdi bilgilerine denilir.  Ve Windows gibi işletim sistemlerinde mesajlar işletim sistemi tarafından ele alınarak ilişkili olduğu uygulamaya gönderilir ve uygulamalar da bu mesajları işler. Windows API programlamada yazılımcı bu mesajları döngü içerisinde ve bir takım api’lerle (GetMessage gibi) mesaj kuyruğundan alarak işler. Bu döngüye mesaj döngüsü denmektedir. Mesaj kuyruğu ise; mesajları barındıran bir fifo kuyruktur.

Kuyruktan alınan mesajlar ise WndProc (pencere fonksiyonu) isimli fonksiyonla işlenir. WndProc programcı tarafından doğrudan değil DispatchMessage fonksiyonu ile dolaylı olarak çağrılır. (Zira bu sayede DispatchMessage bazı mesajlar özel işlemler yapabilmektedir.) İşte DispatchMessage ise mesajı ayrıştırıp pencere fonksiyonu denilen WndProc’u çağırır.

Her pencerenin kendi (özel olarak register edilmiş) pencere fonksiyonu vardır. Mesaj hangi pencereye ilişkinse o pencerenin pencere fonksiyonu çağrılıp, orada da mesaj numarasına bakılarak uygun işlem o pencere için gerçekleştirilir.

Yukarıda kısaca anlatılan bu çalışma biçimi aşağı seviyeli ve zordur. İşte C#, VB programcılarının bu kurguyu anlayamayacağı düşünülerek, event diye bildiğimiz yüksek seviyeli kavram, mesaj sistemini kolaylaştıracak şekilde kendilerine sunulmuştur. Ancak yine de bilinç düzeyi yüksek bir .NET programcısı da arka planda gerçekleşen bazı şeyleri anlayabilmek ve gerektiğinde kısmen de olsa bazı müdahaleler yapabilmek için bu konuları bilmek zorundadır. Dolayısıyla bu kısımda .NET’in herkes tarafından pek bilinmeyen tür bu konuları ele alınacaktır.

WPF ve Forms kütüphanelerindeki Application sınıfının Run() metodu gerçekte uygulamanın mesaj döngüsünü oluşturur. Kuyruktan bir mesaj alınınca mesajdaki hWnd bilgisine bakarak uygulamanın tüm açık pencerelerini dolaşıp bu mesajın hangi pencereye (kontrole) ait olduğu belirlenir. (Burada pencere ve kontrol kavramı özdeştir)  Mesaj hangi pencereye (kontrole) aitse o kontrolün sanal WndProc metodu çağrılır. Bu sanal metot ise Control sınıfının ilgili onXXX event tetikleyici metotlarını çağırarak mesajın işlenmesini sağlar. İşte programcı bu noktada (override etmek suretiyle) araya girip mesaj henüz normal yollarla işlenmeden disptach edilmesini ve mesajın farklı bir event’e yönlendirilip orada işlenmesini sağlayabilir.

PreProcessMessage ise mesaj kuyruktan alındıktan sonra henüz daha WndProc çağrılmamışken mesajın elde edilmesini sağlayabilir.

Bu konu hakkında daha detaylı bilgiler almak için “İleri ve Kurumsal Düzey .NET Uygulamaları” ile “WPF” kitaplarımdaki ilgili bölümlere bakabilirsiniz. Sözü edilen kitaplarda konuya dair örneklemeler de bulacaksınız…