Mesut KOSUCU
Developer Mesut = new Developer(); RSS 2.0   
İletişim
mkosucu@gmail.com
 Sunday, February 24, 2008
Microsoft DreamPark

Geçtiğimiz günlerde Microsoft, DreamPark isimli öğrenci paketini duyurdu. Bu paketin amacı, bilgisayar teknolojileri alanında eğitim gören üniversite öğrencilerine, Microsoft ürünlerini ücretsiz olarak vermek ve kullanımını yaygınlaştırmak.

Paketin içinde, Visual Studio 2008 Professional, SQL SERVER 2005 Developer Edition, Windows 2003 Server Standard, Microsoft Epression ve XNA Game Developer Studio var.

Ürünleri indirebilmek için doğrulama yapmanız gerekiyor, ama kötü olan tarafı, listede Türkiye üniversiteleri yok! Ben kişisel olarak Microsofta mail attım, bu iletiyi okuyan arkadaşlarda Türkiye üniversitelerinin sisteme dahil edilmesi konusunda şikayetlerini yazarlarsa sanırım bizim üniversitelerimizide eklerler. En azından benim temennim bu.

Kayıt ve Yükleme için tıklayınız.

İyi Çalışmalar
Sunday, February 24, 2008 3:31:59 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] -


Visual Studio
Visual Studio 2008 Hotfix (KB946581)

Visual Studio 2008 ile web sayfası geliştirirken, editör yavaşlığı ve perfomans problemini ortadan kaldıran "hotfix" yayınlandı. Eğer VS 2008 ile web sayfası geliştiriorsanız, yaklaşık 2.6 Mb boyutunda olan dosyayı indirip kurmanızı tavsiye ediyorum.

Dosyayı indirmek için tıklayınız.

Kolay Gelsin
Sunday, February 24, 2008 3:23:55 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] -


Visual Studio
 Tuesday, January 22, 2008
Hashtable Kullanımı

Bu kısa yazıda System.Collection.Hashtable sınıfını kullanarak iki boyutlu veriyi nasıl saklayacağımız, veriye nasıl erişeceğimizden  bahsedeceğim.

Öncelikle, genelde yazılım içinde veri saklayacağım zaman çok boyutlu veya tek boyutlu dizileri kullanarak, yapmak istediklerimi yapabiliyordum. Ama bazen dizilerin ihtiyaçlarımızı karşılamadığı zamanlar oluyor. Bu durumda Hashtable denen sınıfa başvurarak, daha esnek veri saklayabiliyoruz.

Nedir bu Hashtable? Hashtable, iki boyutlu veri saklayıp, bu verilere KEY ve VALUE özellikleri ile ulaşabileceğimzi bir yapıdır. Örneğin bir kurumsal uygulamada, Müşteri Temsilcisinin SicilNo ve Aldığı Primi tutup işlem yapmanız gerekiyor(bu örnek gerçek olduğu için veriyorum, aynı durumu yaşadım). Bu durumda oluşturacağınız bir Hashtable a KEY değerine SicilNo'yu, VALUE değerine ise Primi kaydedip işlemlerinizi yapabilir ve bu tabloda SicilNo vererek, Prim'e ulaşabilirsiniz.Yani;

SicilNO Prim
1000 1000
1001 5000
1002 4550
1003 7899


İyide ben bunu Array kullanarak yaparım derseniz, işte Array ile Hashtable arasındaki bir kaç temel fark;

1) Array'a değere ulaşmak için index belirtmek durumundasınız, burda KEY özelliğini vererek değere ulaşabilirsiniz. Böylece değerin hangi indexte tutulduğunu bilmek durumda kalmazsınız.

2) Array tanımlarken, array üzerinde tutacağınız element sayısını başta belirtmek durumundasınız. Hashtable de buna gerek yoktur. İsterseniz belirtebilirsiniz, belirtmezseniz Hashtable 'ın boyutu sizin eklediğiniz element sayısı kadar olur.

3) Array de tek tip veri tutabilirsiniz, INT, STRING veya herhangi bir tip, buna karşılık Hashtable da tuttuğunuz verinin tipi önemli değildir. İstediniz her tip veriyi saklayabilirsiniz.

Not: Hashtable tablosu, değerleri "hash code" olarak sakladığından, sıralama(sorting) özelliğini desteklememektedir.

Şimdi C# Kullanarak nasıl bir Hashtable oluşturup ve bu tabloya nasıl değer ekleyeceğimize ve eklediğimiz değerleri nasıl alacağımıza bakalım.

Öncelikle Hashtable sınıfının bi örneğini oluşturalım;

System.Collections.Hashtable _table = new System.Collections.Hashtable();

