INETA NEXT HIT’ten Sonra…

Nisan 16, 2009

Geçtiğimiz cumartesi günü dersaneyi ekerek INETA NEXT HIT’e katıldım. Her ne kadar sadece Daron Hoca’nın Silverlight 3.0 sunumunda yer almış olsamda etkinliğin bütün ayrıntılarını öğrendim:) Silverlight 3 ile gelen yenilikleri duydukça şaşırdığımız, Türk usulü biraz kabaca “ohaa” şeklinde tepkiler verdiğimiz bi sunum oldu:) Daron Hoca sunumu esprili anlatımıyla renklendirerek daha bi ilgi çekici hale getirdi tabiki… İşlerimden dolayı katılamadığım diğer sunumların sonunda ise söylendiği gibi değişik sürprizler yapılarak konuklara çekilişle hediyeler dağıtılmış. Yanarım yanarım kaçırdığım Microsoft şapkasına yanarım:) Fakat içinde bulunduğum tek ve en güzel sürpriz kurupastalar oldu:) Onlarıda Daron Hoca’nın bize (SilverMan’lere) vermiş olduğu kutsal görev üzerine Beşiktaş’ta ki fırınlardan birinden temin ettik. (Kurupastaları etkinliğe yetiştirme çabamız başlı başına bir hikaye olduğu için fazla detaya girmiyorum.)

Etkinliği düzenleyenlere teşekkürlerimi sunar, bu şekilde bir çok etkinlik olmasını talep ederim:)


2009 Blog Ödülleri Yarışması

Nisan 15, 2009

Geçtiğimiz yıl ilk kez düzenlenen Blog Ödülleri bu sene popülerliğini arttırmış olarak tekrar düzenleniyor. Bir çok kategoride alternatifler sunan yarışma 26 Nisan Pazar günü oylamaya kapatılacak ve 2 Mayıs Cumartesi günü kazananlar açıklanacak. Birincinin sadece kullanıcıların internet üzerinden vericeği oylarla seçilecek olduğu bu yarışmada sizlerde oylarınızla takip etiğiniz blogun destekçisi olabilirsiniz.

Bu arada herkes birincinin aramızdan birinin çıkmasını ister herhalde:) Bu sebeple aramızda, bi çoğumuzun takip ettiği, içeriğinden faydalandığımız, kodlarla boğuştuğumuz esnada yardımımıza koşan Daron Hoca’nın blogunun birinciliğini istemeyen yoktur. Aynı zamanda içeriği geyikle dolu olan blogların birinciliğe layık görülmesi hepimizi rahatsız eder. Teknik bilginin var olduğu, gerçek anlamda teknolojiyi bize yansıtan bir blogun kazanmasını isteriz.Oylar Daron Hoca’ya:):)

Bu blog bö!2009 adayı ve sizin oyunuzu bekliyor!


Microsoft’ta Stajyer Olmak İçin…

Nisan 8, 2009

Microsoft kendi bünyesinde stajyer olmak isteyen genç bilişimcilerde ne gibi özellikler arıyor? Microsoft Türkiye kendi binasında, kendi çalışanlarıyla çekmiş olduğu bu espritüel videoda stajyerde aradığı tüm özellikleri belirtiyor. Kendi bünyesindeki çalışanlarının iş ortamı hakkında yorumları ve microsoftta çalışmanın onlara hissettiklerininde yer aldığı bu video beni oldukça heyecanlandırdı. Ya sizi??

Videoyu buradan izleyebilirsiniz…


INETA NEXT HIT!

Nisan 1, 2009

11 -12 Nisan tarihlerinde Yıldız Teknik Üniversitesi Beşiktaş Kampüsü Oditoryumunda gerçekleşecek olan Ineta Next Hit‘e ilgilenen herkesin katılmasını öneririm. Muhteşem yeniliklerinin anlatılıcağı etkinlikte bir de sevgili Daron Hoca’nın sürpriz oturumu yer alıcak. Sürprizin ne olduğunu henüz öğrenemedik:) Etkinliğin programı ve kayıt linki aşağıdaki afişte yer alıyor. Hiç zaman kaybetmeden bu aktivitenin içinde yer alın.

ineta next hit

ineta next hit

Aktiviteye makaledeki afişe tıklayarak katılabilirsiniz.

Add to Technorati Favorites


Silverlight 3 ile Gelen Yenilikler

Mart 25, 2009

