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

Bir konuda büyük çelişki içerisindeyim…”Blog” tarzı bu kendi sitemde, bazen sadece belli bir kesimin anlayabileceği teknik yazılar bazen de kimsenin anlamadığı yazılar yazmaktayım. Şu zamana kadar ikisini iç içe sunuyordum…Çünkü bir şekilde iki kategoride benim hayatımın içinde yer alan kavramlar. Şimdi bu iki ayrımı ciddi bir ayrım olarak düşünmeli ve komple ayırmalımıyım sizce…Yani yazılım ile alakalı şeyleri başka bir platformda, diğer anlayamadıklarımızı da başka bir platformda mı sunmalıyım…Ha, bir yardımcı olun be,hadi…

20 Nisan’da süresi dolacak bir anket koyuyorum…

Minepla.net'in içeriðini, teknik ve diðer olarak iki farklý kategoriye bölüp, öyle bir sunum mu yapsam acaba?

  • Evet bence yap (53%, 10 Votes)
  • Hayýr böyle iyi (47%, 9 Votes)

Total Voters: 19

Yükleniyor ... Yükleniyor ...

Önceki yazılarımdan bir tanesinde bir kaç sinek resmini paylaşmıştım sizle…Bir kaç tane daha paylaşıp, öldürdüğümüz sinekleri analım…

Bunlar öncekilerden daha yaratıcı…Neyse karar sizin…

Visual Studio 2008’e kurulum sırasında eklemediğiniz özellikleri, daha sonra eklemeye karar verdiğiniz de başlıkta ki hatayı,  “A selected drive is no longer valid” alıyorsanız, yapmanız gereken çok can sıkıcı bir işlem var. Bu hatanın sebebi, Visual Studio 2008 Service Pack 1’i yüklemiş olmanız. Saçma ama ne yazık ki bundan dolayı… Haa buna rağmen illa kurmam gerekiyor diyorsanız, öncelikle Visual Studio 2008 Service Pack 1’i sisteminizden kaldırmanız gerekmekte. Daha sonra istediğiniz ek özelliği kurabilecek duruma geleceksiniz. Sonra tabi Service Pack 1’i tekrar kurmanız gerekecek. Ama ama önceden bir de Team Explorer ile de çalışıyorduysanız vay halinize…Tekrar bir Team Explorer kurulumu yapmanız da kaçınılmaz…

Ama biliyormusunuz, bunların hiç biri Visual Studio 2010’da yok….

Bilmem, nerde?

Windows Server 2008’de “Disk Cleanup” yapmak isterseniz, eski alışkanlıklarımız ya da bildiklerimiz bizi yarı yolda bırakacaktır. Temizlemek istediğimiz diskin özelliklerinden “Disk Cleanup” a ulaşamıyorsak, yapmamız gereken küçük bir ekleme var.

Windows Server 2008’in “Manage Server” arayüzünü kullanarak, yeni bir “Feature” eklememiz gerekmekte. “Desktop Experience” olarak geçen özelliği eklemeniz gerekmekte. Ama ne yazık ki çok mantıklı bir yol değil bu, çünkü  “Desktop Experience” ile bir server için gereksiz ne kadar şey varsa da yüklüyoruz ne yazık ki…

Bu ay içerisinde .NET 4.0 versiyonu yayınlanacak bildiğiniz üzere. Yaklaşık bir yıldır, çeşitli platformlarda .NET 4.0 ve Visual Studio 2010 beraberinde tanışacağımız özellikler gösteriliyor, anlatılıyor. Kısacası hazırız aslında .NET 4.0’a…(!)

Peki neden .NET Framework,”4.0” oldu?…Ya da v4.0 altında gerçekten neler oldu biliyor muyuz?…Açıkcası kişisel olarak, biz yazılımcıların bazı önemli değişikliklere çok önem verdiğimizi düşünmüyorum. Yani hem kendimden, hem de gözlemlerime dayanarak söylüyorum bunu. İstisnalar var tabi ki bunu da biliyor, takip ediyorum…Neyse…Bundan dolayı da .NET Framework’ü hakkını vererek kullanıp, uygulamalar geliştirebildiğimize inanmıyorum.

1.0,1.1,2.0,3.0,3.5,4.0 şeklinde gidiyoruz bizde .NET Framework ile…Her versiyon aslında farklı bir yazılımcı jenerasyonu. En azından ben böyle düşünüyorum. 1.0-1.1 zamanında kendi master page yapısını oluşturan, 1.1’de kendi Ajax kütüphanesini yazan, 2.0’da kendi O/R mapping’ini yazıp Entity Framework’e kafa tutan bir çok kişi tanıyorum…AJAX’ı Microsoft’un çıkardığı bir yenilik sanan, arka tarafta işlerin nasıl döndüğünü bilmeyen kişiler de tanıyorum. Tabi ki artık bazı işlerin kolaylaşması, çok derinlerdeki olayların nasıl olduğu bilme gerekliliğini sorgular hala getiriyor. Ama eğer yazılım ile teknolojiye katma değer katmaya çalışıyorsak ve mühendislik yaklaşımından geliyorsak, nasıl olduğunu bilmesekte ne olduğunu bilmemiz gerektiğine inanıyorum.
Bundan dolayı .NET 4.0’ın derinliklerinde neler değiştiğini, kendi tecrübelerim ve öğrendiğim bilgiler doğrultusunda paylaşma gereği hissettim. Hani temeli iyi yaparsak, üst taraf daha sağlam olur yaklaşımı ile…

