9 Eylül 2013 Pazartesi

önsöz


Bilişim hayatımızın her alanına girmiş durumda. Eczane-stok takibi, muhasebe işlemleri gibi kayıt-raporlama temelli dönemler gerilerde kaldı. Eğitim, sağlık, eğlence, inşaat, turizm gibi neredeyse tüm sektörlerde bilişimin imkanlarından yararlanan sayısız örnekler verilebilir.
Bu blog içerisinde bilgisayar mühendisliğinde güncel iki temel yaklaşım olan mekansal veri işlem ve veri madenciliği konusunda örnek uygulamalar-projeler ve ilgili teknolojik ürünler-gelişmeler hakkında yazılar bulacaksınız.
 Her iki konuda son yıllarda çok populer alanlar olup, veri madenciliği var olan illişkisel veritabanlarının (RDMS,Relational Database Management Systems)  yetersiz kaldığı

tür veri ve işlem konusunda Nesne Yönelimli Veri Tabanları (OORDMS,Object Oriented Relational Database Management Systems) ile çağdaş yaklaşımlar sunmakta ve pratik hayatımıza bilgi teknolojilerinin daha fazla yer almasını sağlamaktadır.

Çok kısaca ilişkisel veri tabanlarında temelde veri türleri sayısal ve alfanümerik olmakta EFCodd un ortaya koyduğu ilişkisel cebir ve SQL ile stansdartlları temelde seçme(selection), projeksiyon(projection) ve birleşme(join) operatörlerine dayanmaktadır. Bunlarda günümüz çoklu-ortam verilerini işlemde yetersiz kalmakta, birçok geometrik test (mesafe,alan,uzaklık, biribirini içerme, keşisme, ...) ve topolojil ilişkinin varlığı ancak OORDMS ile mümkün olmaktadır. Blog içerisinde karşılacağınız diğer konu ise veri madenciliği. Makine öğrenimi (machine learning), örüntü tanıma(pattern recognition) gibi kavramlarla da anılmakta istatistiksel karar verme ile yakından alakalıdır. Buradaki temel sorun ise her saniye varolan bilgi bankalarına muazzam yeni veriler eklenmekte, bunların içerisinde anlamlı olan veriyi özetleyecek , gelecek tahminleri yapacak yeni yaklaşımlar olarak söylenebilir. Bunun cevabını ilişkisel veritabanları yine ACID kuralına bağlı kalarak OLTP yerine OLAP veriambarları ile cevaplamaya çalışır. Birer örnek vermek gerekirse ;

mekansal için ;  istanbul şehiriçi ulaşım otobüslerini dikkate alarak en yoğun olan duraklar hangileridir? Binen inen yolcular takip edilerek daha iyi bir güzegah oluşturumu sağlanabilirmi?Nasıl?

veri madenciliği için;Bir üniversite varolan öğrencilerini coğrafya, ekonomik, ve başarı seviyelerine bakarak eğitim kalite standardını nasıl yükseltebilir. Veya müşteri analizi crmler kullanım örnekleri verilebilir.


Gerek lokasyon bazlı uygulamalarda gerekse veri madenciliği alanında sayısız paket program ve uygulama geliştirme ortamları vardır. Bilişim dünyası standartlar konusunda De facto olarak daha hızlı gelişen bir alandır, sektörde pazar payları büyük firmalar arasında farklılıklara yol açmaktadır. Bilgisayar  (/ağ sistemleri) yüklediğiniz işletim sistemleri ve uygulamalar geliştirme platformları ciddi olarak birbirinden ayrılmaktadır. Ulaşım sektörü için karayolunun bir standardı vardır, araçlar için yine bu sözkonusudur. Aldığınız herhangi bir marka otomobil trafiğe çıkabilirsiniz. Fakat bilişimde iş böyle değildir, eğer sisteminiz Apple firmasının macintosh sistemi ise Microsoftun windows sistemine uygun uygulamalarını çalıştıramazsınız. Bir adım öteye giderseniz yani işletim sisteminden bir üst katmana geçerseniz, farklılıklar daha da artmaya başlar. İşin içerisine web, desktop, mobile ortamına özgü frameworkler çıkar. JAVA ve .NET yaygın işletim sisteminden bağımsız geliştirme ortamları sunar. Her ne kadar .NET diğer ortamlarda çalışabiliyor ise de veya  C# bir standardlaştırılmış dil olsa farklı ortamlarda bunu kullanmak zordur, ve çok fazla zaman ve emek ister. İşletim sistemi tercihiyaptınız, frameworke karar verdiğiniz iş bununla da bitmez, daha sonra uygulama platformu ve uygun aracı seçmelisiniz. Bu tür bilişim çözümlerinde farklı alternatifler vardır. .NET üzerine ağırlık vermeyi amaçlamış olsakta, farklı yazılım bunların eksilerine artılarına da burada değinmeye çalışacağız. Dolayısıyle bizim tercihimiz  windows ve desktop uygulamaları.  Bunun için tercihimiz WPF oldu.