Hashtable onbeş tane yapılandırıcıya(constructor) sahiptir. Bunlardan önemli bir kaçından bahsetmek gerekirse;

Örneğin tablonuzun kapasitesini belirtmek istiyorsunuz bunu yapmak için aşağıdaki kodu kullanabilirsiniz

 System.Collections.Hashtable _table = new System.Collections.Hashtable(4);

Veya, tablonuzda fazla veri ile çalışıyorsanız ve perfomans sizin için önemli ise, tablonuzda loadfactor ekleyebilirsiniz.

 System.Collections.Hashtable _table = new System.Collections.Hashtable(4,float(.6));

Peki bu loadfactor nedir? Load factor, temel olarak tablonuzun hangi doluluk oranına ulaştığında yeniden yaratılıp mevcut verileri yerlerine koyup, yeni veriyi tabloya ekleyeceğini gösterir. Örneğin, siz loadfactor' u 0.6 verdiğinizde, bu tablonuzun %60 doluluk oranına ulaştığında tablo yeniden yaratılıp eklemeye devam edeceğini gösterir. Kaynaklarda, önerilen loadfactor %60 olarak belirtilmektedir.

Yukarıdaki gibi bir Hashtable oluşturduktan sonra, tablomuza eklemeleri aşağıdaki gibi yapabilriz.

_table.Add(1000, 1000);
_table.Add(1001, 5000);
_table.Add(1002, 4550);
_table.Add(1003 7899);

Bu işlemin sonucunda, yukarıdaki SicilNO-Prim tablosu yapısını oluşturmuş olduk. Şimdi bu tablodan istediğimiz sicil numarasını vererek bu kişinin prim bilgisine ulaşabiliriz. Örneğin 1000 sicil numaralı kişinin prim bilgisini mesaj kutusunda göstermek istiyorsak, aşağıdaki kodu yazmamız yeterlidir.

MessageBox.Show(_table[1001].ToString());

Bunun yanında, Hashtable'a kaydedilen her değer element bir DictionartEnrty(System.Collection.DictionaryEntry)' dir. Eğer tablomuz içindeki elementleri ve değerleri bir döngü yardımı ile almak istiyorsak, bunun için iki yol kullanabiliriz.

1) foreach (DictionaryEntry _dic in _table)
    {
         MessageBox.Show(_dic.Key.ToString());
         MessageBox.Show(_dic.Value.ToString());
    }

2) IDictionaryEnumerator _enum = _table.GetEnumerator();                                                       

     while (_enum.MoveNext())
     {
            MessageBox.Show(_enum.Key.ToString());
            MessageBox.Show(_enum.Value.ToString());
      }

Bu iki yöntemi kullanarak tablonuzdaki değerlere ulaşmanız mümkün.

Bu yazıda kısaca Hashtable kullanımını anlatmaya çalıştım. Umarım  faydalı olur. Herhangi bir sorunuz olduğunda cevaplamaktan mutluluk duyarım.

İyi Çalışmalar.

 

Tuesday, January 22, 2008 2:44:37 AM (GMT Standard Time, UTC+00:00)  #    Comments [1] -


Visual Studio
 Sunday, January 20, 2008
Microsoft .NET Framework Kaynak Kodlarını Yayınladı

Geçtiğimiz günlerde Microsoft aşağıda isimlerini yazığım namespace'lerin Visual Studio 2008 için kaynak kodlarını yayınladı. IDE üzerinde yaptığınız bir kaç ayar ile bu namespace'lerin karnak kodlarını görebilirsiniz. Bu namespace'ler

  • .NET Base Class Libraries (including System, System.CodeDom, System.Collections, System.ComponentModel, System.Diagnostics, System.Drawing, System.Globalization, System.IO, System.Net, System.Reflection, System.Runtime, System.Security, System.Text, System.Threading, etc).
  • ASP.NET (System.Web, System.Web.Extensions)
  • Windows Forms (System.Windows.Forms)
  • Windows Presentation Foundation (System.Windows)
  • ADO.NET and XML (System.Data and System.Xml)

Gerekli ayarlamaları anlatan güzel bir makale ise Shawn Burke' nin blogunda. Makaleyi okumak için tıklayınız.

 

Kolay Gelsin

Sunday, January 20, 2008 1:46:51 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] -


Visual Studio
 Wednesday, January 09, 2008
eXppress Application Framework

