24 Aralık 2008

MSP Türkiye Ekibi Teknoloji Meraklıları ile Buluşuyor

Microsoft Student Partner Türkiye ekibi bu hafta sonu Çankaya Üniversitesi'nde gerçekleştirilecek süper bir etkinlikle teknolojistleri ağırlayacak. MSP Days olarak adlandırdıkları bu etkinlikte birçok sunum olacak ve yeni teknolojiler tanıtılacak. Özellikle Ankaralı teknoloji meraklılarının ilgisini çekeceğini düşünüyorum. Detaylı bilgileri www.mspdays.com adresinden alabilirsiniz.

Tüm MSP arkadaşları buradan tebrik ediyorum. Gerçekten de önemli bir işin altına imza atacaklar böyle büyük bir etkinliği gerçekleştirerek.

23 Aralık 2008

Boğaziçi Üniversitesi'ndeydim

Gençsen Geleceksin 2.0 Türkiye Turu kapsamında bugün Boğaziçi Üniversitesi'ndeydim. Microsoft adına yakın geleceğin yazılım teknolojileri üzerine konuştuğum seminer diğer Gençsen Geleceksin etkinlikleri gibi oldukça renkli geçti. Tabi süre yeterli olmadığı için yine sunumun son kısımlarını çok hızlı geçmek durumunda kaldım. Öğrencilerin özellikle cloud computing ve Windows Azure ile yakından ilgilenmeleri ve beni soru yağmuruna tutmaları bu etkinliğin ilginç yönlerinden biriydi.

Boğaziçi Üniversitesi - Gençsen Geleceksin 2.0 Semineri
Etkinlik sonrasında bazı katılımcılarla çekildiğimiz günün hatıra fotoğrafı

Etkinlikte emeği geçen başta Ege Akpınar ve diğer MSP arkadaşlara, Boğaziçi COMPEC(Bilişim Kulübü)'teki arkadaşlarıma teşekkürlerimi sunuyorum. Yarın İstanbul Üniversitesi'nde C# Workshop etkinliğinde olacağım. Yeni izlenimlerimi yarında blogumda paylaşmak umuduyla

22 Aralık 2008

Windows Ürünlerinin Kod İsimleri

Bildiğiniz gibi Microsoft çıkaracağı birçok ürünü daha beta aşamasındayken belirli kod isimleri(codename) vererek duyurmakta ve bizi gelecekteki yeniliklere çok erkenden ısındırmakta. Birkaç tane codename sayın desem aklınıza ilk hangileri gelir acaba? Whidbey, Orcas, Yukon, Longhorn vb...

Wikipedia'da karşılaştığım bir linke bakınca aslında Microsoft'un geçmişten beri codename'i ciddi bir standart halinde kullandığını gördüm. Bu sayfadan hem codename geçmişine göz atabilir, hem de kısaca zamanda yolculuk yaparak nereden nereye gelmişiz görebilirsiniz. Nerede Windows 3.1, nerede Windows Vista :)

20 Aralık 2008

WPF Uygulamalarında DocumentViewer ile XPS Dokümanlarının Görüntülenmesi

XPS, Windows Vista ile birlikte kullanımı gittikçe yaygınlaşan bir dosya formatı. Word, Excel, Powerpoint dosyalarını XPS formatına çevirerek Office kurulu olmayan bir bilgisayarda dahi Internet Explorer 7 gibi bir tarayıcı üzerinde görüntüleyebiliyoruz. Bu yazıda kullanımı yaygınlaşan XPS formatınındaki dosyaları WPF(Windows Presentation Foundation) uygulamalarında DocumentViewer kontrolüyle nasıl görüntüleyebileceğimizi anlatmaya çalışacağım.

WPF ile gelen kontrollerimizden olan DocumentView üzerinde bir XPS dosyası görüntüleyebilmek için XpsDocument tipinden bir nesneye ihtiyacımız olacaktır. mscorlib.dll'de bulunmayan bu sınıf için ReachFramework.dll'i projemize eklememiz gerekiyor.

ReachFramework.dll'in Add Reference seçeneğinden seçilmesi
ReachFramework.dll'in proje referanslarına eklenmesi