Öncelikle kendi çizmiş olduğum komik ama bence anlamlı resmi paylaşarak nasıl .NET 4.0’a geldik bunu hatırlayalım.

.NET 1.0 ve 1.1 bir çoğumuzun hatırlamak istemeyeceği bir dönem. “Karanlık Çağ” şeklinde adlandırılıyor olması sanırım çok da yanlış değil. .NET 2.0 ile beraber, temelli çok daha sağlam bir yapı ile geleceğe daha büyük umutlar ile baktık. Önceki versiyona göre daha istikrarlı ve ne olduğu daha belirgin bir framework’tü .NET 2.0.NET 2.0 ile mutlu mesut yaşarken, hızlı ilerleyen teknolojik kavramlar, .NET 3.0’ı attı önümüze…Yedik bir güzel…Hazmetmesi, adapte olması zordu…Yapı olarak fazla değişiklikler olmasa da, yapının üstüne gelen WCF, WPF, CS(Card Space),WF adaptasyonu zorlaştırdı biraz. Sonra .NET 3.5 çıktı…Biraz daha kolay hazmedelim diye .NET 3.0’daki yeniliklerin iyileştirildiği ve ek besin vitamini olarakta LINQ ve Entity Framework ile desteklenen bir versiyondu .NET 3.5
Şimdi de .NET 4.0…Çok daha kararlı, bazı şeylerin, önceki dönemlerdeki tecrübeler ile silinip atıldığı ve tekrar yazıldığı, parlak gözüken bir versiyon. İyileştirmelerden çok, geliştirmelerin olduğu, yenilikler ile teknolojik gelişmelere daha kolay ayak uydurabileceğimiz bir versiyon…

Peki neden farklı?

.NET Framework’de bulunan CLR, .NET 2.0 versiyonunda beri hiç değişmemişti. .NET 4.0 ile beraber CLR 4.0 ile tanışıyoruz. .NET 4.0 versiyonunda ki en önemli değişikliklerden biri de bu aslında. Peki neler değişti, neler gitti, neler geldi…

Garbage Collection değişiklikleri

CLR 4.0 ile beraber Garbage Collection tarafında iyileştirmeler yapılmış. Performans konusunda yapılan bu iyileştirmeler ile GC’nin çalışma algoritmalarında büyük değişiklikler var. .NET Framework tarafında yaratılan objeler belli koleksiyonlarda tutuluyor. Objeler yaşam sürelerine göre bu koleksiyonlar da konumlanıyor. GC’da bu koleksiyonlardaki objeleri yaşam sürelerine göre topluyor,yok ediyor…CLR 4.0’da bu işler artık daha hızlı.

İç içe çalışan CLR

CLR 4.0’ın bence en güzel yeniliklerinden biri de, içerisinde başka CLR versiyonlarının da çalışabilmesi. Ne demek oluyor bu açalım biraz daha…. .NET Framework ile çalışan ana uygulama tek bir CLR versiyonu yükleyebiliyordu. Bu da uygulamalarda destek sorununa neden olabiliyordu. Mesela CLR 1.0 versiyonu ile çalışan bir uygulamaya, CLR 2.0 versiyonu ile bir şey yazamıyorduk. CLR 4.0 ile artık bu sorun ortadan kalkıyor. Plug-in yazmak artık çok daha kolay olacak kısacası…Bunun ile ilgili bir örnek ilerleyen yazılarımda olacak, telaşa mahal yok…

Yakalanamayan hatalar(Ayrıntılar için CSE’ı google da aratın)

Önceki CLR versiyonlarında bazı unmanaged işlemlerden doğan hataları yakalamak normal try-catch blokları ile mümkün değildi. InvalidMemory,AccessViolation falan filan gibi. CLR 4.0 ile artık bu tarz hataları yakalamak daha kolay. Bunun için [HandleProcessCorruptedStateExceptions] özelliğini programımızın başlangıcına eklememiz yeterli.

Profiling yenilikleri

Uygulamaları profile etmek için önceki CLR versiyonlarında üretim ortamına Visual Studio kurmamız gerekmekteydi. Artık buna gerek yok…

Dump Debuging

Belli arayüzler ile artık uygulamalarımızda dump debuging yapabileceğiniz. Hata olduğunda “Gönderim mi,göndermiyim mi” sorusu ile başbaşa kaldığımız ekran .NET 4.0 ile kendi uygulamalarımız adına biraz daha anlam kazanacak.

Çok çekirdekli .NET

Ay çekirdeği tadındaki bu en güzel yenilik, artık çok çekirdekli işlemcilerde, bu çekirdeklerden faydalanmamızı sağlayacak Parallel Extensions olarak karşımıza çıkıyor. CLR thread’leri artık bu çekirdekler arasında dağıtılabilinecek…Şahane…

Daha bir çok ilginç yenilik var. Zamanla gerektiği kadar bunları öğrendikçe,kullandıkça paylaşmaya çalışacağım. Yukarda dediğim temel olayından dolayı…Neyse şimdilik bu kadar…