C Sharp Experience

C# Experiences...

Salı, Aralık 18, 2007

Data Compression :: Running RLE Algorithm on BMP and PGM Image Files Using C#

Aşağıda, Data Compression için hazırlamış olduğum çalışmayı inceleyebilirsiniz. Bu çalışmada, sıkıştırma algoritmalarından RLE(Run Length Encoding) i, BMP ve PGM dosyaları üzerinde farklı şekillerde uygulanması gösterilecektir. Çalışma için, görüntü işleme camiasında sıkça kullanılan Lenna resmi kullanılacaktır.

Devamını okumak için tıklayınız...

Pazartesi, Aralık 10, 2007

Reading-Writing PGM(Portable Graphics Media) Image Files With C#(C Sharp)

I demonstrate a simple example in order to show how to read-write PGM files.


To read more please click...

Cumartesi, Aralık 08, 2007

Compression With Run Length Encoding(RLE) Algorithm With C#(C Sharp)

Mennan On Writing... - Compression With Run Length Encoding(RLE) Algorithm With C#(C Sharp)

Pazartesi, Ekim 23, 2006

Converting Multi Dimensional Arrays To Single Dimensional

Sometimes you need to convert a two dimensional array into one-dimensional array. It is simple copying array but changing dimensions. I implemented two simple functions to converting. I used only byte types. If you want you can change it on yout own types.

To read entire please click.....

Etiketler: , , , ,

Pazar, Ekim 01, 2006

Converting a String Into Character ASCII Codes

It is possible to convert a character into ASCII code in .NET Framework. I write a simple example to demonstrate it.

Please follow Converting a String Into Character ASCII Codes

Etiketler: , ,

Number Of Occurances Of Character In a String In C#(C Sharp)

Number Of Occurances Of Character In a String In C#(C Sharp)

Perşembe, Eylül 14, 2006

Validating Turkish Telephone Number With Regular Expressions In C#

Validating Turkish Telephone Number With Regular Expressions In C#

Perşembe, Eylül 07, 2006

ASP.NET versus PHP With An Oracle Developer's Point Of View

ASP.NET versus PHP With An Oracle Developer's Point Of View

Copying Multi Dimensional Arrays In C Sharp

Copying Multi Dimensional Arrays In C Sharp

Language Comparisons : VB, C# and Java

Language Comparisons : VB, C# and Java

Salı, Eylül 05, 2006

Function Parameter Types for C Sharp

Function Parameter Types for C Sharp

Pazartesi, Ağustos 28, 2006

Cast Operations On C Sharp

Cast Operations On C Sharp

Cumartesi, Ağustos 26, 2006

Gathering Database Metadata On Oracle and Microsoft SQL Server

Gathering Database Metadata On Oracle and Microsoft SQL Server

Çarşamba, Ağustos 23, 2006

Adding Link Column DataGrid Via Template Column Or Hyperlink Control

Adding Link Column DataGrid Via Template Column Or Hyperlink Control

Salı, Ağustos 22, 2006

Generation Executables Dynamically Via C# Using CodeDom

Generation Executables Dynamically Via C# Using CodeDom

Cumartesi, Ağustos 19, 2006

Customized DataGrid In .NET

Customized DataGrid In .NET

Perşembe, Temmuz 27, 2006

Integer TexBox Class In C#

Integer TexBox Class In C#

Salı, Haziran 20, 2006

Introduction to .NET Windows Applications With Three Tier Architecture

Introduction to .NET Windows Applications With Three Tier Architecture

Cumartesi, Haziran 03, 2006

About Interface

About Interface

Differences Between Class and Struct In C#

Differences Between Class and Struct In C#

Pazartesi, Mayıs 15, 2006

How To Draw Line On Windows Forms With Two Mouse Clicks

How To Draw Line On Windows Forms With Two Mouse Clicks

Salı, Mayıs 09, 2006

How to Start Programs Inside Windows Form Applications With C#

How to Start Programs Inside Windows Form Applications With C#

Pazar, Mayıs 07, 2006

Selecting Radio Button In A DataGrid

Selecting Radio Button In A DataGrid

Pazar, Nisan 30, 2006

How to make A Datatable's Column Unvisible In C#

How to make A Datatable's Column Unvisible In C#

Image Processing Concepts In C# : Stride, Scan0 And GrayScaleFiltering

Image Processing Concepts In C# : Stride, Scan0 And GrayScaleFiltering

How to Find Paths Of Special Folders In C#