İlgili dll dosyasını projemizin referanslarına ekledikten sonra artık uygulamamıza geçebiliriz. Yapacağımız işlem oldukça basit aslında; penceremize bir tane DocumentViewer kontrolü ekliyor ve pencerenin Loaded event'ine aşağıda gördüğünüz iki satırlık ifadeyi ekliyoruz.

Window1.xaml

<Window x:Class="WpfDocumentViewerXps.Window1"

   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   Title="DocumentViewer ile XPS Dosyalarının Görüntülemesi" Height="320" Width="600">

    <Grid>

        <DocumentViewer Name="documentViewer1" />

    </Grid>

</Window>

Window1.xaml.cs

...

using System.Windows.Xps.Packaging; //Gerekli isim alanı

namespace WpfDocumentViewerXps

{

    public partial class Window1 : Window

    {

        public Window1()

        {

            InitializeComponent();

        }

 

        private void Window_Loaded(object sender, RoutedEventArgs e)

        {

            //XpsDocument nesnesi belirtilen yoldaki dosya içeriğini

            //GetFixedDocumentSequence metodu ile kontrolümüze sunacaktır

            XpsDocument xps = new XpsDocument(@"D:\test.xps", System.IO.FileAccess.Read);

            documentViewer1.Document = xps.GetFixedDocumentSequence();

        }

    }

}

DocumentViewer ile XPS dokümanını görüntüledik
DocumentView'da görüntülenen XPS dokümanı

14 Aralık 2008

Widgetlar ile nedirtv?com İçeriklerini Websitenizde Yayınlayın

nedirtv?com Widgetnedirtv'nin 2.0 versiyonu üzerinde çalışmalarımız devam ederken sizlere önemli yeniliklerimizden birini tanıtmak istedim: nedirtv?com Widget. Basit olarak belirli bir nedirtv içeriğini websitenizde, blog sitenizde yayınlayabilmenizi amaçladığımız bu eklenti aslında benim blogumda uzun zamandır da yayında(Sağ kısımda görebilirsiniz). Şimdilik kategori ve editör seçeneklerinde oluşturulabilen widgetlar ile seçilen kategoriye veya editöre ait son videolar listesini sitenizde yayınlayabilirsiniz. Editör seçeneğinin daha ziyade editörlere hitap ettiğini düşünecek olursak, aslında ziyaretçilerinize sunmak istediğiniz kategoriye göre widget'lar oluşturmak dikkatinizi çekecektir diye tahmin ediyorum. Gelelim widget'ı sitenize nasıl ekleyeceğinize;

- Widget sayfasından istediğiniz kategoriyi veya editörü seçin ve ardından Widget Oluştur butonuna tıklayın.

- Oluşan widgetın önizlemesini sayfanın sağ kısmında görebilirsiniz. Kaynak Kod kutusunda yer alan kodları sitenizde görüntülenmesini istediğiniz yere ekleyin. Bu kadar :)

nedirtv'yi izlemeye devam edin :)

11 Aralık 2008

Veri Kaynağı Olan DropDownList'e Item Ekleme

DropDownList kontrolüne veritabanından getirilen kayıtları yüklememiz durumunda çoğu zaman ilk seçeneğin kullanıcıyı bilgilendirecek bir metin olmasını isteriz. "Bir şehir seçin", "Bir kategori seçin"... gibi bir seçeneğin ilk item olması, devamında da veritabanından gelen item'ların sıralanması eminim ki her uygulamada ihtiyaç olan bir durumdur. Tabi ki veritabanındaki Sehirler tablosunda "Bir şehir seçin" diye bir kayıt eklemek mantıklı olmayacağına göre farklı bir çözüm yolu üretmek gerekli! Sorunu SQL Server tarafında çözmek istersek UNION ifadesi kullanılabilir. Fakat bu yazımda biraz daha farklı bir yoldan bahsetmek istiyorum.

