S3V!MS!2 Software Engineer

Tanım

Yazılım


Bağlantılarım

* Ana Sayfa
* Profilim
* Arşiv
* Arkadaşlarım
<%arkadaslarim%>

Son Yazılarım

---------------

Ben Hiç Sevemem

---------------

Bekleyiş

---------------

Bazı C# Kavramları

---------------

DOS(Denial Of Services) ve DDOS(Distributed Denial Of Services)

---------------

Vanilyalı Dondurma

---------------

Assembly Toplama Yoluyla Çarpma

---------------

C# NEDİR???

---------------

.NET SİTELERİ

Kategoriler


Ben Hiç Sevemem

Kapıdan çıktın, aklımdan çıktın
Ne hain çıktın sen, kalbimden de çık....

Oynamayı sevdin, ağlatmayı sevdin
Her kimi sevdiysen git onu sev

Arama, sorma, buna hiç gelemem
Beni sevmeyen adamı ben hiç sevemem

Ne çabuk bıktın, ümidim yıktın
Her neden bıktıysan, başkasını yık
 
BerTuğ CemiL


Tarih: 14:30, 5/3/2007 Kategori: AND LIFE
Yorum (1) | Yorum yaz | Bağlantı

Bekleyiş

En sevdiğim Şiir...

 

Ne hasta beklerdi sabahı,
Ve ne genç ölüyü mezar.
Ne de şeytan bir günahı,
Seni beklediğim kadar.

 

Geçti istemem gelmeni,
Yokluğunda buldum seni.
Bırak vehmimde gölgeni,
Gelme artık neye yarar?

 

Necip Fazıl Kısakürek


Tarih: 12:34, 3/3/2007 Kategori: AND LIFE
Yorum (2) | Yorum yaz | Bağlantı

Bazı C# Kavramları

BASE NEDİR??

Inheritance konusunda temel alinan siniftir. Temel sinif olarak da adlandirilabilir. aslinda her class potansiyel bir Base Class'tir. Aksi belirtilmedikce turetilebilir ve boylece base class olurlar.


public class TextBoxBase{
public void ileri()
{
........
}

}

public class ButtonTextBox: TextBoxBase{
..........
..........
base.ileri();//şeklinde ana sınıf kullanılabilir
}

 

yukaridaki ornekte TextBoxBase class'i ButtonTextBox class'inin Base Class'idir.

Inheritance konusunda siniflarimizi sealed ve abstract keyword kullanarak turemelerini veya turememelerini sagliyabiliriz.


Kaynak::http://www.bilisim-kulubu.com/sozluk/sozluk.php?e=override


REGİON NEDİR

Visual C#'da kapatıp açılabilir kod bölgesi.
#region Falanca işle ilgili kodlar
// falanca iş
#endregion

 

GET-SET NEDİR?

get ve set metodları oluşturduğunuz bir nesnenin private değişkenlerini okumak yada bunlara değer atamak için kullanılır.
get=okuma
set=yazma
Örneğin;
class araba{
private
int hiz;
string model;
public:
void hizlandir(){
hiz++;
}
};
gibi bir class için araba1 adında nesne oluşturduk .araba1 nesnemizin hızını öğrenmek istiyoruz veya hızına yeni değer atamak istiyoruz
cout<diyemeyiz.
Çünkü hız değişkeni private tanımlanmıştır.Buna sadece sınıf içinde erişim sağlanır yani sadece sınıf üyeleri bu değişkene erişebilir.Bu durumda iki metod kullanılır get-set metodları:
Değeri okuyacak metod get yeni değeri yazacak metod ise set metodudur.Örneğimizi yeniden düzenlersek:
class araba{
private:
int hiz;
string model;
public:
void hizlandir()
{
hiz++;
}
 int get(){
return hiz;
}
void set(int a){
hiz=a;
}
};
cout araba1.get();
araba1.set(120);
metodları ile değerler okunup yazılabilir...
Get set fonksiyonlarında benim bilmediğim farklı olaylar da var , value adlı bir değişken üzerinden işlemler yapılıyor...
****************************************************************************************************************************************
C++ ya da Java'da getter setter metodları olarak anılan metodlar C#'a property'ler yani özellikler olarak geçmişlerdir.
kullanım amacı OOP'nin temel özelliklerinden olan encapsulation'ı sağlamaktır...

örnek bir sınıf yazacak olursak...

class insan{
private int m_yas;
public Yas{
 get{
return m_yas;
}
set
{
m_yas=value;
}
}
}

insan adem=new insan();
adem.yas=21;                              //burada özelliğin set kısmı çalışır. yani "value = 21" olur ve yas değişkenine 10 değeri atanır.
Console.Writeln(adem.yas);      //burada özelliğin get kısmı, "return yas" çalışır yani geriye 21 değeri döner...

yani kısaca;
bir değişkene değer atamak için set değişken değerini okumak için get metodu kullanılır


Burada yaptığımız örnekte Yas isimli özelliği tanımlamak yerine m_yas değişkenini public yapmak daha kolay bir çözümmüş gibi görülebilir.
Şimdi bu özelliklerin esas kullanım amacını inceleyelim...

diyelimki yaptığımız programda insanlar 100 yaşından büyük ve sıfır yaşından küçük olamasınlar :)

o zaman sınıf içindeki Yas isimli özelliği tekrar yazacak olursak:


 public Yas
    {
        get { return m_yas; }
       
        set
        {
            if(value < 0)
                m_yas = 0;
            else if(value > 100)
                m_yas = 100;
            else
                m_yas = value;
        }
    }

kullanım örneklerine bakarsak...

insan i = new insan();
i.Yas = -20; // set çalışır, value = -20, m_yas = 0;
i.Yas = 120; // set çalışır, value = 120, m_yas = 100;
i.Yas = 35;  // set çalışır, value = 35 , m_yas = 35;