WPF nedir?

WPF Windows Presentation Foundation kelimeleri için bir kısaltmadır. Microsotf firmasının 2006 yılında .NET 3.0 içerisinde Avalon adıyla duyurulan, kullanıcı arayüz tasarımında son nesil teknolojisinin ismidir. Hem .Net framework hemde ilgili diğer teknolojiler bütün işletim sistemi platformlarında çalışabilse de WPF Windows ortamında masaüstü uygulamalar geliştirmek için büyük kolaylıklar sağlayan bir ortamdır. .NET frameworkün bir parçasıdır. Bir kütüphanedir.  Bir altsistemdir. Bir kontrol kümesidir.( winforms alışkanlığı olanlar için ingilizce olarak a set of controls). Bir dildir. Bir programlama modelidir.

WPF için en uygun tanımlardan birisi Wrox yazarı Rod Stephens'a ait ;"kullanıcı arayüzü oluşturmak için bir dizi nesnedir". Tanım iki noktaya vurgu yapıyor. Birincisi WPF ile kullanıcı arayüzü oluşturulur, ikincisi ise bir nesne seti yani .NET frameworkün bir alt bileşenidir. Arayüz ne olduğunu anlamakiçin tipikbir masaüstü uygulamasının kullanımını düşünmek yeterlidir. Perncere var, onun içerisinde listeler, resimler ,video lar var, text boxlarla veri girişi yapıyoruz, button ile yeni bir iş yapmasını istiyoruz. V.s. WPF böyle bir arayüz penceresi ve içeriğini oluşturmak için kullanılan bir teknoljidir. Arayüz için gerekli olan bütün kontrollere pencere, açılır liste kutusu, etiket, resim, list box, …. ait sınıfları vardır. Eski Winform  kullanıcıları için   benzer kontrollar vardır, yenileri eklenmiştir. Expander, viewbox, flowdocument gibi. Animation, resource, events, styles, templates oluşturmak için nesneler vardır. Uygulamamızın arayüz kısmı bunların bir alt kümesini kullanarak oluştururuz. XAML ile ilişkilendirilmesine rağmen xaml kullanmak WPF için zorunlu DEĞİLDİR. sadece c# dilini kullanarak bir arayüz oluşturulabilir. Buradaki link hiç xaml kullanmadan bir WPF uygulamasının göstermektedir. Bir arayüz bileşeni tasarım aşamasında *.xmal uzantılı bir dosya ona hareket katacak olan vb veya c# kodu code-behind derleme aşamasında  CIL komutlarına dönüştürülür. XAML içerisindeki her bir tag c# dilindeki yeni bir sınıf örneği oluşturma işlemine ( new keyword ile ilgili class ın ctor u çağrılarak) karşılık gelmektedir.