Yapacağımız işlem son derece basit ve kullanışlı bir çözüm yolu olacak. İlk olarak bilgilendirme metnini DropDownList kontrolüne görsel kısımdan ListItem olarak ekliyoruz. Items koleksiyonuna bilgilendirme metnini ekliyoruz. Ardından DropDownList'in AppendDataBoundItems özelliğini true olarak değiştiriyoruz. Eklediğimiz seçenek artık DropDownList kontrolüne item olarak eklenecektir.

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True"

    DataSourceID="SqlDataSource1" DataTextField="SehirAdi" DataValueField="SehirId">

    <asp:ListItem Value="-1">Bir şehir seçin</asp:ListItem>

</asp:DropDownList>

AppendDataBoundItems

UNION, UNION ALL ifadelerine alternatif olacak, aklınızda bulunması gereken bir ipucu...

07 Aralık 2008

İstanbul Kültür Üniversitesi'ndeydim

4 Aralık 2008 Perşembe günü İstanbul Kültür Üniversitesi'nde ASP.NET 3.5 ve LINQ seminerini gerçekleştirdim. Bugüne kadar ki en şanssız seminerimdi diyebilirim bu etkinlik için, zira dizüstü bilgisayarımdan kaynaklanan bir problemden dolayı etkinliği maalesef saat 10.00 yerine 12.00'da başlatmak zorunda kaldık. 2 saatlik bir gecikme elbetteki kulağa hoş gelmiyor ama Visual Studio 2008 ve SQL Server 2005 kurulu bir bilgisayarı bulmak bize yaklaşık 2 saate maloldu :) 2 saat boyunca bizleri sabırla bekleyen katılımcılara buradan tekrar teşekkür etmek istiyorum.

İyisiyle kötüsüyle ilginç bir etkinlik olarak anılarımda yer aldı İstanbul Kültür Üniversitesi semineri. Etkinlikte kullandığım sunum dosyasına ve örnek projeye aşağıdaki linklerden ulaşabilirsiniz.

Proje
ASP.NET 3.5 ve LINQ Sunum

İstanbul Kültür Üniversitesi - ASP.NET 3.5 ve LINQ Seminerinden... 
İstanbul Kültür Üniversitesi seminerinden bir kare

03 Aralık 2008

Gebze Yüksek Teknoloji Enstitüsü'ndeydim

Dün Gençsen Geleceksin 2.0 etkinliği dahilinde Gebze Yüksek Teknoloji Enstitüsü'ndeydim. Katılımcı arkadaşlarla iki saate yakın süre içerisinde Microsoft'un gelecek yazılım teknolojileri ve bu teknolojilerin oluşturacağı iş fırsatları üzerine konuşmalar gerçekleştirdim. Sınav dönemi olmasına rağmen üniversite öğrencilerinin yüksek katılım gösterdiği etkinlikte, öğrenciler açısından gelecekteki yazılım teknolojileri hakkında olumlu ve faydalı izlenimler bıraktığımı düşünüyorum.

_MG_2149
Etkinlik sonrası günün hatırası olarak çekildiğimiz bir resim.

Etkinlikte emeği geçen ve organizasyonda bizlere yardımcı olan MSP Ö.Faruk Özdemir'e ve GYTE IEEE Öğrenci Kolu'na teşekkürlerimi sunuyorum. Etkinlikle ilgili Facebook fotoğraf albümüne bu link üzerinden erişebilirsiniz.

02 Aralık 2008

ASP.NET 3.5 Chart Kontrolü - Kurulum ve İlk Grafik Raporumuz

Veritabanında saklanılan kayıtlarla web sitelerimizde raporlama yaparken grafiksel tablolar oluşturmak en önemli ihtiyaçlarımızdan birisidir. ASP.NET uygulamalarında bu tip ihtiyaçları gidermek için GDI+ nesnelerini kullanabileceğimiz gibi üçüncü parti kontrollerden de faydalanabiliriz. GDI+ nesnelerinin kullanımının zorluğu ve oluşturacağımız şekillerin çokta göze hoş gelmeyeceğini söylemeye gerek yok sanırım. Üçüncü parti kontrollerinde ücretli olması, ücretsiz dağıtılanlarında çok kullanışlı olmaması bizleri bugüne kadar çok zengin olmayan grafik tablolarla çalışmak zorunda bırakmıştır. Microsoft'un geçtiğimiz günlerde kullanıma açtığı Chart adındaki kontrol ile herhangi bir üçüncü parti kontrole veya GDI+ nesnelerine gerek kalmadan çok hızlı şekilde mükemmel grafik tablolar üretebilmekteyiz. Bu yazımızda Chart kontrolünün kurulumunu ve bu kontrol ile temel bir grafik tablosunun nasıl oluşturulabileceğini inceleyeceğiz. Aşağıdaki Chart kontrolüyle hazırlanmış birkaç grafik tablo sanırım bizleri ne tarz grafikler oluşturabileceğimiz konusunda heyecanlandıracaktır!