görüldüğü gibi m_yas değişkinine atanan değerleri artık kontrol edebiliyoruz... koda break pointler koyarak özelliklerin nasıl çalıştığını daha iyi anyalabilirsiniz...
bu arada bir propety'nin içine get veya set ksımlarının ikisinin de yazılması zorunlu değildir... istersek bunlardan sadece birini de yazabiliriz...

örneğin;

public int Yas {
    get { return m_yas; }
}

şeklinde bir özellik tanımlarsak... artık insanın yaşını değiştirilemez hale getirmiş oluruz (readonly)

kod içinde

insan i = new insan();
i.Yas = 3; // Hata

şeklinde bir kullanım yapmaya çalışırsak derleyici tarafından hata alırız...

aynı şekilde

public int Yas{
    set { m_yas = value; }
}

şeklinde sadece set kısmını yazarsak da;

insan i = new insan();
i.Yas = 10; // OK
Console.WriteLine(i.Yas); // Hata

çünkü özellik içinde get ksımı olmadığından m_yas değeri alınamaz...
burada da gene derleme aşamasında hata alırız...

propertilerin en güzel özelliği ise const ve readonly gibi kavramları ortadan kaldırabilmesidir...

bir değişkenin const olmasını istiyorsak:

public static int PI{
    get {return 3.14; }
}

şekilinde tanımlayabiliriz...

Kaynak::http://www.ceturk.com/forum/forum_posts.asp?TID=7810&get=last

 

SUMMARY NEDİR?

 

Visual Studio .NET 2002 editörü ile birlikte kullanılmaya başlanmış, kod dökümanı oluşturmakta oldukça faydalı comment'lerin ana tag'ıdır. C# dili için geçerlidir.

summary olarak belirtilen bir comment ait olduğu özellik*, metod*, sınıf* türü kod nesneleri hakkında diğer yazılım geliştiricilerin bilgilendirilmesini sağlar. summary kullanımı özellikle ekip olarak geliştirilen uygulamalarda veya dağıtılan kütüphanelerde çok faydalıdır.


///


/// Sonraki döküman numarasını string tipinde döndürür.
///

public string NextDocNumber(string ActualDocNum){
   return ActualDocNum;
}


kullanımı yukarıdaki gibidir. NextDocNumber fonksiyonumuzu kullanacak olan bir yazılım geliştirici IDE içinden fonksiyon bilgisine baktığında "Sonraki döküman numarasını string tipinde döndürür." bilgisini görecektir.


summary element'inin alt seviye tagları ile kullanımı daha faydalıdır.

COLLECTION BASE NEDİR??

.Net Framework'te System.Collections aduzayında tanımlanmış, kendi kolleksiyonlarınızı (CustomerCollection gibi) türetebileceğiniz abstract sınıf.

IList (dolayısıyla ICollection (dolayısıyla IEnumerable)) arayüzlerini implement eder. Bir çok standart işlevselliği kendisi implement ettiği  için size düşen sadece indexer, Add, IndexOf, Insert, Remove, Contains metodlarından gerekli gördüklerinizin implementasyonunu yapmaktır.

CollectionBase sınıfı protected olarak işaretlenmiş IList tipinde List isimli bir property'ye sahiptir. Bu List üyesini ArrayList tipinde veren yine protected InnerList property'si de vardır. Bunları kullanarak CollectionBase'in sakladığı elemanlar üzerinde işlem yapabilirsiniz. Bunlar protected olduğu için dışardan erişilemez, sadece türetilen sınıf tarafından erişilebilir.

Örnek olarak CustomerCollection sınıfımızı yazalım:

public class CustomerCollection : CollectionBase
{
    public Customer this[int index] 
    {
        get 
        {
            return (Customer) List[index];
        }
        set 
        {
            List[index] = value;
        }
    }
    public int Add(Customer value)
    {
        return List.Add(value);
    }
    public int IndexOf(Customer value)
    {
        return List.IndexOf(value);
    }
    public void Insert(int index, Customer value)
    {
        List.Insert(index, value);
    }
    public void Remove(Customer value)
    {
        List.Remove(value);
    }
    public bool Contains(Customer value)
    {
        return List.Contains(value);
    }
}

CollectionBase sınıfını kullanarak sadece bu kadar kodla kendi kolleksiyonlarımızı yazabiliyoruz. Güzel bir şey bu. Ama artık C# 2.0'da generics var. O da güzel bir şey.
 
kaynak:::http://www.bilisim-kulubu.com/sozluk/sozluk.php?e=CollectionBase

 

OVERRIDE NEDİR???

OOP programlamada Inheritance kullanirken Base Classimizin Virtual fonksiyonlarini yeniden yazmak veya fonksiyonun yapacagi islemlere yeni bir islem eklemek amaciyla kullandigimiz keyworddur. Base Class icindeki fonksiyonu override edebilmemiz icin fonksiyonun Virtual olarak tanimlanmis olmasi gereklidir.


public class AracBase{
    public X = 0; // aracin konumu

    protected virtual int IleriGit(){
        X += 2;

        return X;
    }
}

 

AracBase class'i 0 konumundan basliyor ve IleriGit() fonksiyonu her cagirildigida 2 birim ileri gidiyor. AracBase class'indan yeni bir class turettigimizde bu sinifta ayni sekilde 2 birim ileri gidicek. Bunu degistirmek, yeni aracimiza gore uyarlamak icin yeni class'imiz icinde IleriGit() fonksiyonunu override ederek yeniden yazmaliyiz.


public class Otomobil: AracBase{
    public override int IleriGit(){
        X += 5; //Otomobil 5 birim ileri gidiyor.

        return X;
    }
}


Ornekte Otmobil class'i olusturuldu ve IleriGit() fonksiyonu yeniden yazildi. Artik AracBase Class'imiz 2 birim ileri giderken Otomobil class'imiz 5 birim ileri gidiyor.

Ayrica yeni IleriGit() fonksiyonumuzun icinde Base Class (AracBase) class'i icindeki IleriGit fonksiyonunu calistirmak istersek


base.IleriGit();


komutunu kullanabiliriz.