Tüm dünyayı kasıp kavuran silverlight ateşi şiddetini arttırarak hayatımıza girmeye devam ediyor. Geçtiğimiz günlerde MIX 2009′da silverlight 3 beta versiyonu tanıtıldı. Silverlight 3 ile gelen yenilikleri ve kolaylıkları buradan sizlerle paylaşmak istedim.

  • Multitouch desteği geliyor. (Sadece Windows 7′de)
  • MPEG, AAC, H.264 desteği geliyor. İsterseniz kendi codec mekanizmanısı da yazabiliyorsunuz.
  • IIS Media Services üzerinden Smooth Streaming’in Live sürümü geliyor. Artık canlı yayında da bant genişliği yayın esnasında dinamik olarak değiştirilebiliyor.
  • İş uygulamaları için Data kontrolleri geliyor…
  • .NET RIA Services ile Silverlight ve ASP.NET arasındaki veri bağlantısı kolaylaştırılıyor.
  • Offline çalışma desteği geliyor. Artık herhangi bir Silverlight uygulamasını Desktop’a normal program gibi alabiliyorsunuz. Mac’te de aynı şekilde çalışıyor. Kendini otomatik update ediyor…
  • SaveFileDialog ve bir çok yeni kontrol geliyor; WrapPanel, DockPanel, ViewBox, AutoCompleteBox, TreeView, Label…
  • Lokalde Assembly önbellekleme desteği geliyor.
  • Easing kütüphanaleri ve text animasyonları geliyor.
  • Pixel Shader efektleri geliyor; DropShadow vs… Kendi efektinizi yazabiliyorsunuz.
  • Perspective 3D!
  • GPU destekli video oynatma!
  • DeepZoom projelerinde GPU kullanımı!
  • Network bağlantısını algılayabilme.

Kaynak :
http://daron.yondem.com

Add to Technorati Favorites


MIX 2009

Mart 20, 2009

Microsoft’un web programcıları ve tasarımcıları için her yıl düzenlediği bir konferans olan MIX, bu sene 3 gün süreyle Las Vegas’ta gerçekleşiyor. MIX’in eski dönemlerine bakıcak olursak bizi her yıl yeni sürprizlerle karşıladı. Bir çok yeni teknolojinin tanıtıldığı MIX 2009′da bu sene bizleri en çok sevindiren haber Silverlight 3′ün beta sürümünün yayınlanması oldu. Gelişmeleri şu an Las Vegas’ta bulunun sevgili Daron Hoca sayesinde takip edip sizlerle paylaşmaya devam edeceğim…

Add to Technorati Favorites


İEFT (Yurtdışı Eğitim Semineri)

Mart 20, 2009

27-28 Mart 2009 tarihlerinde İstanbul Hilton Otel’de düzenlenecek olan yurtdışı eğitim semineri benim gibi bir çok öğrencinin hayalini kuruduğu eğitim için kaçırılmaz fırsat olabilir. Anlaşmalı olan üniversiteler hakkkında istediğiniz bilgiye ulaşabileceğiniz, aklınızdaki sorulara yanıt bulabileceğiniz bu seminere tüm öğrencilerin katılmasını tavsiye ederim. Seminere katılabilmek için online kayıt olmanız gerekmektedir. Siteden hem kayıt olup hemde daha detaylı bilgiye ulaşabilirsiniz.

Online Kayıt

Add to Technorati Favorites


Ajax ile .txt Dosyasından Veri Çekme

Mart 19, 2009

Uygulamada önemini vurgulamak istediğim nokta Ajax teknolojisiyle herhangi bir kaynaktan daha hızlı ve kolay bir şekilde veri çekebiliriz. Aşağıda sizlerle paylaştığım basit uygulamada .txt uzantılı bir dosya içindeki verilere Ajax teknolojisini kullanarak ulaştık. Verileri ekranda görüntülemek için hazır gridlere ihtiyaç duymadık. Kullanmış olduğumuz divlerle kendi gridimizi kendimiz oluşturduk. Bu da uygulamanın boyutunu küçültmemize ve daha hızlı çalışmamıza olanak sağladı. Paylaşmış olduğum örnek uygulamada nasıl kullanmanız ve nelere dikkat etmeniz gerektiğini anlattım.

Örnek Uygulama

<head runat=”server”>
<title></title>
<%–CSS tanımlamamızı yapıyoruz.–%>
<style type=”text/css”>
.cl, .cl2
{
float: left;
min-height: 20px;
padding: 3px;
width: 180px;
}
.cl
{
background-color: red;
}
.cl2
{
background-color: yellow;
}
.clear
{
clear: both;
float: none;
height: 0;
}
#myGrid
{
font-size: 10pt;
}
#ortala
{
width: 1024px;
margin-right: auto;
margin-left: auto;
}
</style>
<%–AJAX kullanarak txt içindeki datayı çekiyoruz.–%>

<script language=”javascript” type=”text/javascript”>
function ajaxer() {
var xmlHttp;
try { xmlHttp = new XMLHttpRequest(); }
catch (e) {
try { xmlHttp = new ActiveXObject(“Msxml2.XMLHTTP”); }
catch (e) {
try { xmlHttp = new ActiveXObject(“Microsoft.XMLHTTP”); }
catch (e) { return false; }
}
}

xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 || xmlHttp.readyState == “complete”) {
if (xmlHttp.status == 200) {

var x;

//eval methodunu kullanarak satirlar değişkeninin içindekileri kod parçasıymış gibi çalıştırıyoruz.
var satirlar = eval(xmlHttp.responseText);

for (x in satirlar) {

var xyz = eval(satirlar[x]);

//Çektiğimiz verileri div kullanarak grid oluşturup satırlara yazıyoruz.
document.getElementById(‘myGrid’).innerHTML += ” <div class=’row’>”;

var i = 0;
//Çektiğimiz verileri oluşturduğumuz gridde sütunlara ayırıyoruz.
for (y in xyz) {
//Sütunların farklı renklerde olması için sorgu oluşturarak
//artarda olan kolonların farklı renkte olmasını sağlıyoruz.

i++;
if (i % 2 == 0) {

document.getElementById(‘myGrid’).innerHTML += “<div class=’cl’>” + xyz[y] + “</div>”;
}
else {
document.getElementById(‘myGrid’).innerHTML += “<div class=’cl2′>” + xyz[y] + “</div>”;
}
}

document.getElementById(‘myGrid’).innerHTML += “<div class=’clear’></div></div>”;
}
}
}
}
//data.txt dosyasını çağrıyoruz.
xmlHttp.open(“GET”, “data.txt”);
xmlHttp.send(null);
}
</script>