ASP.NET 3.5 - Chart kontrolünün kullanımına örnekler
Resim: ASP.NET 3.5 Chart kontrolüyle hazırlanmış örnek grafik tablolar

Daha önceden Dundas isimli chart kontrolleri üreten firmanın hazırladığı kontrolleri inceleme fırsatınız olduysa aslında yukarıdaki grafikler size çokta yabancı gelmeyecektir. Zira geçtiğimiz yıllarda Microsoft'un yaptığı yatırımlar sonucunda Dundas grafiklerinin Microsoft uygulamalarında ücretsiz şekilde kullanılması planlanıyordu. Bu yazımızda inceleyeceğimiz Chart kontrolü bu çalışmaların sonucunda .NET Framework'ün yapısına katılıyor. Şu an için .NET Framework'ün 3.5 SP1 sürümü üzerinde çalışan bu kontrolün .NET Framework 4.0 ile artık mimariyle bütünleşik olması bekleniyor.

Gelelim kontrolü nasıl temin edip kullanabileceğimize. Yukarıdaki paragraftanda anlaşılacağı gibi Chart kontrolünü kullanan uygulamamız .NET Framework 3.5 SP1 üzerinde çalışıyor olmalı. Yine Visual Studio 2008'de bu kontrolü sorunsuz şekilde kullanmak için Visual Studio 2008 SP1'in de kurulu olması gerekiyor. Chart kontrolü .NET Framework 3.5 ile bütünleşik gelmediği için iki farklı dosyayı bilgisayarımıza indirmemiz ve kurmamız gerekecek. Bu dosyaları aşağıdaki linklerden indirebilirsiniz.

Microsoft Chart Kontrolü
Chart kontrolü için Visual Studio 2008 eklentisi

Yine bu linkten indireceğiniz örnek projeden Chart kontrolü kullanılarak hazırlanmış birçok grafiği inceleyebilirsiniz. Yukarıdaki dosyaların kurulumlarını yaptıktan sonra Visual Studio 2008 üzerinde geliştireceğimiz bir projede Chart kontrolünü inceleyebiliriz.

Öncelikli olarak Chart kontrolünün tıpkı DataList, GridView vb. veri kontrollerinde olduğu gibi DataSource nesneleriyle çalıştığını söyleyebiliriz. Yani veritabanından veya bir nesneden gelen verilerin bu kontrole DataSource özelliği üzerinden bağlanması gerekecektir. Veritabanından gelen kayıtların key-value çifti şeklinde iki kolona sahip olması grafik raporu oluşturmak için yeterli olacaktır(Mağaza-Satış miktarı, Öğrenci-Not ortalaması gibi). Bu ilk örneğimizde Northwind veritabanındaki Product tablosundan belirli bir kategoride yer alan ürünlerin fiyatlarını grafik tablo üzerinde çizmeye çalışalım. Gerekli bileşenleri kurduğumuzda Chart kontrolü Toolbox'ın Data kısmındaki kontrollerin içerisinde bulunacaktır. Bu kontrolü  formumuz üzerine sürükleyip bırakıyoruz.