How to Find Paths Of Special Folders In C#

Pazar, Nisan 23, 2006

How to make an uneditable ComboBox In C#

How to make an uneditable ComboBox In C#

Cumartesi, Nisan 15, 2006

Data And Event Exchanging Between Windows Forms In C#

Data And Event Exchanging Between Windows Forms In C#

Çarşamba, Şubat 15, 2006

Image Processing (codename = TIRTIL) Released...

Image Processing (codename = TIRTIL) Released...

Salı, Ocak 10, 2006

Intoruction To .NET Architecture

.NET, Microsoft tarafından çıkarılan Java gibi platform bağımsızlık esasını kendine slogan kabul etmiş bir teknolojidir. Uygulama geliştiriciler, bu teknolojiyi kullanarak çeşitli yazılım ürünleri oluşturmaktadır. Yazılan kodların derlenip çalışabilir hale gelmesi, birçok geliştirici için gizemli bir olaydır. Daha çok çıkan hataların incelenmesi ve gerekirse tekrar derlenmesi için çalışılır. Visual Studio gibi herhangi bir Integrated Development Environment(IDE) ile yazılan formlar, F5 tuşuna bastıktan sonra, hiç de azımsanmayacak bir süreç içine girer. Bu süreci -en azından- genel hatları bilmek uygulama geliştiriciler için önemli bir konudur. F5 tuşuna basıp formun ekranda görünmesine kadar geçen süre içinde neler olmaktadır sorusu, üzerinde düşünülmesi gerekilen bir sorudur.


Mümkün olduğunca az kod yazıp, platform ve mimari farklılıklarına yakalanmadan uygulama geliştirmek, uygulama geliştiriciler için önemli bir konu haline gelmişti. Java'nın platform bağımsızlığından sonra çıkan .NET in de genel amacı bunu gerçekleştirmekti. Kodlar bir defa yazılacak, ek gereksinimler ve kısıtlamalar göz önüne alınmadan her yere taşınabilecek şekilde tasarlanacaktı. Microsoft yazılım mimarları, Gates'in bu hedefine ulaşmak için çalışmalara başladı. Uzun süren çalışmalar, "veriye her yerden her şekilde ulaşabilme" hayalini bir nebze olsun gerçekleştirilmeye çalıştı. Ama bu tam bir özgürlük anlamına gelmiyordu. Yapılan çalışmalar henüz Microsoft tabanlı sistemler için özgürlükten bahsetmenin mümkün olduğunu; fakat diğer ortamlar için bu hayalin şimdilik erken olduğunu gösteriyordu. Bu da Java gibi bir bağımsızlık sağlamıyordu. Çalışmalar, Mono adı verilen Linux ortamında .NET ile yazılmış uygulamaların çalışmasını sağlayan bir katmana doğru yol aldı. Halen de bu çalışmalar devam etmektedir.


Yazılım sektöründe adından sıkça bahsedilen "platform bağımsızlık" terimi aslında şuana kadar tam olarak sağlanmış değildir. Çünkü bu terim denince akla ilk gelen Java dilinin, Java Virtual Machine(JVM) denilen bir sarmal olmaksızın çalışmasını beklemek mümkün değildir. Java uygulamaları doğrudan işletim sistemi yerine bu sarmal ile haberleşmekte, sarmal kendine gelen ve bytecode adı verilen kod parçalarını işletim sisteminin anlayabileceği dile, makine koduna, çevirmektedir. Dikkat edilirse JVM, platform farklılıklarının çözümü için araya giren bir sarmal vazifesindedir. Eskiden makine diline çevrilen kaynak kodlar JVM' in anlayacağı dile çevrilmekte, JVM de bunu alıp platforma özgü bir hal almasını sağlamaktadır.


Bir diğer bakış açısı ile olaya bakmak gerekirse Java, temelde birçok ortamı destekleyen bir dildir. Yani platform olarak birçok farklı yapıya destek verir. İster Windows, ister Linux ister bir diğer işletim sistemi olsun fark etmez. Intel veya AMD olması da bir sorun teşkil etmemektedir haliyle. Bu, ters çevrilmiş bir huniye benzer. Üst tarafta Java'dan gelen kaynaklar, alt tarafta ise bunu destekleyen çok geniş bir platform ailesi olacak şekilde tasarlanmıştır.