Bu yazı serisi içerisinde Windows Presentation Foundation konusunda açıklama ve örnekler bulacaksınız.  İçeriğimiz ve formatı aşağıdaki listede ilk sıradaki wrox yayını olmak üzere üç temel referans kitaba bağlı kalarak oluşturulmaktadır. Bu konuda çok daha fazla kitap olmasına rağmen aşağıdaki üç referans kitap basım tarihi açısından en güncel olanlar, ve amazonda yüksek puan alan kitaplardır.
Bu kitaplar ;  
Ayrıntılı ve genel-bilgi aktarımı açısından orta seviyede bir kitaptır. Konuya yeni başlayanlar için okuması ve takibi rahattır. Hem ayrıntılı açıklamaları hemde basit düzeyde anlatım ve örnekleri çok derece faydalıdır. 24 ünitelik kitap yaklaşık 400 sayfa , heyecanlı bir okuyucunun bir ayda rahatça bitirebileceği bir kitaptır. Rod Stphens ın bu kitabı 2010 basımıdır, içerik yeterlidir, .Net 4.5  ve c#2012 yerine bir önceki sürüm için yazılmış olması temel  konularda hiçbir problem oluşturmamaktadır.


 WPF 4 Unleashed
Adam Nathan’ın  bu kitabı teknik ayrıntılara değil, görsel özelliklerin  nasıl bir yapı içerisinde oluşturulduğuna vurgu yapmaktadır, ve bu konuda oldukça başarılıdr.   Arayüz ile fazlaca uğraşmak ve görsel öğelerin nasıl bir yapıya sahip olduğunu ve kullanım örneklerini merak ediyorsanız kullanmanız gereken bir kitaptır.


Pro WPF 4.5 in C#: Windows Presentation Foundation in .NET 4.5

gerçek bir referans bible serisi türü bir kitaptır. WPF en ince ayrıntıları keşfetmek ustalaşmak için kullanılabilecek ve bence bu konuda rakipsiz en iyi kitaptır. Dezavanatjı konuya yeni başlayan biri için takip edilmesi ve başlangıçta bazı yüzeysel bilgilerin kullanımına odaklaması yeterli ikken okuyucunun çok basit özelliklerde ayrıntılara boğulması sürekliliği engeller ve siz bu kitapta daha 5 üniteye gelmeden sıkılmış olursunuz. Yani bütün bir senaryoyu görmek basit uygulamalar yapmak yerine ele alınan konunun tüm yönleriyle açıklanmak istenmesi başlangıç seviyesi okuyucusu için bir bir handıkaptır. Ve okumayı zorlaştırmaktadır. Konu hakkında biraz uzmanlaşınca mutlaka kütüphanenizde bulunması gereken bir başvuru kitabıdır.





WPF; Windows ortamı için günümüz uygulama geliştirme aracıdır. Sanılanın aksine WPF sadece masaüstü uygulamalar geliştirmek için kullanılmaz. Bununla beraber,
  • Sadece birşeylerin bilgilendirme amaçlı gösterildiği basit web sayfaları da oluşturulabilir. Bu konuya yeni başlayanlar için süpriz olmamalı. WPF, görsellik için zaten de xaml kullanmakta, oda bir nevi xml , xml de html dir.  Böylece basit bir html sayfasını wpf ile oluşturmak mümkündür.
  • Silverlight - ilk sürümlerde ismi wpf/e dir (e everywhere için kısaltmadır) - ile güvenliği arttırılmış web uygulamaları geliştirmek de mümkündür. Silverlight ve Adobe firmasının muadil ürünü Flex ürünü web ortamında programcıların alışık olduğu masaüstü uygulama geliştirrme IDE esnekliğinde çalışma sağlanmasını amaçlamıştır.  Bunun ne demek olduğunu anlamak için c# kodununu geçici bir süreliğine notepad yazıp csc HelloWorld.cs ile derleme yaptığınızı düşünmeniz yeterli.
  • Öğrenmesi eski form uygulamalarına göre biraz zaman alıcı olsa da çok gelişmiş özellikleri içermektedir. 
  • Arayüzü bir xaml türü dosyada saklayarak daha esnek bir ortam sağlar.  Arayüz sayfasını DOM yapısı gibi hiyerarşik bir yapıda inceleme ve güncelleme imkanı vardır.
  • Formlardan farklı olarak herhangi bir kontrolün içeriğini başka bir control olmasına imkan sağlar. Çizim, multimedia, grafik kütüphanesi gelişmiştir. style, animasyon, geometrik dönüşümler, 3D grafik yeteneği ,vektör grafikleri destekler.