HTML kodlarında görüleceği gibi Chart kontrolünün içerisinde Series ve ChartAreas adında iki alt elementi bulunmaktadır. Bu iki element aslında Chart kontrolü üzerinde yapılacak değişikliklerde en sık kullanacağımız kısımlardır. Bu elementlere aynı isimleriyle Chart kontrolünü seçip Properties penceresinden de erişebiliriz. Dilerseniz bu kontroller üzerinde işlemler yapmadan önce ilk olarak Chart kontrolünü veriye bağlayalım. Zira grafiğin bize sunacağı bilgiler bir veri kaynağından gelecektir. Bu işlem için sürükleyip bıraktığımız Chart kontrolünün sağ üst köşesindeki smart tag ikonundan açılan penceredeki Choose Data Source kutusundan New Data Source seçeneğine tıklıyor ve karşımıza çıkan pencereden bir veri kaynağına bağlanıyoruz. Burada SQL Server'da bulunan Northwind isimli veritabanının içerisindeki Products tablosu ile çalışıyor olacağız. Çalıştıracağımız sorgu SELECT ProductName, UnitPrice FROM Products WHERE CategoryID = 4 olacak.
 
Resim: SqlDataSource kontrolüyle Products tablosunda sorgunun oluşturulması

DataSource bağlama işlemi tabi ki grafiğin çizilmesi için yeterli olmayacaktır. Sonuç kümesinde getirilen hangi kolon kategori, hangi kolon değer taşıyan olacak, bunları da belirtmemiz gerekecektir. Chart kontrolümüzün Series özelliği görüntülenecek grafiğin biçimi, formatı ve görüntülenecek kolonlarla alakalı bilgieri saklamaktadır. Series koleksiyonu içerisindeki içerisindeki XValueMember özelliği X doğrusunda kullanılacak kolonu (sorgu sonucunda gelecek kolonlardan birisi), YValueMember özelliği ise Y doğrusunda kullanılacak kolonu saklar. X doğrultusunda ürün isimlerini, Y doğrultusunda da fiyatları grafik olarak çizdireceğimiz için XValueMember'a ProductName,  YValueMember'a da UnitPrice değerlerini atıyoruz. Tabi ki burada akla gelen bir diğer soru da farklı şekillerde grafikleri nasıl oluşturabileceğiz olacaktır. Yine Series özelliği içerisindeki ChartType özelliğinden de oluşturulacak grafiğin şekli seçilebilir. ChartType seçim kutusunda karşımıza çıkan bol miktardaki grafikler gerçektende ne kadar farklı grafik tabloları üretebileceğimzin bir göstergesi! Aşağıdaki resimlerde bu seçimlerin yapıldığı özellikleri görebilirsiniz.

Chart Series - Member Seçimi
Resim: XValueMember ve YValueMember özelliklerinden X ve Y doğrultusunda kullanılacak kolonların seçilmesi

Chart Series - Chart Tipi Seçimi  
Resim: ChartType özelliğinden grafik tipinin seçilmesi

Yapılan değişikliklerin ardından Chart ve SqlDataSource kontrolümüzün oluşturacağı HTML kodlarını aşağıdan görebilirsiniz. Kodlardan da görüldüğü gibi Chart kontrolüne bağlanacak data source kontrolü ve değiştirilecek birkaç özelliğin sonucunda görsel olarak oldukça hoş bir grafik tablosu elde edebiliriz. Sayfamızı çalıştırdığımızda aşağıdaki resimde görülen grafiği elde edebiliriz.

<asp:Chart ID="Chart1" runat="server" DataSourceID="SqlDataSource1" Width="450px" Height="450px">

    <Series>

        <asp:Series Name="Series1" XValueMember="ProductName" YValueMembers="UnitPrice"

            ChartType="Pie">

        </asp:Series>

    </Series>

    <ChartAreas>

        <asp:ChartArea Name="ChartArea1">

        </asp:ChartArea>

    </ChartAreas>

</asp:Chart>

 

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

    ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"

    SelectCommand="SELECT [ProductName], [UnitPrice] FROM [Products] WHERE ([CategoryID] = @CategoryID)">

    <SelectParameters>

        <asp:Parameter DefaultValue="4" Name="CategoryID" Type="Int32" />

    </SelectParameters>

</asp:SqlDataSource>

Chart kontrolü ilk grafik tablosu
Resim: Oluşturduğumuz ilk chart tablomuz