</head>
<body onload=“javascript:ajaxer();>
<form id=”form1″ runat=”server”>
<div id=”ortala”>
<div id=”myGrid”>
</div>
</div>
</form>
</body>

Uygulamayı buradan indirebilirsiniz.

Add to Technorati Favorites


Kitap Tavsiyelerim

Mart 12, 2009

Arkadaşlar eğer programlamaya yeni giriş yapacaksanız ve konu hakkında fazla bir bilgiye sahip değilseniz Kerem KÖSEOĞLU’nun “Programcılık Mantığı” kitabı tam size göre. Programlamaya nereden başlamanıza karar vermenize yardımcı olacak eşsiz bir kaynak.

Programcılık Mantığı

Bir diğer tavsiyem ise Daron YÖNDEM’in yazmış olduğu “ASP.NET 3.5 AJAX” kitabıdır. Kitapta Ajax’ın tarihi, nereden nereye geldiği, nasıl kullanıldığı hakkında detaylı bilgilere ulaşabilirsiniz. Başlangıç seviyesi ve ileri seviye uygulamalı örnekleriyle istenilen seviyede Ajax bilgisi edinmiş oluyorsunuz. Kitabı okuduktan sonra artık sizler için Ajax tabanlı web uygulamaları geliştirmek çocuk oyuncağı olacak.

ASP.NET 3.5 AJAX

Add to Technorati Favorites


ÖSS Gazisi!!!

Mart 4, 2009

Arkadaşlar uzun zamandır yazı yazamamamın sebebi gitgide sıcaklığını hissettiren öss’dir(Öğrenci Seçme Sınavı). Bu sene ilk defa girecek olduğum bu sınavda işi daha fazla uzatmadan bir an önce üniversiteli olmak için çabalıyorum. Benim gibi bir çok arkadaşım içinde bir dönüm noktası niteliği taşıyan 14 Haziran tarihi, seçmiş olduğumuz yazılım alanında sağlam adımlar atabilmemiz için ve gelecekte başarı kapılarının açılması için anahtar niteliği taşıyor. ÖSS’nin önemini vurguladıktan sonra şikayetlerimide dile getirmek istiyorum. Meslek lisesi öğrencisi olarak önümüzdeki kat sayı engelinin bir an önce kaldırılarak bizden sonraki öğrenci arkadaşlarımızın bu engele takılmadan kendi alanlarında mühendislik okuyabilmelerini diliyorum. Desteklemediğim bu sistemde bir piyon olmak beni gerçekten üzüyor. Ama herşeye rağmen felsefemiz belli “ÖSS’ye inat Yaşasın hayat!!!”

Add to Technorati Favorites


Windows 7 Beta Çıktı!!!

Ocak 16, 2009

Microsoft, yeni işletim sistemi olan Windows 7′nin betasının çıktığını CES 2009′da duyurdu. Bu zevkli deneyimi herkesin yaşayabilmesi için download edebilmenize imkan sağlıyor. Windows 7′nin öne çıkan özellikleri;

Bir önceki işletim sistemlerine göre oldukça hızlı olmasıyla dikkat çekiyor, çok farklı bir tasarıma sahip olmasada bizlere yeni arayüz seçenekleri sunuyor, Windows 7′de herhangi bir sürücü problemiyle karşılaşmıyor olmamız bizler için sevindirici bi haber. Windows 7′yi tercih edilen kılan en güzel özelliklerinden biride çoklu-dokunma desteği olması. Bence hiç vakit kaybetmeden Windows 7′yi sanal makinenize kurarak denemeye başlayın.

Yeni işletim sistemi Windows 7 Beta’yı buradan indirebilirsiniz.

Add to Technorati Favorites


C# Veritabanı Bağlantısı Kurmak (Ado.Net)

Ocak 9, 2009

Öncelikle veritabanıyla bağlantıyı kurabilmemiz için bir SqlConnection nesnesi oluşturmamız gerekiyor. Oluşturduğunuz SqlConnection nesnesini ne zaman açıp ne zaman kapattığımız çok önemlidir. Günümüzde yakalanan güvenlik açıklarının geneli bağlantının açık kalmasından kaynaklanmaktadır.