Uzun süredir üçüncü parti bileşen(component) firmalarındaki gelişmeleri yakından takip ediyorum. Yazılım platformları geliştikçe, büyük bileşen firmaları kendilerini daha çok aşıyorlar. Ürünlerini yakından takip ettiğim Developer Express Inc ve Infragistics Inc, ulu orta yapmasalarda kapalı kapılar ardında büyük bir rekabet içindeler. .NET Framework 3.0 ile WPF bileşenlerinde hızlı adım adım atan Infragistics Inc. WPF alanında rakiplerine göre büyük yol kat etti. Benimde kurumsal olarak bileşenlerini beğenerek kullandığım Developer Express Inc.  ise buna karşı bir atak olarak, kurumsal uygulama geliştirme çatısı olan eXpress Application Framework ürününü piyasaya sürdü.

Uzun bir süredir incelediğim ve çok beğendiğim XAF(eXpress Application Framework)'te yazılımcıların nefret ettiği bir çok yorucu kodlamayı profesyonel bir şekilde ortadan kaldırılmış. Yine Developer Express e ait olan XPO(eXpress Persistent Object) isimli ORM(Object Relational Map) aracı ile entegre çalışan bu framework ile, yazılımcıların günlerini alan uygulamalar saatler içinde yapılabilir durumda. Basit bir örnek verecek olursak, mesela bir adres defteri yapmak istiyorsunuz(tabiki bu kurumsal bir uygulama değil ama, ürünün işlerimizi nasıl kolaylaştırdığına örnek için). Sizin yapmanız gereken sadece, veritabanı tablolarınızı sınıflar olarak tasarlamak ve uygulamaya eklemek. Bundan sonra, ekle, sil güncelle, listele, güvenlik ayarları, yetkilendirme, çıktı alma, excel'e word'e çevirme gibi işlemler framework tarafından sizin adınıza tasarlanıyor. Yapmanız gereken uygulamayı derlemek ve çalıştırmak. Şunuda eklemek gerekirki, yazılımcılar hala kod yazmak durumundalar, ama zaman alan rutin kodlar değil.

Ürün hakkında merak ettikleriniz varsa www.devexpress.com adresinden daha detayı bilgi alabilirsiniz. Denem sürümünü indirip kullanabilirsiniz.

Kolay Gelsin

 

Wednesday, January 09, 2008 4:56:22 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] -


Visual Studio
 Tuesday, November 20, 2007
VS 2008 & .NET 3.5 Videoları

VS 2008 ile .NET 3.5 hakkında yirmiye yakın faydalı videoya buraya tıklayarak ulaşabilirsiniz. Videoları, WMV, Zune, IPod, PSP, MPEG-4 ve 3GP formatlarının tamamında izleme ve indirme şansınızda var.

Kolay Gelsin

Tuesday, November 20, 2007 11:16:48 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] -


Visual Studio
Visual Studio 2008 ve .NET Framework Yayınlandı

Merakla beklenen Visual Studio 2008 ve .NET Framework 3.5 MSDN üyeleri için yayınlandı. Şu an sadece Premium üyelerin indirebildiği Visual Studio 2005 ve .NET Framework 3.5 in, Professional sürümü yenüz deneme sürümü olarak bile olsa, indirilemiyor. Şu an sadece Team Suite sürümünü 90 günlük deneme sürümü ile indirebiliyorsunuz. Bunun yanında, öğrenciler için olan C++, C#, VB.NET, Visual Web Developer ve SQL Server Express sürümünü buraya  tıklayarak indirebilirsiniz. Muhtemelen Professional sürümünüde haftaya indiriyor olacağız.

Visual Studio 2008 ve .NET Framework hakkındaki gelişmeleri Scott Guthrie' nin blogundan takip edebilirsiniz. Özellikle yeni ORM teknolojisi olan Linq hakkındaki makaleleri çok faydalı.

İyi Eğlenceler

 

Tuesday, November 20, 2007 1:31:36 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] -


Visual Studio
 Thursday, November 15, 2007
Developer Express'in WPF Hakkındaki Yazısı

Kullananlar bilirler, Developer Express dünyanın önde gelen, MS Framework, Delphi ve ActiveX kontrolleri geliştiren firmalarından birisidir. Infragistics ile Developer Express arasında büyük bir rekabet yaşanmaktadır. Bildiğiniz üzere bu Visual Studio 2008 RTM ve Framework 3.5 Final Version görücüye çıkıyor, Infragistics firması bu finali beklemeden, DataGrid ve bunun yanında bir kaç bileşenini WPF(Windows Presentation Foundation) platformuna geçirdi. Bu konuda geride kalan Developer Express firması, ben dahil:) müşterilerinin neden WPF'de bir gelişme yok, bakın Infragistic's yaptı sizde bi hareket yok gibi sözlerine maruz kaldılar. Sanırım sorulardan gerildiler ki, durumlarını, planlarını, neden acele davranmadıklarını açıklayan güzel bi yazı,  Julian M Bucknall tarafından dün şirketin resmi web sayfası olan, www.devexpress.com adresinde,