bateristt
22 Mayıs 2005 16:30
#1010 
2.  override baskın gelmek,üstün gelmek anlamına gelir.. kimlikleri korunabilen iki ayrı öğenin biri diğerine baskın gelmesi ile ifade edilebilir. çoğu zaman overwrite ile karıştılan kelime..

jessender
19 Ağustos 2005 15:17
#4172 
3.  java'da herhangi bir keyword kullanmadan kullanılabilen özellik. eğer yazdığınız metod base class içinde mevcut ise direk override işlemi yapılır.

ayrıca değişken olarak tanımlanmış bir class'ın metodlarını inheritance kullanmadan override etmek istiyorsanız aşağıdaki kod örneğinden yardım alabilirsiniz


ButtonField btn = new ButtonField("Buton Başlığı"){
    public void BaseFonksiyonAdi(){
        // Fonksiyonun yeni kodları buraya
        // Base fonksiyon çalıştırılması gerekiyorsa super.BaseFonksiyonAdi(); kulanilabilir.
    }
};

 

bateristt
03 Mart 2006 21:45
#7993 
4.  C#'da abstract metodlar da override edilerek implement edilirler. Ama interface'lerden gelen metodlar için override kullanılmaz.


Kaynak::http://www.bilisim-kulubu.com/sozluk/sozluk.php?e=override


Tarih: 11:17, 3/3/2007 Kategori: SOFTWARE DICTIONARY
Yorum (2) | Yorum yaz | Bağlantı

DOS(Denial Of Services) ve DDOS(Distributed Denial Of Services)

 

 

DOS(Denial Of Services) ve DDOS(Distributed Denial Of Services) Atakları

Konu başlıkları
DoS atakları Nedir?
DDoS atakları Nedir?
DoS Ataklarının Türleri?
DoS Atakları için kullanılan programlar?
DDoS Atakları için kullanılan programlar?

DoS atakları Nedir?

DoS yani açılımı Denial of Sevice olan bu saldırı çeşidi bir hizmet aksatma yöntemidir.Bir kişinin bir sisteme düzenli veya arka arkaya yaptığı saldırılar sonucunda hedef sistemin kimseye hizmet veremez hale gelmesi veya o sisteme ait tüm kaynakların tüketimini amaçlayan bir saldırı çeşididir.Birçok Yöntemle Hizmet aksatma saldırıları gerçekleştirilebilir.
Genellikle kullanılan yöntemler üç sınıf altında toplanabilir.
Bant Genişliğine Yönelik Ataklar
Protokol Atakları
Mantıksal Ataklar.

DDoS atakları Nedir?

Bir saldırgan daha önceden tasarladığı BİR ÇOK makine üzerinden hedef bilgisayara saldırı yaparak hedef sistemin kimseye hizmet veremez hale gelmesini amaçlayan bir saldırı çeşididir. Koordineli olarak yapılan bu işlem hem saldırının boyutunu artırır hem de saldırıyı yapan kişinin gizlenmesini sağlar. Bu işlemleri yapan araçlara Zombi denir.
Bu saldırı çeşidinde saldırganı bulmak zorlaşır. Çünkü saldırının merkezinde bulunan saldırgan aslında saldırıya katılmaz. Sadece diğer ip numaralarını yönlendirir.Eğer saldırı bir tek ip adresinden yapılırsa bir Firewall bunu rahatlıkla engelliyebilir. Fakat saldırı daha yüksek sayıdaki ip adresinden gelmesi Firewall un devre dışı kalmasını sağlar(Log taşması firewall servislerini durdurur).İşte bu özelliği onu DoS sadırısından ayıran en önemli özelliğidir.

DoS Ataklarının Türleri?

Service Overloading: Bu atak tipi belirli host ve servisleri düşürmek için kullanılır. Atak yapan kişi özel port ve host a bir çok ICMP paketi gönderir.Bu olay network monitör ile kolayca anlaşılır
Message flooding: Service Overloading den farkı sistemin normal çalışmasını engellemez. Yine aynı şekilde gönderilen paketler bu sefer normal olarak algılanır. Örnek Nis serverında flood yapılırsa (Unix network) Nis bunu şifre isteği gibi görür. Ve saldırganın host a hükmetmesi sağlanır.
Clogging: Saldırganın SYN gönderip ACK alıp ondan sonrada gelen ACK ya cevap vermeyip sürekli syn göndermesinden oluşur. Bu durum defalarca kez tekrarlanırsa server artık cevap veremez hale gelir. Bu paketler sahte ip ile gönderildiğinden sistem bunu anlayamaz ve hizmeti keser. Anlasa ne olur, anlasa aynı ip den gelen o kadar istege cevap vermez. Kurtuluş yolu bunları tarayan firewall lardır.

DoS Atakları için kullanılan programlar?