SqlConnection cnn = new SqlConnection(“Data Source=192.168.1.158; Initial Catalog = OgrTakip; User ID = ogr; Password=abcd.1234″);

Daha sonra oluşturacağımız SqlCommand nesnesi sayesinde veritabanımızda yazdığımız sql cümleciklerini ya da stored procedurelerimizi çalıştırabilmekteyiz.

SqlCommand cmd = new SqlCommand(“select * from tblOgr”, cnn);

Veritabanımızdan verileri çekmenin 2 yolu vardır. Biri offline olarak çekmemizi sağlayan SqlDataAdapter nesnesi. Bu nesne veritabanına ulaşıp bütün tabloyu alıp size geri döndürür. Bir diğer seçeneğimiz online olarak veri çekmemizi sağlayan SqlDataReader nesnesi. Bu nesne ise satır satır çalışır. Yani tablonun tümüne bir kerede ulaşıp size geri döndürmez. Tablodaki satırlara ulaşıp onları sırayla size döndürür.

Ulaştığımız verileri sayfamızda gösterebilmemizi sağlayan 2 önemli nesnemiz bulunmaktadır; DataTable ve DataSet.

DataSet > DataTable > List > Object

DateSet içerisinde DataTable’lar barındırır. Veritabanımızdaki tabloları bir araya getirip memory’de tutmak istersek DataSet kullanırız. Ama çoğu zaman bize bir tablo gerekir bu tür durumlarda sadece DataTable işimizi görecektir. DataSet kullanıp memory’yi şişirmeyelim.

Eğer sadece bir değer alacaksak onu object gibi bir nesneye koymalıyız.

SqlConnection cnn = new SqlConnection(“Data Source=192.168.1.158;Initial Catalog=OgrTakip;User ID=ogr;Password=abcd.1234″)

SqlCommand cmd = new SqlCommand(“select count (*) from tblOgr”, cnn);

cmd.ExecuteNonQuery();

object a = cmd.ExecuteScalar();

Ya da sadece bir sütun bilgi alacaksak. Bu durumda list ya da DataTable kullanabiliriz.

List<object> li = new List<object>();

SqlConnection cnn = new SqlConnection(“Data Source=192.168.1.158;Initial Catalog=OgrTakip;User ID=ogr;Password=abcd.1234″);

SqlCommand cmd = new SqlCommand(“select * from tblOgr”, cnn);

SqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())

{

li.Add(dr.GetValue(3));

}

Add to Technorati Favorites


JQuery’de LightBox Efekti

Aralık 26, 2008

Yazıcağımız çok kısa bir kodla fotoğraflarımızı istediğimiz pencerede açabileceğiz. Gerekli yerlerde değişiklikleri yaparak kendi pencerelerimizi kendimiz dizayn edebilirz. LightBox uygulamasının kullanımı aşağıda kısaca göstereceğim.

Kullanacağımız kütüphaneleri ve fotoğraflarımızı sayfamıza entegre ettikten sonra aşağıdaki kodu <body> taglarının arasına yazmamız yeterli olacaktır.

 
<div id=”#lightbox”>
       <a href=”resim/resim1.jpg” rel=”lightbox”>Manzara 1</a>
       <a href=”resim/resim2.jpg”rel=”lightbox”>Manzara 2</a>
       <a href=”resim/resim3.jpg” rel=”lightbox”>Manzara 3</a>
</div>
 

 

 Kullanacağımız kütüphane ve CSS için;

http://uploaded.to/?id=x4zzky

 
Add to Technorati Favorites


JQuery’de ThickBox Efekti

Aralık 26, 2008

Çok dikkatimi çeken ve hoşuma giden bu özelliği sizlerle paylaşmak istedim. Uygulayacağımız efektle çok güzel, çok beğeniceğiniz bir fotoğraf albümü oluşturacağız. Bu sayede fotoğraflarımızı kişisel sitemizde yayınlarken çok daha dikkat çekici bir hale getirebileceğiz. Kaynak kodunu aşağıdaki linkten indirebilirsiniz.

Not: Tabi JQuery’i sadece fotoğraflara efekt vermek için kullanmıyoruz. Örneğini verdiğim efektleri istediğiniz herhangi bi yerde kullanabilirsiniz. Mesela yazmış olduğunuz bir yazınızı uyguladığımız efektlerle yayınlayabilirsiniz.

Kullanacağımız kütüphane ve CSS için;

http://uploaded.to/?id=3yc4ae

Kaynak kodlar için;

http://uploaded.to/?id=5ogzi7

Add to Technorati Favorites


JQuery’de Facebox Efekti

Aralık 26, 2008

Hızlı bir giriş yaptığımız JQuery’de aynı hızla ilerlemeye devam ediyoruz. Bu yazımda resimlerimizi Facebook’ta karşımıza çıkan pencerelere benzer bi pencerede açmaya çalışacağız. Çok basit işlemlerle istediğimiz efekti oluşturarak fotoğraflarımıza bakmanın ne kadar keyifli bir hal aldığını göreceğiz.  Uygulamanın kaynak kodlarını aşağıda sizlerle paylaştım. Üzerinde istediğiniz değişiklikleri yaparak bu şekilde güzel bir albüm oluşturabilirsiniz.