.NET de ise durum biraz farklıdır. Alt yapıda geniş bir platform ailesine hizmet verebilmek yerine, üstte farklı dil desteği bulunmaktadır. Bunu da normal bir huniye benzetebiliriz. Üst kısım geniş bir dil ailesi için, alt kısım ise platform kısmını belirlemek için düşünülebilir. Bu yapı sayesinde .NET dil ailesi şeklinde bir tabir kullanılmaktadır. VB veya C# bilmeniz, uygulamalarınız için herhangi bir fark oluşturmayacaktır. Sonuçta altyapıda gerekli düzenlemeler yapıldığı için herhangi kısıt olmaksızın uygulama geliştiriciler çalışabilmektedir.


.NET' in en önemli yapıtaşı, Framework olarak belirtilebilir. Bu yapı, kendini 2 önemli alt bileşene ayırır. Bunlar CLR(Common Language Runtime) ve CL(.NET Framework Class Library) olarak karşımıza çıkar. CL içinde uygulama geliştirirken kullandığımız kütüphaneler bulunmaktadır. Formlar, nesneler ve kontroller hep bu yapı içinde yer alır.


CLR yapısına gelmeden önemli olan iki kavramdan daha bahsetmemek gerekecektir. Bunlar Common Type System(CTS) ve Common Language Specification(CLS). CTS, geliştirilen uygulamalarda kullanılan dillerin nesne yapıları ve tiplerini ortak bir tipe dönüştürülerek, geneli kucaklayan bir yapının oluşmasını sağlar. Bu sayede ister Visual Basic .NET(VB.NET) ile ister C#.NET ile uygulama geliştirin her ikisinin de gideceği yer aynıdır. Yani VB.NET veya C#.NET içinde tanımladığınız bir tip, tabir yerinde ise, .NET tipine dönüşecektir.


Common Language Specification(CLS), daha genel bir standarttır. Uygulama geliştirme dilleri arasında ortaklık oluşturmak için tasarlanmıştır. Bu yapı, dillerin uyması gereken asgari özellikleri belirler. Derleme aşamasına gelebilmek için bu özelliklere uyulması gerekmektedir. CLS destekli diller ile geliştirilen uygulamalar bir üst seviyeye dönüştürülür. Bunlar Intremediate Language (IL) olarak isimlendirilir. Yani bir diğer ifadeyle, CLS destekli diller ortak bir ürün verecek şekilde çalışır. Bu da farklı diller arasında uygulama geliştirmeye olanak sağlar. .NET dil ailesi olarak belirtilen diller de CTS' yi paylaşan dillerdir. Hepsi IL koduna dönüştürülür ve CLR ile işlenmeye hazır hale gelirler.


Microsoft Intremediate Language(MSIL), ara bir seviyedir. Çalıştırabilir makine kodundan çok bazı ek işlemler ile çalıştırılabilir hale gelecek kodlardır. Bundan sonra kodlar, son seviye olan makine koduna dönüştürülür. IL, işlemci ve platformdan bağımsız bir haldir. Burada ortak hale dönüştürülmüş kodlar bulunmaktadır. Yani Visual Basic ile yazılmış bir kod ile C# ile yazılmış kod, IL seviyesinde, aynı şekilde bulunur. MSIL, CLR vasıtası ile derlenir. CLR, üzerinde bulunduğu mimari yapıyı bildiği için, o mimariye ait kimi bilgileri de kullanarak Just In Time Compiler(JIT) ile kodu derler. Makine kodun oluştuğu yer burasıdır.


CLR, MSIL kodun JIT ile derlenip makine kodun oluştuğu yerdir. CLR' nin görevi bununla kalmaz. Buna ek olarak birçok görevi bulunur. Hafıza, threadler, güvenlik, istisna ve debug gibi birçok yönden yazılımın çalışmasına etki eder. .NET Framework' un önemli bir bölümünü oluşturur.


CLR içindeki JIT, MSIL' i derledikten sonra dönüşen makine kodunu, hafıza yükler. Yazılım çalışmaya başlar. Bir defa bu noktaya gelen kod, sonraki çağırımlarda buradan kullanılır. Bu nedenledir ki, uygulamaların ilk defa çalıştırılması her zaman yavaş olmakta, sonraki çağırımlar ise daha hızlı gerçekleşmektedir.


Genel olarak kodun yaşam süreci böyledir. Her bir kısaltma için sayfalarca yazı yazılabilir. Bu yapıyı bilip uygulama geliştirmek, yazdığınız koda daha bir hâkimiyet sağlayacaktır.