-

C#DA RUN-TİME NESNE-KONTROL OLUŞTURMA

Diyelim ki c#da  bir sinema otomasyonu yapmanız gerekiyor.Formu dizayn ederken yapmanız gereken koltukları temsilen herhangi bir kontrol eklemektir.Bir sinema salonu 50 kişilik ve 4 tane de salon varsa toplamda formlarınız için 200 tane kontrol eklemeniz gerekmektedir.Oldukça uğraştırıcı ve zaman kaybettiren bir dizayn işlemi olacaktır sizin için.Programlama bilgisi çok iyi olmayan birinin yapacağı kontrolleri tek tek eklemek olacaktır,oysa ki object oriented programming(nesne yönelimli programlama)  dan ve nimetlerinden haberdar olan programcı ise kontrolleri tek tek eklemez onları kodu çalıştırırken yapabileceğini bilir.Benim bahsedeceğim de 2. seçenek,yani kontrolleri elle, tek tek değil de kod içerisinde oluşturup çalıştırmaktır, yani Run-Time(çalışma anında) nesne oluşturmak olacaktır.
Run-Time kontrol oluşturabilmek için o kontrolden bir nesne yaratmanız gerekecektir.
Button btn = new Button();  diye tek bir nesne oluşturup döngüler yardımıyla istediğiniz kadar buton görüntüleyebilirsiniz.
Bu konuyla ilgili BilgeAdamda staj yaparken derste yazdığımız  şu  kodu beraber inceleyelim:

int x = 40; //başlangıç x koordinatı

int y = 40;//başlangıç y koordinatı
int b = 1; //yerleştirilen buton numarasının tutar
private void Form3_Load(object sender, EventArgs e) //işlemleri form yüklenirken yapsın
{
for (int i = 0; i < 10; i++)                          //matrix mantığı ile 100 tane buton oluşturacaz
{
for (int j = 0; j < 10; j++)
{
Button btn = new Button();
//butondan bir nesne oluşturmamız gerekecek
btn.Name = “btnNo” + b;
//her birinin adı oluşum sıralarının adını alacaktır
btn.Text = b.ToString();
btn.Size = new Size(40, 40);              //size her defasında 40-40 olacaktır
btn.Left = x;
x += 40;                                //x koordinatı tek bir satır için her defasında 40 yana kaymalı
btn.Top = y;                         //y koordinatı aynı satır aynı kalır alt satıra geçildiğinde 40 artar
b++;                             //butonun numarası her defasında bir artacaktır
btn.Click += new EventHandler(btn_Click);    //hatta isterrsek o butona event bile yazarız
//butona basılma eventini tutar
//event olduğunu += gösterir
//bu formun kontrollerine oluşturduğun btn nesnesini eklemen gerek
this.Controls.Add(btn);                  //btn kontrolünün nereye ait olduğunu belirtmeiz gerekir,formun kontrolü
}
x = 40;                     //ilk 10 taneyi oluşturduktan sonra alt satıra geç ama lefti değişmeyecek
y += 40;                    //top üstten bir satır uzaklaştığı için +40 olmalı
}    }
void btn_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
//sender içinde thisin verilerini tutar
MessageBox.Show(“Merhaba ” + btn.Text + ” im..”);
}

işte çıkan sonuç:

Butona tıkladığımızda da şöyle bir görüntü oluşur:

DERYA GÜNDÜZ

ADO.NET’TE CONNECTED DİSCONNECTED MİMARİLER

ADO.NET  teknolojisi ile veritabanından veri çekmenin 2 yolu vardır.

  • Connected Mimari
  • Disconnected Mimari

Connected Mimari:
Bu mimaride veri tabanından veri çekme süresi boyunca uygulama veritabanına bağlı kalır ve bilgiler bağlı kalma süresi boyunca çekilebilir.Veri çekmek için veritabanına sürekli bağlı olması zorunluluğundan dolayı sql server sürekli meşgul olur,bu bir dezavantajdır.Connected ile veri çekebilmek için SqlCommand ile ConnectionString yazılır ve veriler SqlDataReader ile okunur.SqlDataReader ile veriler tek tek okunur,bu da bir dezavantaj sayılabilir.Connected mimarinin güzel yönlerinden bir tanesi sqlden alınan verilerin daima en güncel veriler olmasıdır,yapılan  bütün değişikler direk veritabanına yansıdığı için veri alınacağı zaman da en güncel veriler gelir.Connected yapıda disconnected yapıya göre veriler daha  hızlı çekilir(datareaderden dolayı)