Kullanacağımız kütüphane ve CSS için;

http://uploaded.to/?id=gystwb

Kaynak kodları indirmek için;

http://uploaded.to/?id=2qc60g

Add to Technorati Favorites


JQuery Nasıl Kullanılır?

Aralık 18, 2008

Bir önceki yazımda kısaca JQuery’yi tanımış olduk. Şimdide projelerimizde nasıl kullanıcağımızdan bahsedicem. Öncelikle ücretsiz olarak piyasaya sunulan JQuery’yi download etmemiz gerekiyor. Download işlemi bittikten sonra indirmiş olduğumuz  jquery-1.2.6.min.js dosyasını web sayfamıza adapte edelim.

<script src=”jquery-1.2.6.min.js” type=”text/javascript”></script>

Bu kadar basit. Şimdi yapmış olduğum bir uygulamanın kaynak kodlarını paylaşarak JQuery hakkında daha geniş bilgiye sahip olmanızı istiyorum. Görüceksinizki basit işlemlerle  fotoğraflarınız arasında çeşitli efektlerle değişik geçişler yapabiliceksiniz.

Kaynak kodları indirmek için;

http://uploaded.to/?id=salpsh

Css dosyası için;

http://uploaded.to/?id=pjmce4

Add to Technorati Favorites


JQuery nedir?

Aralık 18, 2008

Kısa bir süre önce dikkatimi çeken JQuery’yi örnek uygulama yapmadan önce size anlatmak istiyorum. Geçtiğimiz yıllarda (2006) piyasaya duyurulan JQuery, bir JavaScript ve Ajax kütüphanesidir. Oluşturacağımız projelerde çok kolaylık sağlayan JQuery, bir çok işlemi tek bir satırda yapmamıza imkan sağlamaktadır.Bir çok kişinin JQuery’yi tercih etme sebeplerinden en önemliside budur. Geniş bir kullanıcı kitlesine sahip olan JQuery, gün geçtikçe kullanıcı sayısını arttırıyor.Tüm ihtiyaçlarımızı karşılayacak eklentileri olan JQuery 15 kişilik bir grup tarafından hala  geliştirilmekte ve bu sayede eklenti sayısını her geçen gün dahada arttırıyor. JQuery hakkında daha geniş bilgi edinmek için resmi web sitesi www.jquery.com ziyaret etmenizi öneririm. Sitede JQuery’yi öğrenmenizi sağlayacak basit ve güzel örnekler mevcuttur.

Add to Technorati Favorites


Değişken İsimlendirme Standartları

Ekim 24, 2008

Arkadaşlar program yazarken işinizi kolaylaştıracak, sizi kodlar arasındaki karışıklıklardan kurtaracak olan pratik bir bilgi.

Değişkenin türü
İsimlendirme şekli Örnek
Private “_” ile başlayan, Camel Casing _userCode
Public Pascal Casing UserCode
Property Pascal Casing UserCode
Scope değişkenleri – geçici değişkenler Camel Casing userCode
Method İsimleri Pascal Casing GetUserCode
Method parametreleri “p” ile başlayan, Pascal Casing pUserCode
Class İsimleri Pascal Casing User
Structure İsimleri “Str” ile başlayan Pascal Casing StrUserData
Enum İsimleri Pascal Casing UserType
Interface “I” ile başlayan, Pascal Casing IUser
Exception class’ları Sonu “Exception” ile biten, Pascal Casing UserNotFoundException
GUI form ve Control’ler (Windows ve Web) Hungarion Notation txtUserCode, frmMessage

Add to Technorati Favorites


C# XML’e Veri Yazma Örneği

Ekim 23, 2008

Öncelikle default.aspx sayfamızda şekildeki gibi 3 tane textbox ve 1 tane buton oluşturuyoruz.


Sıradaki işlemimiz bir sınıf oluşturmak. Bunun için Add-New Item yolunu izleyerek karşımıza çıkan pencereden class seçeneğini seçiyoruz. Oluşturduğumuz sınıfa “kisi” adını veriyoruz ve sınıfımızın içine aşağıdaki kodları yazıyoruz.

//constructor
public kisi()
{
//nesne ilk oluştuğunda gerçekleştireceği hareket.
}
//sınıfımızın içinde değişkenlerimizi tanımlıyoruz.
public kisi(string ad, string soyad, string telefon)
{

Ad = ad;
Soyad = soyad;
Telefon = telefon;
}

//değişkenimizi field olarak görmemizi sağlar.
private string m_ad;

//değişkenimizi property olarak görmemizi sağlar.
public string Ad
{
get {return m_ad;}
set {m_ad = value;}
}

private string m_soyad;
public string Soyad
{
get { return m_soyad; }
set { m_soyad = value; }
}

private string m_telefon;
public string Telefon
{
get { return m_telefon; }
set { m_telefon = value; }
}

