Arda Çetinkaya Yazılım ve arada kendim ile ilgili karaladıklarım…

.NET 3.0 çıktı dedik, peki ne bu .NET 3.0? Biraz da bundan bahsetmek lazım sanırım. .NET 3.0, .NET 2.0’ın biraz daha genişletilmiş hali. Arka tarafda aslında değişek hiç bir şey yok. .NET 2.0 ile gelen CL tamamen aynı. Ancak Windows Presentation Foundation,Windows Communication Foundation,Windows WorkFlow Foundation ve CardSpace gibi yeni kavramlar mevcut. Aslında bu konuların hepsi çok ayrıntılı ve çok güzel kavramlar. Hepsini burada anlatmak isterdim ama ne yazık ki şu an ki bilgi düzeyim ve ilgi alanım hepsini içermiyor. Şu sıralar, hatta uzun bir süredir Windows Presentation Foundation ile ilgilenmekteyim. WPF ile  ilgili öğrendiğim şeyler sanırım burada daha bir öncelikli olacak.

Read More

Uzun bir süredir merakla beklenen, meraklıların Beta sürümleriyle haşır neşir olduğu .NET Framework 3.0 çıktı. .NET 2.0 ‘ a, Windows Communication Foundation, Windows Workflow Foundation,Windows Presentation Foundation ve Windows CardSpace kavramlarının eklenmesi ile ortaya çıkan yeni sistemi http://www.netfx3.com/ adresinden takip edebilirsiniz…

“.NET Framework 3.0 has been released!

The .NET Framework 3.0 has officially been released!  You can download the .NET Framework 3.0 components here:

Note, if you are using Windows Vista the .NET Framework 3.0 Runtime Components are installed by default.

Başımın belası,sitenin kabusu olan hosting sorununu bu sefer tamamen çözdüm…Aynen devam…İçeriği de 2-3 güne kadar eski haline getireceğim…Takip edin 🙂

1 hafta önce “Lost” manyaklığı içinde kendimi buldum.Neden manyaklık diyorum?Çünkü diziyi izleyen kimi tanıyorsam, ciddi anlamda Lost fanatiği olmuş durumda. Amerikada yayınlanan bölümleri ile paralel şekilde izleyen,takip eden, merak eden, ciddi bir şekilde muhabbet konusuna dönüştürüp, olaylar üzerinde devlet meselesi gibi tartışanlar var.Manyaklık değilde nedir bu ? 🙂 Read More

Windows Vista ile, DirectX’in yeni versiyonu DirectX 10 tam olarak çıkıyor ve oldukça merakla bekleniyor. En azından ben, gelen haberlerden dolayı yeni versiyonu merakla bekliyorum. DirectX, Wındows tarafında grafik programlama için temel bir API olmuştu hep. Ancak nedense şu ana kadar çıkan hiç bir Windows sürümünde bu API’nin işletim sistemi ile entegrasyonu fazla görememiştik, çünkü yoktu. Ama DirectX 10 ve Vista oldukça entegre bir şekilde çalışacak haberleri ve çeşitli örnekler, grafiksel olarak güzel şeylerin bizi beklediğini gösteriyor.

Yeni DirectX versiyonunda öne çıkan asıl DirectX component’ı Direct3D olacak sanırım. Her ne kadar XInput(ex-DirectInput) veya ses ve görüntü componentinde(XACT) büyük değişiklikler olsa da Direct3D 10 sanırım en çok üzerinde konuşulan yeni DirectX component’ı.

Vista ile beraber olarak gelecek olan DirectX 10, farklı kavramlar ile karşımıza çıkacak.Bunlar Direct3D 9Ex(extended) ve Direct3D 10. Direct3D 9Ex, Direct3D 9 versiyonu ile çalışan uygulamalar için,Vista’da çalışabilmesi için DirectX 9’un biraz da genişletilmiş hali. Tabi ki eski DirectX 9 API’si de Vista için geçerli olacak.

Read More

Nedir bu Event?
Event, olay,hadise,vaka,aktivite olarak çeşitli Türkçe kelimeler ile tanımlanabilir. Bir programda da aslında tam olarak böyle. Event, bir programın belli bir aktivitesi olarak adlandırabiliriz. Event’lerin gerçekleşmesini sağlayan çeşitli durumlar vardır,bu durumlara tetik diyoruz. Kısaca olayların gerçekleşmesi için onların tetiklenmesi gerekir. Basit bir örnek ile olayı biraz daha özetlesem sanırım daha anlaşılır olur. Şimdi bir alarm yönetim sistemi var diyelim.Çeşitli yerlerdeki alarmları kontrol ediyor olsun. Bu çeşitli yerlerden biri bir banka olsun. Gece geç saatlerde bu bankaya bir hırsız girsin(tetik) ve alarmın çalışmasına neden olsun. Alarm yönetim sistemine giden bu alarm  da bize nerede,saat kaçta olayın olduğunu bildirsin. Biraz daha programcılık terimleri ile olaya başka açıdan bakalım şimdi. Şimdi bankaya biri girdiğinde haberdar olmak istiyoruz.HIRSIZGIR() diye bir metod  olsun,ve hırsızın bankaya girme metodu olsun.Hırsızın bankaya girme olayı gerçekleştiği zaman ALARMCAL() methodu çalışsın ve bize haber versin. Bu işi ALARMCAL() metodunu, HIRSIZGIR() metodu ile ilişkilendirerek yapabiliyoruz. Ve bu şekilde HIRSIZGIR() çalıştığı zaman ALARMCAL() metodu tetiklenmiş olacak. Umarım bu örnek olayın biraz anlaşılması için yeterli olur,gerçi aşağıda program koduyla bazı şeylere daha net deyiniyor olacağım. Bu konuda bahsedilmesi gereken bir diğer kavram ise delegate(delege,temsilci) metodlar.  Object Oriented Programming kavramının ana taşlarından biri olan data encapsulation, açısından bakarsan delegate metodlar içinde method encapsulation diyebiliriz. Biraz daha anlaşılır olması için, delegate(temsilci) metodların, başka metodları temsil etmesi olarak basit bir cümle kurabilirim. Delegate metod, temsil ettiği başka bir metodun çalışmasını sağlar. Bu şekilde bir nesne içindeki metodların içeriklerinin biraz olsun gizlenmesi sağlanabilir. Şimdi biraz kod üzerinden gidelim. class AlarmEventArgs : EventArgs {         private string place;         private string time;         public AlarmEventArgs(string p,string t)         {             place = p;             time = t;         }         public String Place         {             get { return place; }         }         public String Time         {             get { return time; }         } } Üstteki kodda System.EventArgs’yi kullanarak kendi EventArguments’ımızı yaratıyoruz. Bu belirlediğimiz event gerçekleştiği zaman bize döndürecek argümanları belirleyebiliyoruz. Kendi  EventArguments’larımızı yazma gibi bir zorunluluğumuz yok aslında ama ben genellikle tercih ediyorum.