Disconnected Mimari:
Bu mimaride uygulama sqle bağlı olmaz,bağlı olmadan veriler çekilir.Peki nasıl oluyor da bağlı olmadığı halde veritabanından veri çekebiliyor?Uygulamanın veritabanına bağlı olmadan veri çekmesini sağlayan yapı SqlDataAdapterdır.Disconnected mimaride  SqlDataAdapter nesnesi oluşturulur ve bu aracı nesne sayesinde veri tabanından veri çekilir,bütün bağlantılar bunun üzerinden yapılır.Uygulama veritabanına hiç bağlanmadığı için de buna  disconnected yapı denilmiş.Disconnected mimaride bağlantı açılıp kapanmaz,SqlDataAdapter bağlantıyı kendisi açar kapatır.DataAdaptör üzerindeki sql verileri datatable ve datasetlere doldurulur(fill).Böylece sqldeki veriler kullanıma hazırdır.
DataTable—->bellek üzerindeki tablodur
DataSet——>bellek üzerindeki datatablelardır(oluşturulan datatablelar datasete atılır)
Disconnected yapıda uygulama veritabanına bağlı olmadığı için veritabanını meşgul etmek anlamında connected yapıdan daha iyidir.Ama disconnected yapı connected yapıya göre daha eski bilgiyi getirir,veritabanı üzerindeki değişiklikler direk veritabanına yansımadığı için en güncel veriye ulaşamıyor.Databasede yapılan değişikler biz istediğimiz zaman veritababnına yansır.

DERYA GÜNDÜZ

C#’DA SQLDEN VERİ ÇEKME-LİSTVİEW’E YAZDIRMA

Ado.net teknolojisi sayesinde .net applicationdan database ulaşıp orada veri çekebiliyoruz.Bu vereceğim örnekte de C# veri tabanından sql veri tabanına bağlanıp ordaki Northwind veri tabanında bilgi alıp listviewe yazdıracaz.Bu yayınlayacağım örnek kod BilgeAdam’da staj yaparken girdiğim derslerde gördüğümüz örneklerden.
Önce form disaynını yapmalıyız,
-listview eklemeliyiz
-listviewın view propetysini “details” yapmalıyız,
-”edit colonms” seçeneğinden iki kolon ekleyip bu kolanlara “ürün adi” “fiyat”  adlarını vermeliyiz,
-kodlama kısmına geçebiliriz
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;            //sql ile bağlantı kurmak için gerekli kütüphane
namespace AdoConnected1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        private void Form2_Load(object sender, EventArgs e)
        {
//server=server name   database=database name
//integrated security=true     //windows authenticationda çalışıldığını gösterir
            SqlConnection conn = new SqlConnection(“server=DERYA-PC\SQLEXPRESS;database=Northwind;integrated security=true”);
            //komut nesnesi
            SqlCommand cmd = new SqlCommand(“select ProductName,UnitPrice from Products”,conn);
            SqlDataReader dr;
            conn.Open();
            dr = cmd.ExecuteReader();//komudu çalıştır execute okusun
            string urunAdi;
            decimal fiyat;
            while (dr.Read())
            {
                urunAdi = dr.GetString(0);//0. kolon
                fiyat = dr.GetDecimal(1);//2. kolon
                ListViewItem Ivi = new ListViewItem();
                //ListView e ekleme yapmak için itemından nesne oluşturup ona ekliyoruz
                Ivi.Text = urunAdi;     //text ilk kolon
                Ivi.SubItems.Add(fiyat.ToString());  //ondan sonraki bütün kolonlar subitem oluyor
                listView1.Items.Add(Ivi);
            }
        }
    }
}
DERYA GÜNDÜZ

C#’DA OTOMATİK PROPERTY EKLEMEK