//veriyi xml’e kaydetme methodunu oluşturuyoruz.
public void xmlekaydet()
{
//yeni bir XmlTextWriter nesnesi oluşturarak bu nesne içerisinde
//xml’imizi nereye oluşturacağımızı belirtiyoruz.

XmlTextWriter xmlDocument = new XmlTextWriter(@”c:\kayit.xml”, System.Text.UTF8Encoding.UTF8);

//verimizi xml dosyasına yazmaya başlıyoruz.
xmlDocument.WriteStartDocument();
xmlDocument.WriteStartElement(“kisi”);
xmlDocument.WriteAttributeString(“ad”, m_ad);
xmlDocument.WriteAttributeString(“soyad”, m_soyad);
xmlDocument.WriteAttributeString(“telefon”, m_telefon);
xmlDocument.WriteEndElement();
xmlDocument.WriteEndDocument();

//yazma işlemini sonlandırıyoruz.
xmlDocument.Close();
}

Sınfımızın içine kodları yazdıktan sonra Default.aspx’te oluşturduğumuz butonun Click özelliğine aşağıdaki kodları yazıyoruz.

//yeni bir kisi nesnesi oluşturarak
//textbox’ların bu değişken içinde yer almasını sağlıyoruz.

kisi k = new kisi(TextBox1.Text,TextBox2.Text,TextBox3.Text);

//kaydetme methodumuzu çağrıyoruz.
k.xmlekaydet();

//kayıt işleminin tamamlandığını ekranda gösterecek.
Response.Write(“Kayıt Tamamlandı.”);

İşlemimiz bu kadar. Artık oluşturduğunuz XML dosyalarına veri yazdırabilirsiniz.

Aşağıdaki linkten uygulamayı indirebilirsiniz.
http://uploaded.to/?id=rjzq4e

Add to Technorati Favorites


String.Format

Ekim 15, 2008

Programlarımızda sık yaptığımız işlerden birisi de sayıları veya string tipindeki ifadeleri belli bir formata göre yazdırmaktır. Mesela, Ürün fiyatının binler basamakları nokta ile ayrılması ve virgülden sonra sadece iki rakamın gösterilmesinin sağlanması gibi. Bu yazımızda bu ve benzer isteklerimizi karşılayan string.format fonksiyonunu kısaca inceleyeceğiz.

Genel kullanım :

String yenistring = String.Format(�Birim Fiyatı : {0}�,fiyat);

Burada {0} ifadesiyle, ifadenin yerine fiyat isimli değişkenin geleceğini belirtiyoruz. Bu şekilde birden fazla değişken tanımlaması yapabiliriz.

Uygulama Üzerinde Örnek

Basit bir örnekle kullanım şeklini görelim.Yeni bir web projesi oluşturalım ve sayfanın Page_Load özelliğine aşağıdaki kodları yazalım.

string _today = DateTime.Now.ToString(“dd.MM.yyyy”);
string tarih = string.Format(“Tarih : {0}”, _today);
Response.Write(tarih);

Uygulamayı aşağıdaki linkten indirebilirsiniz.
http://uploaded.to/?id=75wriq

Kaynak :
http://www.csharpnedir.com/makalegoster.asp?MId=486

Add to Technorati Favorites


XML Nedir?

Ekim 15, 2008

XML (Extendsible Markup Language – Genişletilebilir İşaretleme Dili) yeni çağın internet üzerinden veri taşıma ve verileri işleme dili olarak tasarlanmıştır.

Maddeler halinde XML ‘i anlatmak gerekirse;

- XML, HTML gibi bir işaretleme dilidir.
- XML, veriyi tanımlamak için dizayn edilmiştir.
- Önceden belirtilmiş etiketler (tag) yoktur. Kendi etiketlerinizi kendiniz oluşturmanız gerekir.
- XML de veriyi tanımlamak için döküman tipi tanımlaması DTD (Document Type Definition ) veya XML Schema kullanmanız gerekmektedir.
- XML DTD veya XML Schema ile birlikte kendini tanımlayıcı bir yapıda olması gerekmektedir.

Biraz maddeleri açmamız gerekirse XML, HTML gibi bir işaretleme dilidir (Markup Language). XML, HTML ‘in yerini almak için geliştirilmemektedir. İkisi de farklı amaçlar ile geliştirilmiştir. HTML verinin gösterilmesi için geliştirilmiştir ve verinin nasıl görüntülendiği ile ilgilenir. XML ise verinin tanımlanması için geliştirilmiştir ve verinin ne olduğu ile ilgilenir.

Kısaca HTML, bilgiliyi gösterir, XML ise bilgiyi tanımlar.

İsminden anlaşılacağı gibi bu dilin tag‘larını kullanıcı kendi ihtiyaçları doğrultusunda genişletebilir.

XML’de HTML‘deki gibi önceden belirtilmiş etiketler (tag) bulunmaz. Bunların yerine kendi etiketlerinizi oluşturursunuz.

İlk bakışta çok serbest bir yapı gibi görünse de verdiğiniz etiketlerin sıralamaları, içerdiği veri veya öğeleri, DTD (Document Type Definition ) de tanımlamanız ve bu kurallara sıkı sıkıya uymanız gerekmektedir. DTD’yi kendiniz oluşturacağınız gibi hali hazırda başkaları tarafından kullanılmakta oldan DTD’leri kullanabilirsiniz.