Ping Of Death
Bir saldırgan hedef aldığı bir makineye büyük ping paketleri gönderir. Birçok işletim sistemi gelen bu maksimum derecede paketleri anlayamaz, cevap vermez duruma gelir ve işletim sistemi ya ağdan düşer ya da çöker.
SSPing
SSPing bir DoS aracıdır.SSPing programı hedef sisteme yüksek miktarda ICMP veri paketleri gönderir. İşletim sistemi bu aldığı data paketlerini birbirinden ayırmaya çalışır.Sonuç olarak bir hafıza taşması yaşar ve hizmet vermeyi durdurur.
Land Exploit
Land Exploit bir DoS atak programıdır. TCP SYN paketiyle hedef sisteme saldırıdır. Saldırı aynı port numarasına sürekli olarak yapılır. Land Expoit aynı kaynak ve hedef portları kullanarak SYN paketleri gönderir.
Bir Çok Makine bu kadar yüklenmeyi kaldıramayacağı için Buffer overflow yaşar ve hiçbir bağlantıyı kabul edemeyecek duruma gelir.
Smurf
Smurf broadcast adreslere ICMP paketleri gönderen bir DoS Saldırı programıdır.Saldırgan ICMP echo istekleri yapan kaynak adresi değiştirerek ip broadcast a gönderir. Bu broadcast network üzerindeki her makinenin bu istekleri almasına ve her makinenin bu sahte ipli adrese cevap vermesini sağlar.Bu sayede yüksek seviyede network trafiği yaşanır. Sonuç olarak bir DoS saldırısı gerçekleşmiş olur.
Bir TCP bağlantısının başında istekte bulunan uygulama SYN paketi gönderir. Buna cevaben alıcı site SYN-ACK paketi göndererek isteği aldığını teyit eder. Herhangi bir sebeple SYN-ACK paketi gidemezse alıcı site bunları biriktirir ve periyodik olarak göndermeye çalışır.
Zombilerde kullanılarak, kurban siteye dönüş adresi kullanımda olmayan bir IP numarası olan çok fazla sayıda SYN paketi gönderilirse hedef sistem SYN-ACK paketlerini geri gönderemez ve biriktirir. Sonuçta bu birikim kuyrukların dolup taşmasına sebep olur ve hedef sistem normal kullanıcılarına hizmet verememeye başlar.
WinNuke
WinNuke programı hedef sistemin 139 nolu portuna “out of band” adı verilen verileri gönderir. Hedef bunları tanımlayamaz ve sistem kilitlenir.
Kullanımı
WNUKE4 -c XXX.com 10000 0 450
(hedefe 10,000 adet 450 byte lık icmp paketleri gönderir.)
WNUKE4 -n XXX.com 0 1024-2024 6667-6668 UNPORT
Jolt2
Jolt2 kendisini farklı segmentte bulunuyormuş izlenimi vererek NT/2000 makinelere DoS atak yapabilen bir programdır. İllegal paketler göndererek hedefin işlemcisini %100 çalıştırıp kilitlenmesine yol açar.
c: > jolt2 1.2.3.4 -p 80 4.5.6.7
Komut satırında görülen, 1.2.3.4 ip numarası saldırganın spoof edilmiş adresidir. Hedef adresin 4.5.6.7 80 nolu portuna saldırı yapar.
CPU kaynaklarını tamamını harcar ve sistemi aksatır
Bubonic.c
Bubonic.c Windows 2000 makineleri üzerinde DoS exploit lerinden faydalanarak çalışan bir programdır.
Hedefe düzenli olarak TCP paketlerini gönderir.
c: > bubonic 12.23.23.2 10.0.0.1 100
Targa
Targa 8 farklı modül içinde saldırı yapabilen bir Denial of Service Programıdır.

DDoS Atakları için kullanılan programlar?
1.Trinoo
2.TFN
3.Stacheldraht
4.Shaft
5.TFN2K
6.mstream

DDOS – Saldırı Yöntemi

Tüm DDoS programları iki safhada çalışır.
Mass-intrusion Phase – Bu safhada DoS saldırısı yapacak olan sistemlere ulaşılır ve saldırıyı gerçekleştirecek olan programlar yüklenir. Bunlar birincil kurbanlardır.
DDoS Attack Phase – Bu safhada hedef sitelere saldırı yapılır bunun içinde birincil kurbanlar kullanılarak hedefe yüklenilir.
Trinoo
Trinoo DDoS yöntemini kullanan ilk programdır.
Kullandığı TCP Portları:
Attacker to master: 27665/tcp
Master to daemon: 27444/udp
Daemon to master: 31335/udp
TFN2K
Zombilerin yüklendiği makineler listening modda çalışır. Her an karşıdan gelecek komutlara hazırdır.
Running the server
#td
Running the client
#tn -h 23.4.56.4 -c8 -i 56.3.4.5 bu komut 23.4.56.4 nolu ipden 56.3.4.5 nolu ip ye saldırı başlatır.
Stacheldraht
TFN ve Trinoo gibi çalışır fakat modüllerine paketleri kriptolu gönderebilir.
Kullandığı portlar TCP ve ICMP
Client to Handler: 16660 TCP
Handler to and from agents: 65000 ICMP


Kaynak..::www.e-hack.org

 

Tarih: 11:47, 2/3/2007 Kategori: HACKER
Yorum (yok) | Yorum yaz | Bağlantı

Vanilyalı Dondurma

Vanilyalı dondurma

General Motors şirketinin Pontiac marka otomobil departmanına gelen bir şikayet mektubu şu satırlardan oluşuyordu:
 
"Her akşam yemekten sonra ailecek dondurma yeme alışkanlığına sahibiz. Fakat bir çok dondurma çeşidi olduğu için her yemekten sonra ne çeşit dondurma yiyeceğimize hep karar veririz. Ben de markete gider alırım. Geçen ay otomobilimi değiştirip yeni bir pontiac aldım ve o günden beri markete gidip gelmek benim için sorun olmaya başladı. Çünkü ne zaman vanilyalı dondurma alsam market çıkışında otomobilimi çalıştıramıyorum. Fakat başka çeşit bir dondurma aldığımda arabam gayet güzel çalışıyor. Bu sorun size çok saçma bile gelse, benim çok ciddi olduğumu bilmenizi isterim. Vanilyalı dondurma aldığımda arabam çalışmazken, neden başka dondurma aldığımda arabam çalışıyor?"
 
Kolaylıkla buruşturulup atılacak bir şikayet mektubu gibi görünüyor, değil mi? Öyle de olabilirdi. General Motors yetkilileri bu şikayet mektubunu bir kenara atabilirdi, müşterinin sorusuda sonsuza dek yanıtsız kalabilirdi. Ancak General Motors şirketi olayı araştırması için bir mühendisi görevlendirdi.
 
Mühendis, nezih bir muhitte oturan, iyi eğitim almış Pontiac sahibiyle karşılaşınca biraz şaşırmıştı, böyle bir konuda dalga geçecek birine benzemiyordu. Akşam yemekten sonra yapılan dondurma alışverişine birlikte çıktılar. Vanilyalı dondurma alıp geri döndüklerinde, gerçekten de otomobil çalışmıyordu. Ertesi akşam çikolatalı dondurma aldılar ve araba çalıştı. Üçüncü akşam sıra çilekli dondurmadaydı ve araba yine çalışıyordu. Son deneme turunda vanilyalı dondurma alındı ve maalesef araba yine çalışmadı.
 