BilgeAdam kursunda Çağlar Hoca ile Sql dersinde bugün yeni birşey daha öğrendim,çok kısa ama bence güzel bir ayrıntı,ya da güzellik diyeyim.
C#’da oluşturulan class elemanları için property yazmamız gerektiği zaman,yeni framework ile gelen özelliklerden birtanesi olarak,property’i taslak olarak kısa yoldan ekleyebiliriz.Uzun uzun yazmak yerine kısa yoldan eklemiş oluruz,ya da bazen yapının nasıl olduğunu hatırlamayabiliriz.
string productName
tanımlamasını yaptıktan sonra,productName ‘in propertysini yazmamız gerkiyorsa:
–productName  üstünü ters tıkla/refactor/encapsulate field tıklanır

–açılan pencerelerde ok/apply dedikten sonra property otomatik olarak projemize eklenmiş olur

–ilk harf küçük harf ise property adını kendisi büyük harf verir,ilk harf büyükse kendisi ad+1 gibi isimler verir.

DERYA GÜNDÜZ

SQL’de oluşturulan tablonun backupını(yedeğini) alma-restore(yeniden yükleme))

Sql de oluşturduğumuz database’i başka bir bilgisayarda açmak istersek ya da bilgisayardaki verilerin silinmesi tehlikesine karşı yedeğini almak isteyebiliriz.Çok kritik bir işlem olmasına karşı bu  işlem Sql’de çok kolay.Birkaç basit adımda ve resimlerle anlatmaya çalışacağım:

–oluşturduğumuz database adının yazıldığı yere terstıkla/tasks/backup seçilir

–açılan ekranda backupın kaydedildiği yerin yolu vardır,isterseniz başka bir yere de kaydedebilirsiniz.

–ok dedikten sonra oluştuğuna dair mesaj gelir,artık backup oluşturmuşsunuz demektir.

–bir de başka bir yerden almış olduğunuz backupı yükleme işlemi vardır,yani restore işlemi
–sql serverda herhangi bir proje adını ters tıkla/tasks/database

–Daha önce backupı alınmış projenin yeri nerede ise o bulunur onaydan sonra proje sql serverda çalışmaya hazırdır.

DERYA GÜNDÜZ

STAJ GÜNLERİM…..

Yaklaşık 2 hafta önce BilgeAdam’da yazılım departmanında staja başladım.Yoğunluktan yazmaya pek fırsatım olmadı.Haftaiçleri Çağlar Hoca’nın Sql derslerine giriyorum.Okulun bitip stajın başlaması süresi arasında sqle biraz başlamıştım ama sqli kurup servera bağlanana kadar bile çok zorlanmıştım:)Temel sql komutlarına falan bakmıştım biraz,bişeyler öğrendiğimi sanmıştım ama kursa başlayınca aslında pek bişey öğrenmediğimi gördüm,meğer sql ne derinmiş arkadaş:)”select * from”dan ibaret değilmiş.Sql dersleri çok verimli geçiyor benim için,staj bitiminde sql de bayağı yol katedecem sanıyorum.Öğleden sonra da burda ders çalışıyorum ya da Sedat Hoca’nın yapmamı istedikleri olursa onları yapmaya çalışıyorum,araştırmalar ya da rapor falan yazmamı istiyor bazen.Ders çalışırken de takıldığım yerler olursa  hocalara soruyorum,hepsi çok yardımcı oluyor.Haftasonları Şevket Hoca’nın yeni başlayan grubu ile c# derslerine giriyorum.C#pı 1. dönem görmüştük okulda, ben de uğraşmıştım biraz ama unutmuşum gibi ve bilmediğim çokşey varmış.Burda bildiğimi sandığım birçok şeyi bilmediğimi gördüm,eksikler çok,çok çalışmak gerek:)Bir de staj oyunca biraz asp.net  öğrensem süper olacak,çalışmaya başladım,Ali Rıza Hoca’nın videoları var ordan takip edecem,ne kadar öğrensem kar benim için.