public class Alarm {         //Event'in tetiklenmesini sağlayacak olan delegate metodunu tanımlıyoruz.         //Tanımlama sırasında metod içinde bir işlevine dair hiç bir şey yazmıyoruz.         //Parametre olarakda bu Event'i tetiklenen obje ve parametreleri tanımlıyoruz.         public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);         //Yukarıda tanımladığımız delegate methodu tipinde bir event tanımlıyoruz.                 public event AlarmEventHandler AlarmEvent;                 public void Active(string p,string t)         {             AlarmEventArgs args = new AlarmEventArgs(p, t);             AlarmEvent(this, args);                     }          }Burada delegate metodumuzu tanımlıyoruz.Alacağı parametreleride belirtikten sonra da, event’i de tanımlıyoruz. Dikkat ederseniz event’in  döndüreceği bilgi olarak delegate metodumuzu yazıyoruz. Yani event’i bir method ile ilişkilendiriyoruz burada. Bence  Event ve Delegate konularında en önemli ve dikkat edilmesi gereken yer burası.

public static void Main() {         Alarm a = new Alarm();         //Event sonuçunda çağıralacak metodu temsilci metoda tanıtıyoruz.         a.AlarmEvent += new Alarm.AlarmEventHandler(a_AlarmEvent);         a.Active("Banka", "02:34");         a.Active("Market", "23:04");  }  //Event gerçekleştiği zaman çalışacak olan metod.  static void a_AlarmEvent(object sender, AlarmEventArgs e)  {         Console.WriteLine("Alarm is started in "+ e.Place+" at "+e.Time);  }Main fonksiyonu içinde gerekli tanımlamalardan sonra, Alarm nesnesinin Event\’ine temsilci metodun temsil edeceği metodu atıyoruz.Burası da çok önemli bir nokta. Çünkü olayın gerçekleşmesinden sonra çağırılacak fonksiyonun içeriğini burada tanımlıyoruz.Bu örnekte,ben Alarmın nerede aktif olduğunu ve saat kaçta çalıştığını konsola yazdırdım.Bu çok ama çok basit bir örnek oldu.Umarım anlaşılmış,en azından bazı şeylerin biraz daha oturmasını sağlamıştır. Her türlü soru ve fikirlerinizi thearda@hotmail.com adresine bekliyorum.

DirectX’in yeni versiyonu DirectX 10’nun çıkmasına az kaldı.Vista ile birlikte entegre bir şekilde gelecek olan yeni versiyon, eski versiyonlara göre oldukça kuvvetli.İlerleyen günlerde oldukça kapsamlı bir directX 10 yazısı burada olacak ama şu an bahsetmek istediğim ve üzüntü duyduğum bir konuyu söylemek istiyorum, o da artık Managed DirectX 2.0’ın artık olmayışı. 1 yıl önce Microsoft geliştiriciler için MDX 2.0’ı beta olarak çıkardı ve 1 yıl içerisinde bir çok revizyon ile bunu paylaştı. Ancak son çıkan DirectX October 2006 SDK’sı içerisinde artık MDX 2.0 Beta yok. Zaten beta olan bir şeyi kaldırmanın çok da önemi gözükmese de aslında geliştiriciler için çok büyük sorun çıkardı bu. Mevcut 2.0 çalışmalarımı MDX 1.1’e çevirmek gerçekten zahmetli ve sıkıcı bir iş oldu. MDX 1.1’in stable bir versiyon olması, aslında neden o varken 2.0’a geçtim gibi sorularıda bu zahmetli iş sırasında oldukça aklımı kurcaladı. Bu arada atlamadan birşey hatırlatmak istiyorum, MDX 1.1, .NET 2.0 ile beraber çalışıyor.

 

Peki neden böyle bir şey oldu?

XNA Framework’ü önümüzdeki aylarda,çok yakın bir zamanda çıkacak. XNA ile baya iddialı olan Microsoft, tüm DirectX geliştiricilerini sanırım bu platform altında toplamak istiyor. Fena da etmiyor aslında ama bu şekilde zahmet çıkarması biraz kafa karıştırıcı.

Özet olarak artık Managed DirectX 2.0 Beta yok.Destek de yok. Yani mevcut 2.0 uygulamalarınızı ya 1.1’e çevireceksiniz ya da XNA’e merhaba diyeceksiniz ki, Microsoft’un da istediği bu.