General Motors yetkilisi şaşkındı. Bir mühendis olarak, arabanın vanilyalı dondurmaya alerjisi olduğunu düşünmek pek akıllıca gelmiyordu. Bunun üzerine ziyaretlerine bir süre daha devam etti. Olayın günün hangi saatinde olduğunu, hangi tip benzin kullanıldığını, gidip gelme süresini ve daha pek çok ayrıntıyı incledi. Kısa bir süre içinde de ilk ipucunu elde etti. Vanilyalı dondurma almak diğer çeşitlere oranla çok daha kısa sürüyordu. Çünkü en çok aranılan ürün olan vanilyalı dondurma marketin hemen girişindeki dolapta satılıyordu. Diğer dondurma çeşitleri ise marketin en arka kısmında kurulu bir tezgahtan seçiliyordu. Herhangi değişik bir çeşidi almak bu yüzden çok daha uzun sürüyordu. Şimdi mühendisin karşı karşıya kaldığı soru şuydu? Otomobil neden daha kısa süre içinde geri dönünce çalışmıyordu? Zaman faktörü işin içine girince mühendis sorunun cevabını bulmakta zorlanmadı. Sorun, motor soğuduğunda devreye giren buhar kilidinden kaynaklanıyordu. Bu kilit, normal şartlarda motor durduktan hemen sonra devreye girip çalışıyordu ve çikolatalı yada çilekli dondurma alana dek geçen süre, motorun tekrar çalışması için yeterli soğumaya imkan tanıyordu. Vanilyalı dondurma gecelerinde ise süre çok kısa olduğu için motor soğuyacak vakit bulamıyor ve buhar kilidi devreye girmiyordu.
 
Bu öyküden de anlaşılacağı gibi, komik hatta asılsız gibi görünen bir müşteri şikayeti bir şirketin ürün geliştirmesinde kullanabileceği değerli bir veri haline dönüşebiliyor. Müşteri şikayetlerinin değerlendirildiği zamanlarda bir kurum için hediye niteliği taşıdığı bilinir. Bu gerçek öykü, garip bile olsa müşteri sorunlarının ve şikayetlerinin ürün ve hizmet geliştirmeye olan katkısının önemini gösteriyor.

Kaynak..::Müb@rek Abi:)


Tarih: 22:07, 1/3/2007 Kategori: AND LIFE
Yorum (yok) | Yorum yaz | Bağlantı

Assembly Toplama Yoluyla Çarpma

Assembly de Toplama Yoluyla Çarpma yapalım

MASM32 Editörü için Kodumuz

 

.586p                                                ;kullancağımız cpu
.model flat,stdcall                               ;CPU modeli
option casemap:none
.data                                                  ;Değişkenlerimiz
             sayi1            db     15            ;çarpılan
             n          db        3                   ;çarpan
             sonuc          db       0             ;sonuc
.code

start:
  mov al,0                                            ;al registerine 0 atıyoruz
  mov cx,4                                           ;conter registere çarpanımızı atıyoruz döngünün çarpan kadar dönmesini sağlar
  dongu:                                               ;döngü komutumuz   
  add  al,sayi1                                      ;çarpılan ile al registerinin çeriğini topluyoruz
  Loop dongu                                       ;döngümüz
  mov sonuc,al  
end start

Kodumuzu pascalda yazmaya nedersiniz???