Burda şunu da gördüm,yazılım işini yapanların çok azı Bilgisayar Mühendisliği’nden mezun,hocalara ve öğrenci arakadaşlara baktığımda çok farklı bölümlerden mezun olduklarını görüyorum  ve bu işi çok iyi yapıyorlar.Yani işimiz zor biraz:)
Kısacası BilgeAdam günlerim şuan için iyi gidiyor.Her geçen gün bişeyler öğrendiğimi hissedebiliyorum.
DERYA GÜNDÜZ

Güzel,yüreğime dokunan bir şiir

Çileğim’in bana gönderdiği şiir……..



dünyayı keşfetmetye çıkmış meraklı çocuklardık
ama unuttuk bir sokağın ucundaki soluk perdeli evlerimizi
unuttuk güllerimizi gülüşlerimizi
derken kurtaramadık kendimizi
şimdi sevdiklerimizi sevmeyi deniyoruz
yaşadıklarımızı değil yaşayamadıklarımızı özlüyoruz…….

DERYA GÜNDÜZ

SQL DE TRİGGERLAR(TETİKLEYİCİLER)

Trigger nedir?
Trigger’ın kelime anlamı tetikleyicidir,
Sqldeki anlamı da  database tabloları üzerinde bir değişiklik olduğu zaman çalışan sql sorgularıdır.
Triggerlar ile insert,update,delete yapılabilir.

Trigger oluşturmak
create trigger TriggerAdi
on TabloAdi
tetikleyici seçeneği(hangi olay olduğunda çalışsın)
as
select ….

creat trigger tg_KategoriSilindi
on Categories
for delete             –category silinmesini takip ediyor
as
select ‘biri bir tane kategori sildi’ as silme                  —verilecek mesaj

Yeni eklenecek olan çalışanın adını veoyadını ve aldığı ID değerini ekrana yazdıralım:

create trigger tg_CalisanEklendi
on Employees
for insert
as
declare @ad varchar(10)
declare @soyad varchar(10)
declare @id int
select @ad=FirstName,
@soyad=LastName,
@id=EmployeeID from inserted
declare @veri varchar(36)
set @veri=cast(@id as varchar(3))+’ ‘+@ad+’ ‘+@soyad
select @veri as veriyo

insert into  Employees(FirstName,LastName)
values(‘fulya’,’ayluf’)
–ekleme işlemini yapılacağı zaman trigger da çalışır ve ekleme işlemi

İnstead of Triggerlar
Triggerlar ile asıl yapılması gereken yerine başka bir iş yaptırmak istediğimizde instead of trigger kullanılır.
Bu örnekte silme işlemi yerine mesaj verdirtecez:

create trigger tg_KtegorileriKoruyalim
on Categories
instead of delete
as
select ‘Kategorileri silemezsin!!!’  as mesaj
delete from Categories where CategoryID=1

İnsead of triggerların önemli kullanım alanlarından bir tanesi de viewler ile birlikte kullanmaktır,birden fazla kaynak tablo ile oluşturulmuş viewlerde insert,update,delete  işlemleri yapılmak istendiğinde instead of trigger kullanmak zorunda kalınıyor,aksi halde hata verir.

DERYA GÜNDÜZ

BİLİŞİM HABERLERİ-Türkiye-Google savaşıyor(TARAF GAZETESİ)

Türkiye ile servislerinden büyük bir kısmına erişilemeyen Google arasındaki gerginlik BBC’de “Türkiye, Google ile savaşıyor” başlığıyla yankı buldu. 



İngiliz yayın kuruluşu BBC haberinde, Türkiye’deki internet erişimine getirilen sınırlamalara dikkat çekti. Türkiye’de daha önce 17 kezi geçici yasakların uygulandığı ancak, 2008’de mahkeme kararıyla Youtube’a erişimin tamamen yasaklandığına işaret edilen haberde, Türkiye’de dört binden fazla siteye erişimin yasak olduğunu aktardı. BBC, Türkiye’de sansür emrini verenin kimliğini öğrenmenin ise oldukça güç olduğunu yazdı.
Hükümetin, Google’u vergilerini ödememekle suçladığını belirten BBC, Google’un vergi ödemediği diğer ülkelerin de potansiyel birer şikâyetçi olabileceklerini belirtti. BBC ayrıca, Türkiye’nin vergi gerekçesiyle “sansür sopası”nı gösteren ilk ülke olduğuna dikkat çekti. BBC, Telekomünikasyon İletişim Daire Başkanlığı İnternet Daire Başkanı Osman Nihat’ın ise, “Bu mahkemenin kararıdır ve ortada bir yasa var. Ben de bu kararı ve yasayı uygulamak durumundayım” sözlerini de aktardı.