XML, DTD veya XML Schema’nızla beraber kendini tanımlayıcı bir yapıda bulunması gereklidir. Peki bu nedir? Az önce üst bölümde açıkladığım gibi DTD‘ler sayesinde XML belgenizde kullanmış olduğunuz etiketlerin niteliklerini, yapılarını ve içermesi gereken verileri veya diğer etiketleri tanımladığınız bölümdür. Bu bölüm XML belgesinin içinde olabileceği gibi bir dış belge olarak XML belgesinde link edilmiş olabilir. Bu DTD‘ler sayesinde XML belgeniz browser veya farklı bir program tarafından çözümlenerek görüntülenir.

Neden XML?

Aslında XML büyük ölçekli elektronik yayıncılıkta kullanılmak üzere dizayn edilmiş. Aynı zamanda da geniş çeşitlilikteki verilerin web üzerinden veya herhangi bir platformda alış verişinin sağlanmasında önemli bir rol oynamaya başlamıştır. Bu sebepten dolayı günümüzde geçerli bir yere sahip olmuştur.

Kaynak :
http://www.csharpnedir.com/makalegoster.asp?MId=25

http://www.kodpaylas.com/viewtopic.php?t=978&sid=65b3727e87df90ad949e8afbf0975a3b

Add to Technorati Favorites


C#’ta Önemli Keywordler

Ekim 15, 2008

Private : Erişim belirteci işaretlenen ögeye sadece sınıfın içinden erişilebileceği anlamına gelir. Bu ögeler kalıtım yoluyla aktarılamaz.

Public : Fonksiyona sınıf içinden ve sınıf dışından erişime izin verir.Ayrıca kalıtım ile aktarılır.

ÖRNEK :

Sn. Kerem KÖSEOĞLU’nun Programcılık Mantığı adlı kitabında vermiş olduğu piyano örneğini kısaca sizinle paylaşmak istedim.Piyanonun yapısını incelediğimizde kabaca iki bölümden oluştuğunu söyleyebiliriz.Herkesin kullanabildiği, herkese açık olan parçaları (tuşlar, pedallar vs.) ve göremediğimiz gizli parçaları (teller , çekiçler vs.). Tuş ve pedalları piyano başına oturan herkes kullanabilirken teller ve çekiçleri sadece piyano imalatçıları modifiye edebilir. Bu örneği programlama açısından yorumlarsak piyanonun tuş ve pedallarını herkes kullanabildiği için publicle, teller ve çekiçleri ise privatela ilişkilendirebiliriz.

Protected : Erişim belirteci işaretlenen ögeye sadece sınıfın içinden erişilebileceği fakat alt sınıflara aktarılabileceği anlamına gelir.

Internal :
Method ya da field tanımlandığı class içerisinden ve class’ın tanımlı olduğu namespace içerisinden erişilebilir.

Sealed : İlgili sınıfın türetilme özelliğini kaldırır.

Abstract : Bir methodu ya da class’ı soyut yapmak için kullanılır.

Static : Örneği alınmayan sadece iş yapan sınıftır.Biraz daha hızlıdır.

Void : Geriye değer döndürmeyen fonksiyon türüdür.

Virtual : Değerin ezilmesine izin verir.

Override : Base’de tanımlanan methoddur. Değeri ezmek ya da değiştirmek için kullanılır.

New : Ezilmeyen değeri ezen fonksiyondur.

Kaynak : Programcılık Mantığı (s.289) Kitabı

Add to Technorati Favorites


Neden OOP?

Ekim 15, 2008

1. Kod güvenliği ve tutarlılık
2. Hızlı geliştirme ve merkezi yönetim
3. Az kodla çok iş
4. Gerçek hayatın modellenmesi
5. Doğru kodun doğru yerde yazılması
6. Her class’ın kendi işini yaptığı kod

Add to Technorati Favorites


Nesne Yönelimli Programlamanın Özellikleri

Ekim 15, 2008

Encapsulation (Kapsülleme) : Bu özellik bize dilediğimiz değişken ve fonksiyonları saklama, dilediklerimizi halka açma şansını verir.Public ve private kavramları encapsulation konusunun temelini teşkil eder.

Inheritance (Miras Alma) : Bu özellik temel sınıfların özelliklerinin yeni sınıflar tarafından otomatik olarak devralınmasını sağlar. Yeni sınıflar temel sınıflardan miras aldıkları özellikleri modifiye edebilir veya üzerine yenilerini ekleyebilirler.

Polymorphism (Polimorfizm) : Bu özellik aynı fonksiyonun farklı sınıflarda farklı şekillerde davranabilmesini sağlar.

Kaynak : Programcılık Mantığı (s.295) kitabı

Add to Technorati Favorites


Nesne Yönelimli Programlama Prensipleri

Ekim 15, 2008

(Object Oriented Programming Principles)

- Single Responsibility Principle