http://community.devexpress.com/blogs/ctodx/archive/2007/11/14/wpf-grid-where-the-bleedin-edge-can-be-sharp.aspx linki altında yayınlandı. Umarım ilginizi çeker...

Thursday, November 15, 2007 5:10:04 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] -


Visual Studio
C# Kullanarak Dosyaların Icon'larını Ulaşma

Bazen yazılım geliştiriciler OpenFileDialog kullanılarak seçtiğiniz bir dosyanın icon'unu alma ihtiyacı duyuyorlar. Araştırdığım kadarıyla, bunun için Framewok 2.0'da herhangi bir yönetilebilen(managed) kod yok, onun için bu işlemi API yani yönetileyen(Unmanaged) kod ile yapmamız gerekiyor. İnternette yaptığım küçük araştırma sonucu nasıl yapılacağını anlatan bir MSDN kaynağına ulaştım.  Aşağıdaki kısım, bahsettiğim kodun yönetilemeyen kısmı.

#region Unmanaged Code
    [StructLayout(LayoutKind.Sequential)]
    public struct SHFILEINFO
    {
        public IntPtr hIcon;
        public IntPtr iIcon;
        public uint dwAttributes;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szDisplayName;

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
        public string szTypeName;
    };
    class Win32
    {
        public const uint SHGFI_ICON = 0x100;
        public const uint SHGFI_LARGEICON = 0x0;    // 'Large icon
        public const uint SHGFI_SMALLICON = 0x1;    // 'Small icon

        [DllImport("shell32.dll")]
        public static extern IntPtr SHGetFileInfo(string pszPath,
                                    uint dwFileAttributes,
                                    ref SHFILEINFO psfi,
                                    uint cbSizeFileInfo,
                                    uint uFlags);
    }

    #endregion


 Bu Win32 isimli sınıfı nasıl kullanmamıza gelince;

Aşağıdaki küçük kod ile ile istediğiniz dosyanın büyük ve küçük icon'larına ulaşmanız mümkün.

            IntPtr hImgSmall;    //sistemin resim listelerine ulaşım
            IntPtr hImgLarge;    //sistemin resim listelerine ulaşım
            string strFileName;        // icon'unu alacağımız dosya adı.

            SHFILEINFO shinfo = new SHFILEINFO();


            this.OpenFileAttahcment.InitialDirectory = "c:\\";
            OpenFileAttahcment.Filter = "All files (*.*)|*.*";
            OpenFileAttahcment.FilterIndex = 2;


            OpenFileAttahcment.RestoreDirectory = true;


            if (OpenFileAttahcment.ShowDialog() == DialogResult.OK)
            {
                strFileName = OpenFileAttahcment.FileName;
                //dosyanın iconunun küçük formatına ulaşım
                hImgSmall = Win32.SHGetFileInfo(strFileName, 0, ref shinfo,
                                               (uint)Marshal.SizeOf(shinfo),
                                                Win32.SHGFI_ICON |
                                                Win32.SHGFI_SMALLICON);

                //dosyanın iconunun küçük formatına ulaşım
                hImgLarge = Win32.SHGetFileInfo(strFileName, 0,
                ref shinfo, (uint)Marshal.SizeOf(shinfo),
                Win32.SHGFI_ICON | Win32.SHGFI_LARGEICON);

                System.Drawing.Icon myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon);

                FileInfo fInfo = new FileInfo(OpenFileAttahcment.FileName.ToString());



                FileStream fStream = new FileStream(OpenFileAttahcment.FileName.ToString(),
             FileMode.Open, FileAccess.Read);

                BinaryReader br = new BinaryReader(fStream);
                long numBytes = fInfo.Length;
                byte[] data = br.ReadBytes((int)numBytes);


                br.Close();

                fStream.Close();

Hepsi bu kadar... Yapmanız gereken, myIcon değişkenini istediğiniz yerde kullanmak.

Umarım yararlı olur...

 

Thursday, November 15, 2007 3:35:25 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] -


Visual Studio
Kategoriler
 Genel
 Politika
 Teknoloji
 Visual Studio
Navigasyon
The Code Project
Developer Express Inc.
ASP.NET
Martin Fowler
WindowsClient.net
Takip Ettiklerim
 Engineering Windows 7
 Hasan Ayaz
 Hasan Ayaz / Technojection
 Kıvanç Özüölmez
 Martin Fowler
 Mehmet Nuri Çankaya
 Murat Yılmaz
 Tamer Öz
Arşiv
<September 2008>
SunMonTueWedThuFriSat
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011
İstatistikler
Total Posts: 38
This Year: 17
This Month: 0
This Week: 0
Comments: 7