HABER KAYNAĞI-

TARAF GAZETESİ-


03.07.2010


DERYA GÜNDÜZ

BİLİŞİM HABERLERİ-Bilişim’in ilk 500’ü açıklandı(TARAF GAZETESİ)

Bilişim alanında faaliyet gösteren firmaların 2009 net satış gelirleri baz alınarak hazırlanan İlk 500 Bilişim Şirketi Araştırması’nda Türk Telekom birinci, Turkcell ikinci sırada yer aldı .

Bilişim 500 Araştırması’na bu yıl toplam 93 yeni firma girdi. Araştırmada daha önce de yer alan firmaların birçoğu pazardaki daralmaya rağmen 2009 performanslarıyla dikkat çekti. Sıralamada, 200 basamağın üzerinde yükselen firma sayısı üç, 100 basamağın üzerinde yükselen firma sayısı yedi ve 50 basamağın üzerinde yükselen firma sayısı ise 45 oldu.


İlk 10’daki şirketler konumlarını korudu

Bilişim şirketleri arasında ilk 10’a giren şirketler yine yerlerini korudu. 10 milyar 568 milyon 461 bin TL ciroyla Türk Telekom birinci, 8 milyar 936 milyon 400 bin TL ciroyla Turkcell ikinci, 2 milyar 539 milyon 717 bin TL ciroyla Vodafone üçüncü ve 2 milyar 504 milyon 38 bin TL ciroyla Avea da dördüncü oldu. Araştırmada beşinci sırada 2 milyar 51 milyon 824 bin TL cirosuyla KVK yer aldı. Genpa 1 milyar 694 milyon 310 bin TL ciroyla altıncı, İndeks Bilgisayar 1 milyar 87 milyon 422 bin TL ciroyla yedinci, Hewlett-Packard 952 milyon 884 bin TL ciroyla sekizinci oldu. Geçen sene dokuzuncu sıraya yerleşen Teknosa 875 milyon 595 milyon TL ciroyla sıralamadaki yerini korudu. 10’uncu sırada ise 800 milyon 593 bin TL ciro ile Digitürk yer aldı. Sabit telefon hizmetindeki alternatif operatör sıralamasında ise Superonline birinci oldu. Aynı zamanda son üç yılda cirosunu 66,5 milyon TL’den 237,5 milyon TL’ye çıkartarak ve araştırmada son üç yılda 39 basamak yükselerek 31’inci sırada yer alma başarısını gösteren Superonline, son 3 yılda en iyi performans gösteren bilişim şirketi oldu.

Yazılım pazarı büyüyor

Bilişim pazarındaki daralmaya rağmen yazılım pazarı yüzde 5.6 oranında bir büyüme kaydetti. Özellikle doküman yönetimi yazılımı pazarı, yüzde 40’ın üzerindeki büyümeyle dikkat çekti. 2009 yılında yüzde 11’lik büyüme ile hizmet pazarı en fazla büyüyen pazar grubu oldu. Hizmet pazarı altında değerlendirilen, dış kaynak kullanımı pazarı yüzde 40 büyüyerek hizmet sektörünün performansındaki en büyük etkenlerden biri oldu. 2009 yılında en fazla daralma yüzde 19.8’le BT donanımı pazarında oldu. Telekom donanımı ve taşıyıcı hizmetler pazarındaki daralma ise yüzde 15 civarında yaşandı. Araştırma sonuçlarına göre, bilişim pazarı 2009’da dolar bazında yüzde 12.6 daralarak 24.6 milyar dolar oldu. Pazarın 2010 sonunda ise, yüzde 6.5 oranında büyüyerek 26.2 milyar dolarlık büyüklüğe ulaşacağı tahmin ediliyor.


HABER KAYNAĞI:TARAF GAZETESİ-04.07.2010 


DERYA GÜNDÜZ