Single Responsibility Principle(SRP) bir ilkedir ve nesneye yönelik programlama da nasıl kodlama yapılmalıdır,tasarım nasıl tutulmalıdır sorularına verilebilecek cevaplardan bir tanesidir.

Her sınıfa verilebilecek en az görev verilmeli, her sınıf ayrı bir iş yapmalıdır.

ÖRNEK

Bilgi tutma ayrı bir iştir, bilgi kaydetme ayrı bir iştir. Aynı class hem bilgi tutup hemde bilgi kaydetme ile ilgili metoda sahip olmamalıdır.

Kitap class’ı id, ad, fiyat değerlerini tutan bir nesnedir. KitapManager class’ı kitap nesnesini parametre alan kaydet methoduna sahiptir. Böylelikle herkes kendi işini yapar.

- Open Closed Principle

Bu prensibin amacı test edilmiş kodun tekrar test edilmemesi sadece değişiklik yaptığımız yeri test etmemizdir. Sınıflar değişikliğe kapalı olmalıdır. Çünkü bir sınıfta değişiklik yapmak, buna bağlı bulunan bundan türeyen veya bunu kullanan diğer tüm sınıfları da buna uygun hale getirmeyi veya en azından yeniden derlemeyi, versiyon atlatmayı ve müşteriye yeniden yüklemeyi gerektirir.

Her turlu yazılım birimi geliştirmeye ve genişlemeye açık ancak modifikasyona kapalı olmalıdır.

- Liskov Subsitution Principle

Bir temel sinifta referans ya da pointeri kullanan fonksiyon, bu temel siniftan turetilen bir baska sinifi da sorunsuz olarak onun yerine kullanabilmelidir.

Çok parametreli az parametreliyi her zaman base alır.

ÖRNEK

Örneğin daire ve elips çizmek istiyoruz . İkiside birbirine çok yakın şekiller.Bu nedenden dolayı önce şekilleri nasıl çizebileceğimizi düşünmemiz gerekiyor.Daireyi yarı çap değeri vererek çizebilirz (r,r), elips için ise iki farklı değer atamamız gerekecek (a,b). İkisi içinde ayrı ayrı kod yazmak yerine daireyi elips sınfından türetebiliriz.

- Dependency Inversion Principle

Bu prensip OCP’nin (Open-Close Principle) direk bir sonucudur. Prensibe göre, ileride değişmesi muhtemel somut sınıflara direk erişmek yerine, bu sınıflara arayüz veya soyut sınıflar üzerinden erişmemiz gerekir. Bu yolla somut sınıflara ve bunların eriştiği tüm diğer somut sınıflara olan bağımlılığı yokedebiliriz. Bu prensibe aykırı yapılar, birbirine bağımlı sınıflar doğurur, ki bu da temelde OCP (Open-Close Principle), yani değişmeden genişleyebilme prensibine terstir. Çünkü bir sınıfta yapılacak olan değişiklik, diğer tüm sınıflarda değişiklik yapmayı gerektirebilir.

Örneği alınabilen sınıfların bağımlılıkları abstractlar üzerinden kurulmalı.

- Interface Segregation Principle

İyi tanımlanmış her bir yetenek için ayri bir arayüz tanımlanmasını öneren nesne yönelimli yazılım geliştirme prensibidir.

Sırf abstraction yapmak için içine bir sürü şey doldurulmuş tek bir interface hazirlamak yerine, her biri ayrı bir işlevi tanımlayan birden fazla interface tanımlamak daha iyi olacaktır. Bunun yarari bir gün o devasa interface’i kullanan başka bir class tanımlamaya kalkarsanız hiç gereği yokken diğer metodları da implemente etmekle uğraşmamaktır.

- Reuse Release Equivalency Principle

Bu prensip genelde bir uygulama üzerinde birden fazla takım çalışıyorsa kullanılır. System yoluyla released edilmiş componentler efektif şekilde kullanılabilir.

Tekrar kullanılabilir olanlar bir arada paketlenir.

- Common Closure Principle

Bu prensip yapı içindeki class’larin değişikliklerden etkilenmesini önlemek gerektiğini öngürür.

Çünkü yapı üzerindeki değişiklik, içindeki class’larıda etkileyebilir.

- Common Reuse Principle

Herhangi bir class’ta yapılan değişiklik yapının yeni bir versiyonunu oluşturmuş olur.

Bir yapı içindeki bütün classlar tekrar kullanılabilir halde olmalı.

- Acyclic Dependencies Principle

Eğer programınız birbirleriyle ilişkili yapıları olduğu gibi kullanacaksa dependencyler en üstten yani root’tan en alt kadameye kadar ayarlanmalı.

- Stable Abstractions Principle

Stabilitesi fazla olan yapıların abstraction’ı da fazla olmalı ve stable paketler arasında abstract sınıflar olmalı.

Kötü Tasarım İlkeleri

Rigidity : Yaptığınız değişikliğin bir çok yeri etkilemesi.

Immability : Bir modülün başka bir yerde kullanıyor olması.

Fragility : Bir değişiklik başka yerleri kırıyor, sorun çıkartıyor.


Add to Technorati Favorites