Saat çok geç olduğu için bu kod açıklamasını yapamıyacam.Çoook uykum var:(

İşte PASCAL kodumuz..

 

uses crt;
var
sayi1,sayi2,sonuc:byte;
n:integer;
mylop:string;
begin
clrscr;
writeln('Sayıları giriniz');
writeln('sayi1=');
readln(sayi1);
writeln('n=');
readln(n);
asm
mov al,0
mov cx,n
@@theloop:
add al,sayi1
loop @@theloop
mov sonuc,al
end;
writeln('Sonuc=',sonuc);
end.
İyi Kodlamalar


Tarih: 03:05, 1/3/2007 Kategori: ASSEMBLY
Yorum (yok) | Yorum yaz | Bağlantı

C# NEDİR???

C# GİRİŞ

 

C# NEDİR???

C ve C++ dilinin ilk bileşen yönelimli dilidir. C#, güçlü, modern, nesne tabanlı ve aynı zaman type-safe(tip-güvenli) bir programlama dilidir.Aynı zamanda C#, C++ dilinin güçlülüğünü ve Visual Basic’ in ise kolaylığını sağlar.

C# kullanmak için CLR ve .NET Framework sınıf kütüphanesine ihtiyacımız vardır. Bu da demek oluyor ki C#, JAVA, VB ya da C++ değildir. C,C++ ve JAVA ’nın güzel özelliklerini barındıran yeni bir programlama dilidir. Sonuç olarak C# ile kod yazmak hem daha avantajlı hem daha kolay hem de etkileyicidir.

C# programlama dili .NET Framework için kod geliştirmek-desteklemek amacı ile tasarlanmıştır. C# dilinde kullanılan ve her programlama dilinde bulunan kütüphaneler aynı zamanda .NET Framework tarafından kullanılan kütüphanelerdir. Yani C# dilini .NET ortamından ayırsanız bile bir biri ile sıkı sıkıya bağlıdır.

 

.NET Framework ve C# ’ın arasındaki en önemli iki ilişki : Ortak dil çalışma zamanı ( CLR - Common Language Runtime ) ve .NET sınıf kütüphanesidir.

BİRKAÇ KAVRAMA DEĞİNELİM

C# öğrenmeye başlamadan önce çok fazla karşımıza çıkan bir kaç kavramı öğrenmekte öğrenilmesinde yarar var şimdi bu kavramlara değinelim:

Microsoft .NET nedir?


Microsoft .NET insanların, bilginin, sistemlerin ve cihazların iletişimini sağlayan bir platformdur. İstemci ve sunucu uygulamaların yanısıra geliştirme araçlarını da kapsamaktadır. Bu oluşum içerisinde ayni zamanda:

Web tabanlı uygulamaların, web servislerinin ve her türlü uygulamanın geliştirilip çalıştırılabildiği bir platform olan .NET Framework de bulunmaktadır. .NET Framework ile uygulamalar iletişim standartlarına(SOAP, XML, HTTP vb) uygun olarak geliştirilebilmektedir.
Visual Studio .NET gibi entegre geliştirme ortamlarına(Integrated Development Environment - IDE ) ve araçlara sahiptir. Bu araçlar sayesinde .NET Framework ile uygulama geliştirme daha kolay hale gelmekte ve verimlilik maksimum düzeye ulaşmaktadır.
 
Web servisleri ve web tabanlı uygulamalar ile entegre çalışabilen ve bu uygulamaların kolaylıkla yönetilebildiği Windows Server 2003, Microsoft SQL Server ve Microsoft Biztalk Server gibi sunucuları da kapsamaktadır.
İstemci(client) ve masaüstü uygulamaların rahatlıkla çalışabildiği Windows XP, Windows CE ve Microsoft Office gibi platformları da kapsamaktadır.

.NET Framework nedir?


Microsoft .NET Framework, uygulamaların ve web servislerinin inşa edilebildiği(build), yayımının yapılabildiği(deploy) ve çalıştırılabildiği(run) bir platformdur.
’Build - Deploy - Run’ .NET Framework platformu için üç anahtar kelimedir. Verimliliği yüksek, standartlara uygun ve çoklu dil desteği bulunan bir platformdur. Internet ölçekli uygulamaların operasyonu ve yayımlanması için karşımıza çıkan zorluklar .NET Framework’un sağladığı servisler sayesinde rahatlıkla aşılabilmektedir. .NET Framework iki temel bölümden oluşmaktadır: Common Lanuguage Runtime, Hiyerarsik düzendeki sınıf kütüphanesi.

.NET Framework:


20 den fazla programlama diline destek vermektedir
Uygulama geliştiricilerin iş mantığı(business logic) içeren kod kısmına yogunlaşmalarını sağlamaktadır
Güvenli, sağlam, yüksek performanslı uygulamaların geliştirilebilmesini sağlamaktadır. Eskiye göre; geliştirme, yayımlama ve yönetimin çok daha kolay olduğu bir platformdur.
Desteklenen Programlama Dilleri

APL Fortran Pascal
C++ Haskell Perl
C# Java Language Python
COBOL Microsoft JScript RPG
Component Pascal Mercury Scheme
Curriculum Mondrian SmallTalk
Eiffel Oberon Standard ML
Forth Oz Microsoft Visual Basic


Common Language Runtime (CLR) nedir?


Common Language Runtime çalışma zamanı servislerinden sorumludur. Programlama dillerinin entegrasyonu(language integration), güvenlik(security), bellek(memory), süreç(process) ve thread(is parçacigi) yönetimi çalışma zamanı servislerindendir. CLR bunun yani sıra geliştirme zamanında da bazı rollere sahiptir, örneğin tip güvenliğinin sağlanması gibi.

Common Language Runtime, .NET Framework ile yazılmış uygulamaların işletiminden sorumlu bir motor gibi görev yapmaktadır.

Adından da anlaşılabildiği gibi, farklı dillerde yazılmış uygulamaların birlikte sorunsuz çalışabildikleri –diller arası birlikte-(cross-language interoperability) olarak bilinen-bir çalışma zamanı ortamıdır.

Yönetilen kod(managed code) CLR ile ilgili önemli bir kavramdır.Yönetilen kod yalnızca CLR nin yardımları altında çalışan koddur.Bu nedenle CLR tarafından yönetilir.


CLR’nin sağladığı ve sorumlu olduğu bazı servisler aşağıda listelenmektedir:

Kod yönetimi(Code Management): Loading ve Execution
Uygulama belleğinin izolasyonu
Tip güvenliğinin(type safety) dogrulanması
IL(Intermediate Language) kodunun doğal makina koduna(native code) dönüşümünün sağlanması
Metadata(tipe ait detaylandirilmis bilgiler) bilgisine erişimin sağlanması
Yönetilebilir nesnelerin(managed object) bellek yönetiminin sağlanması
Kod erişim güvenliğinin(code access security) uygulanması
İstisna yönetimi(Exception Management)
Yönetilebilir kodlar, COM nesneleri ve hazır DLL’lerin birbirleri arasında işletimlerinin sağlanması
Nesne otomasyonunun sağlanması
Uygulama geliştiriciler için servislerin sağlanması (debugging vb.)


Sınıf Kütüphaneleri


Temel sınıflar; giris/çikis(input/output), string işlemleri, güvenlik yönetimi, ağ iletişimi, thread yönetimi, metin isleme ve kullanıcı arayüz tasarımı gibi standart fonksiyonları kapsamaktadır.

ADO.NET sınıflar; OLE DB, ODBC, Oracle ve SQL Server arayüzleri üzerinden veriye erişimi sağlamaktadır. XML sınıflar ise XML manipulasyonu, XML veri içerisinde arama yapabilme ve dönüşüm fonksiyonları gibi temel fonksiyonlara sahiptir. ASP.NET sınıfları web tabanlı uygulamalar ve web servisleri geliştirebilmek için destek sağlamaktadır. Windows Forms sınıfları ise masaüstü uygulamaları geliştirebilmeyi sağlamaktadır.

Sınıf kütüphaneleri, .NET Framework dilleri arasında ortak, tutarlı bir geliştirme arayüzü sağlamaktadır.

Common Type System (CTS) nedir?

CLR içerisine inşa edilmiş güçlü ve zengin bir tip sistemidir(type system). Çoğu programlama dilinde bulunan tipleri ve bu dillerin operasyonlarını desteklemektedir. Birçok programlama dilinde bulunan tiplerin Common Type System içerisinde gerçekleştirimi yapılabilmiş durumdadır.

Common Language Specification (CLS) nedir?


Common Language Specification(CLS), bünyesinde barındırdığı birtakım yapıları ile kütüphane(library) ve derleyici(compiler) yazabilmek için rehberlik yapmaktadır. CLS, yazılan bir kütüphanenin CLS’yi destekleyen diğer programlama dilleri ile entegre şekilde çalışabilmesini ve bu diller tarafından da kullanılabilmesini sağlamaktadır. CLS, CTS’nin bir altkümesidir. CLS uygulama geliştiriciler için büyük önem arzetmektedir. Öyle ki bir uygulama geliştirici yazdığı kodun diğer kod geliştiriciler tarafından da kullanılabilir olmasını gözönünde bulundurmalıdır. CLS’nin kriterleri ve kuralları gözönünde bulundurularak yazılan bir API(Application Program Interface), diger programlama dilleri içerisinden kullanılabilmekte, Common Language Runtime tarafından da isletilebilmektedir.

Microsoft Intermediate Language (MSIL) nedir?


MSIL işlemciden bağımsız komut setinden oluşmaktadır. Bu komut seti içerisinde nesnelerin yüklenmesi, depolanması ve initialize edilmesini sağlayan komutların yanı sıra ayni zamanda nesneler üzerinde metod çağrımını sağlayan komutlar da yeralmaktadır. .NET Framework ile yazılmış bir kaynak kodun derlenmesi sonucu MSIL kodu oluşmaktadır. MSIL, Metadata ve CTS sayesinde .NET dilleri arasında bir bütünleşme sağlanmaktadır. MSIL kodun çalıştırılmasından önce varolan MSIL kodu doğal makina koduna(native code) dönüştürülmektedir. Interpretation dediğimiz yorumlama işlemi yapılmaz.

Managed Code ve Managed Data nedir?


Kodun çalıştırılabilmesi için gerekli servislerin ve hizmetlerin Common Language Runtime’dan alındığı koda ’Managed Code(Yönetilebilir Kod)’ denilmektedir. CLR tarafından gerekli servis ve hizmetlerin alinabilmesi için yönetilebilir kodun bilgisinin(metadata) bulunması gerekmektedir. Kodun çalıştırılabilmesi için çalışma zamanında bu bilgi CLR tarafından kullanilacaktır. C#, Visual Basic .NET ve J******.Net ile yazilan kodlar yönetilebilir kodlardır. Visual Studio.NET içerisinde yazılan C++ kodu varsayılan olarak yönetilemeyendir. C++ kodunun derleme sonrası oluşan kodun yönetilebilir olmasını sağlamak için derleme işlemi sırasında ’/CLR’ parametresinin de belirtmek gerekmektedir.

Veri(data) için gerekli yer tahsisinin CLR tarafıundan yapıldığı veriye ’Managed Data(Yönetilebilir Veri)’ denilmektedir. Ayni şekilde veri için bellekte tahsis edilmiş yerin tekrar geri alınması işlemi CLR içerisinde bulunan Garbage Collector tarafından yapılmaktadır. C#, Visual Basic .NET ve J******.Net verileri varsayılan olarak yönetilebilir verilerdir. C# verileri program içerisinde belirtilecek anahtar kelimelerle yönetilemeyen(unmanaged) veri olarak belirlenebilmektedir. Visual Studio.NET C++ verisi varsayılan olarak yönetilemeyen veridir. /CLR parametresinin verildiği durumda veri yönetilebilir olmaktadır. Ancak C++’in yönetilebilir uzantıları (Managed Extension) ile yazılan bir sınıfın ’_gc’ anahtar kelimesi ile tanımlanması bu sınıftan oluşturulan nesnelerin yönetilebilir olmasını sağlamaktadır. Anahtar kelimeden(_gc) anlaşılacağı gibi veri Garbage Collector tarafından yönetilmektedir. C++ ile yazılan bu yönetilebilir sınıf diğer .NET dilleri tarafından da kullanılabilmekte. Yönetilebilir C++ sınıfı özelliklerini bir C# sınıfından kalıtım (inheritance) ile alabilmektedir. Ancak C++ yönetilebilir sınıfı kalıtım(inheritance) yoluyla en fazla bir adet sınıftan özelliklerini alabilmektedir

HERYÖNÜYLE C#

 

Otomatik Bellek Yönetimi(Garbage Collection) : C dilinde ve C++ dillerinde bellek yönetimi tamamen programcının elindedir. Bir nesne oluşturulduğunda, kullanıldığında ve daha sonra işi bittiğinde programcı nesne için bellekte ayrılan yeri iade eder. C#’ta bir nesne kendisine işaret eden bir referans olmadığında bellekten silinir. Tabi bu nesnenin işi biter bitmez gerçekleşmez. Nesnenin bellekten silineceği zamanı yine Garbage Collector belirler.

Tip Güvenlidir : Bool tipinden Integer tipine yada türetilen sınıftan taban sınıfa doğrudan tür dönüşümü gerçekleşmez.

Overloading :  Function Overloading ve Operator Overloading özelliklerini destekler.

Function Overloading  aynı isimdeki fonksiyonların değişik tip ve sayıdaki parametreler alarak hangisinin çağrılmasına derleyici tarafından karar verilmesini sağlayan mekanizmadır. Gerek fonksiyonlar için olsun gerekse operatörler için,Overloading  nesnel yönelimli dillerde genelde varolan bir yöntemdir.

Göstericiler : Gösterici (pointer) işlemlerini destekler. Güvenli kod(safe code) yazılabileceği gibi C dilindeki göstericileri C# ile kullanabiliriz.

Değer Tipleri (value types): C Sharp’ta oluşturulan sınıflar(class) referans tipindedir. Yapılar(struct) ile oluşturulan tipler ise değer tipindedir ve bellekte heap alanında tutulmaz.

İsimuzayları (Namespace) : C Sharp’ta her sınıf bir isimuzayının parçasıdır. İsimuzayları benzer işlevlere sahip sınıfları, yapıları veya enumatörleri (enumaration) gruplamak için kullanılır.

Yukarıda geçen özelliklerin yanısıra C Sharp 2.0 ile eklenen yeni özellikler olmuştur.

C Sharp ile yazılan uygulamaların (bu bir windows, web yada console uygulaması  olabilir) çalıştırılabilmesi için .NET Framework yazılımının kurulması gerekir. C Sharp uygulamaları .NET kütüphanesi içerisindeki sınıfları kullanır. C Sharp bir programlama dilidir ve .NET kütüphanesi içerisindeki sınıflardan faydalanılarak uygulama geliştirilir. Bu yüzden yazılan uygulamaların çalıştırılacağı makinede .NET Framework bulunmalıdır.

C#dili bileşiktir-herşey bir nesnedir.Kutulama ve kutuyu açma gibi kavramların yenilikçi kullanımı ile C# ,her veri parçasının bir nesne olarak değerlendirilmesine olanak sağlayarak , değer türleri (value type) ve başvuru türleri (referance type) arasındaki açığı kapatır.

C# özellik yönetim ve olaylar temellidir.Birçok dil, dil ve ilişkili çerçeveler içerisinde gereksiz uyuşmazlıklar oluşturarak, özellikler ve olaylar için gerçek desteği gözardı eder.

C# bileşenler hakkında bildirimsel bilginin tanımlanması  ve kullanılmasını sağlayan nitelikleri destekler.

Birçok syntax hatası derleme zamanında bulunur..

.Net framework yüklü tüm platformlarda çalışır…

C#, Visual Basic ile C++ arasında bulunan boşluğu gidermek için dizayn edilmiştir. C#, C++ ile yazılabilen ve yazılırken C++ kadar zor olmayan aynı zamanda Visual Basic’ten daha yüksekte program yazmak isteyen yazılımcıları hedef almıştır. C++ ve VB arasındaki boşluğu dolduran ve pek tatmin edici olmayan J++ bu durumuna rağmen C# ile birçok yönden benzerlik göstemektedir. C#, C++’ın syntax’ına çok benzeyen bir syntax’a sahiptir ve C++’ın birçok özelliğini destekler örneğin inheritence (multiple olmamasına rağmen). Bu nedenle C++ programcıları C#’ı çok kolay bir şekilde öğrenebileceklerdir. Visual Basic programcıları kendilerini yepyeni bir syntax ve birçok object oriented kavramı ile karşı karşıya bulacaklardır ancak C#’ı öğrenmek, C++’ı öğrenmekten çok daha kolaydır.

.NET framework’ü, kullanılan kaynakları boşaltmakta çok başarılıdır. Bu başarının sırrı ise managed code içerisindeki değişkenlerin stack yerine managed heap’de tutulmasıdır.

C# ise her iki dünyanın avantajlarını bize sunmaktadır. Tam anlamıyla inheritence’ı destekler fakat bunun yanısıra .NET framework’ü source dosyalarımıza ulaşmadan inheritence sağlayabilmek için compile edilmiş durumda bulunan library dosyalarını (assembly) sağlar. Bu sayede .NET programcılık tarihinde ilk kez programlama dilleri arasında çapraz geçişlere izin veren ve gerçek anlamda bir yeniden kullanım olanağı sağlayan bir platform olmuştur.

C# memory management’ta Visual Basic’in yolunu izler, yani sorumluluk dilin kendisindedir. Ancak VB’nin aksine C#’da memory’yi kendiniz sınıflandırmak isterseniz yazdığınız kodun bir bölümünü unsafe olarak belirtebilir ve sonra da C++’da olduğu gibi Memory için yer ayırıp daha sonra bu kısmı boşaltabilirsiniz.

Dil olarak C# nerededir

C# orta seviye bir programlama dilidir. Bir sıralama yapacak olursak C#’ın bu sıralamadaki yeri aşağıdaki gibi olacaktır.

 Assembly

 C,C++

 C#,J++

Visual Basic

VBA, Scripting Dilleri

Listemizde yukarıdan aşağıya doğru inecek olursak aşağıya indikçe dillerin öğrenimi kolaylaşır.Daha az kod yazarak ve daha az zaman harcayarak istediğimiz projeleri gerçekleştirebiliriz.

Son olarak bir yazılımcı kullandığı dilin piyasadaki değerini ve ticari yönünüde takip etmek zorundadır..C# ın piyasası ortada tartışmaya bile değmez.İş ilanlarını takip ediyorsanız C#,  ASP.NET ve SQL bilen elemanlara çok fazla ihtiyaç duyulmaktadır….

 




Tarih: 02:18, 1/3/2007 Kategori: CSHARP NET
Yorum (1) | Yorum yaz | Bağlantı

.NET SİTELERİ

Heralanda Favori vazgeçilmez sitem

 

http://www.cyber-warrior.com

 

Csharp mı öğrenmek istiyorsunuz o halde size çok yardımcı olacak birkaç site vereyim İnanın Bu siteleri ziyaret ettiğinize pişman olmayacaksınız..NET sitelerini bu alan altında vereceğim hepinize hayırlı olması dileğiyle....

 

C# // ASP.NET //SQL SİTELERİ

 

TÜRK Siteleri

 

http://www.csharpnedir.com

 

http://www.bilyaz.com

 

http://www.maxiasp.com

 

http://www.ceturk.com

 

http://www.ceviz.net

 

http://www.yazgelistir.com

 

http://www.evcil.net

 

http://www.sqlnedir.com

 

http://www.msakademik.net

 

http://www.csystem.org

 

http://www.csdos.org

 

http://www.microsoft.com/turkiye

 

YABANCI Siteler

 

http://www.codeproject.com

 

 


Tarih: 01:58, 1/3/2007 Kategori: MY FAVORI LINKS
Yorum (yok) | Yorum yaz | Bağlantı

<- Son Sayfa | Sonraki Sayfa ->