Volkan Atasever

Bilgisayar Mühendisi - Kurucu/Genel Müdür Software4Galaxy

C# 7 Kitabım Çıktı!

clock Mart 17, 2017 04:26 by author Volkan Atasever

 

Önemli: Kitap hakkında yorumlarınızı ve sonraki baskılarda olmasını veya daha fazla üstünde durulmasını istediğiniz konuları bu postun altına yazabilirsiniz.

C# 7.0 Programlama dilini baştan sona size öğreten ve uygulayan bir kitabı elinizde tutmaktasınız. Visual Studio 2017 ile beraber gelen Cross Platform desteği ile microsoft teknolojileri daha fazla değer kazanmıştır. IOS ve Android uygulamalarını Visual Studio 2017 ile birlikte geliştirebilmektesiniz. Bu programlama dilinin yükselişini gösterirken aynı zamanda bu programlama dilini bilerek okulunuzda veya iş yaşamınızda bir adım daha öne geçeceksiniz. C# programlama dili nesne yönelimli bir dil olduğu için bu kavramlar ve nasıl uygulanacağı size ayrıntılarıyla anlatılmıştır. C# programlama dilini hem görsel hem de kodsal olarak öğrenebilmeniz tasarlanmıştır. Veri tabanı programlama ile temel veritabanı işlemlerinizi gerçekleştirebilirsiniz. REST ve SOAP web servisleri bu kitapta ayrıntılarıyla ele alınmıştır. Büyük bir uygulama geliştirmek için fazla beklemenize gerek yok. Hemen C# 7.0 programlama dilini öğrenerek büyük projeler içine girebilirsiniz.
 
 
Kitaptaki konuların ana başlıkları:
 
1. Bölüm: C# Nasıl Doğdu ve Nasıl Gelişti?.
2. Bölüm: Visual Studio İnceleme ve Tanıma
3. Bölüm: Windows Form Bileşenlerini Tanıma ve Kullanma
4. Bölüm: Temel Veri Tipleri ve Değişkenler
5. Bölüm: Operatörler, Döngüler ve Deyimler
6. Bölüm: Diziler ve String’ler
7. Bölüm: Test ve Hata Yakalama
8. Bölüm: Sınıflar, Nesneler ve Metotlar
9. Bölüm: Kalıtım
10. Bölüm: Indeksleyiciler ve Özellikler.
11. Bölüm: Interface, Structure ve Enumaration
12. Bölüm: Grafik Programlama
13. Bölüm: I/O (Input/Output) İşlemleri
14. Bölüm: Delegeler ve Olaylar
15. Bölüm: Jenerik Koleksiyonlar, StringBuilder, Regular Expression, Bellek Yönetimi
16. Bölüm: Çok Kanallı, Asenkron ve Paralel Programlama
17. Bölüm: Internet ve Ağ Uygulamaları
18. Bölüm: Veri Tabanı İşlemleri
19. Bölüm: XML ve Web Servisleri ile Çalışmak
20. Bölüm: LINQ (Language Integrated Query)
21. Bölüm: C# ile ilgili Özel Konular
22. Bölüm: C# 7 ile Gelen Yeni Özellikler
23. Bölüm: C# ile iOS ve Android Uygulamaları ve Geliştirme

 

Yayın Tarihi 2017-03-20
ISBN 6058352742
Baskı Sayısı 1. Baskı
Dil TÜRKÇE
Sayfa Sayısı 638
Cilt Tipi Karton Kapak
Kağıt Cinsi 1. Hm. Kağıt
Boyut 16.5 x 23.5 cm

 

Yazar Hakkında: 

Volkan ATASEVER, Software4Galaxy şirketinde kurucu ve Genel Müdürdür. Bilgisayar Mühendisidir. Birçok üniversitede eğitim ve seminer vermiştir. PCWorld ve T3 dergilerinde köşe yazarlığı yapmış, daha önce de üç kitap yazmıştır.



C# 7 ile gelen Tuples

clock Şubat 13, 2017 16:12 by author Volkan Atasever

Tuples kullanımı eski bir kullanım olmasına rağmen c# 7 ile yenilenerek gelmiştir. tuple type ve tuple literal bir yenilik olarak karşımıza çıkmaktadır. Tuple tipleri değer tipi değişkenlerdir. System.Tuple isim alanını kullanmaktadır. Birden fazal değer döndürmek için Tuple kullanabilirsiniz. Birden fazla parametre olsa dahi tek nesne olarak işlem görmektedir. Çoklu değer döndürmek için out paramtresi tercih etmeden değer döndürebilirsiniz.

( string, string, string, string) getKisi()

{

    //Kişi bilgilerini veritabanından veya başka bir kaynaktan okuyabilirsiniz

    string strIsim = "Volkan";

    string strAdres = "Kadıköy";

    string strSehir= "İstanbul";

     return(strIsim, strAdres, strSehir); // tuple literal

}

 

//aşağıdaki metotu çağırdınızda çoklu değerleri döndürecektir.

 var kisiBilgi= getKisi();

WriteLine("Kisi bilgi:  {kisiBilgi .Item1} {kisiBilgi .Item2} {kisiBilgi .Item3}");

 

Yukarıdaki örnekte çoklu değerleri tuple kullanarak kolayca elde edebiliyoruz. Fakat item1,item2 isimleri alakası ve kafa karıştırıcıdır. bu yüzden anlamlı isimler kullanarak aşağıdaki örneği inceleyelim.

 

(string strIsim, string strAdr, string strSe) getKisi()

{

    //kodlarınızı buraya yazıyorsunuz

}

 

//metotu belirlenmiş ismi ile çağırdığınız zaman değerler aşağıda gözükecektir

var kisiBilgi= getKisi();

WriteLine("kisi bilgi: {kisiBilgi.strIsim} {kisiBilgi.strAdr} {kisiBilgi.strSe} ");

 

Bunlara ek olarak tüm değerleri Tuple Literal olarakta döndürebilirsiniz.

return (strIsim: strIsim, strAdr: strAdres, strSe: strSehir);

Tuple Hash tablosu veya Dictionary kullanarak kolayca değiştirebileceğiniz ve döndürebileceğiniz bir sisteme sahiptir. Tek durumda birden fazla değeri depoladığınız List yerinede kullanabilirsiniz. .NET üstünde bir Tuple tip tanımlıdır. Bu referans tipi bir değişkendir. C#ile gelen değiştirilebilir değer türü Tuple ise daha performanslıdır.

Bazı zamanlarda tüm tuple paketine ulaşmadan sadece değerlerine ihtiyacınız olabilir. O zaman C# 7 ile gelen Deconstruction özelliğini kullanarak istediğiniz parçayı oradan çekip alabilirsiniz.

( string strIsim,  string strAdr,  string strSe) = getKisi();

 

Console.WriteLine($"Adres: { strAdr }, Şehir: { strSe }");



TIS Projesi

clock Ocak 28, 2017 08:23 by author Volkan Atasever

Merhaba Arkadaşlar, zamanında open source diğer projelerden de yaralanarak bir projeye başlamıştım uzun zamandır ilgilenemedim. ilk dağıtımını C# 6.0 kitabımla yapmıştım. Artık buradan bu ürünü şirketim adına da boş zaman buldukça geliştireceğimi söylemek isterim. sizlerde c# bilginizi geliştirmek ve yeni bilgiler öğrenmek adına projeye katılabilirsiniz. aşağıdaki linkten projeyi de indirebilirsiniz.

*********************************

Tulip Image Shop v0_1 indir

*********************************

Version Notları ve Lisans

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

28.01.2017

TMIS şu anda Software4Galaxy Yaz. Hiz. ve Bilgi Tek. San. Tic. Ltd. Şti

adına Volkan Atasever tarafından geliştirilecektir. S4G sitesinde Open Source

olarak dağıtımı yapılacaktır. ilk dağıtımı C# 6.0 kitabı ile yapılmıştır.

geliştirme ve projeye destek vermek isteyenler lütfen iletisim@software4galaxy.com

mail adresine yapmak istedikleri geliştirmeleri söyleyerek gönüllü ekibimize katılabilir.

bu proje üstünde staj yapmak isteyenlerde CV'leri ile mail atabilirler.

----------

Mayıs 2015

TMIS Open Source bir projedir.

 Proje ilk dağıtımı Volkan Atasever'in C# 6.0 kitabının 1. baskısıyla yapılmıştır.

 Projenin dağıtımı sadece Proje Koordinatörü Volkan Atasever'in C# 6.0 kitabı 

ve belirttiği kaynaklardan olacaktır. 

Yeni özellik eklediğinizde bunu volkan@volkanatasever.com mail adresine

 atarak entegrasyon işlemlerini başlatırsınız. 

Modülünüz kabul edilirse bir sonraki versiyonda geliştiriciler bölümünde

 ve C# 6.0 kitabının yeni versiyonlarında görüntü işleme bölümünde isminiz geçecektir.  



.NET üstünde MySQL ile çalışma

clock Ocak 28, 2017 07:59 by author Volkan Atasever

MySQL, çok sayıda sistemde çalışan multi threaded ve çok kullanıcılı bir veritabanı yönetim sistemidir. SQL Server sürümlerine bir alternatif olarak düşünebiliriz. Gerçek düyna da SQL Server'a rakip olabilecek birden fazla Veritabanı Yönetim Sistemi bulunmaktadır. Oracle DB saymazsak MySQL en çok kullanılan alternatiflerden biridir. Aynı zamanda sadece Windows platformlarında değil UNIX, OS/2 ve Linux platformlarında da hızlı bir performans sergilemektedir. Açık kaynak kodlu bir sistem olduğu için diğer platformlarada port edilebilir durumdadır. ODBC sürücüleri olduğundan .NET üzerinde de kolaylıkla MySQL veritabanı yönetim sistemine erişerek MySQL tabanlı uygulamalar geliştirebiliriz.

MySQL tarihçesi şöyledir (Wikipedia’dan alıntıdır);

1994 MySQL'in geliştirilmesine başlandı.

1995 MySQL ilk sürümü yayınlandı.

2001 yılında MySQL 3.23 yayınlandı.

2004 MySQL 4.1 beta sürümü, ve gerçek sürümü Ekim 2004 yılında yayınlandı. (R-trees and B-trees, subqueries, prepared statements)

2008: MySQL 5.1 sürümü yayınlandı. (event scheduler, partitioning, plugin API, row-based replication, server log tables)

2008 Ocak: Sun Microsystems, bir milyar dolara MySQL'i satın aldı.

2009 Nisan: Oracle, Sun Microsystems'i satın aldı. Oracle, MySQL'i geliştirmeye devam edeceğini duyurdu.

 

MySQL Aşağıdaki yapıladı desteklemektedir;

Tables (Tablo)

Views (Görüntü) (Görüntüleme)

Procedures (Prosedür)

Triggers

Cursors

 

 

MySQL veritabanı yönetim sistemini kurduktan sonra doğrudan .NET uygulamaları altında C# ile geliştirme yapamazsınız. Bunun için .NET Connector’a ihtiyacınız var. MySQL ADO.NET sürücüsünü mysql sitesinden indirebilirsiniz.

 

 

 MySQL sürücüsünü kurmak indirdikten sonra bilgisayarınıza şöyle kurabilirsiniz;

 

 

 Setup Type kısmında istediğiniz kurulum tipini seçeceksiniz.

 

 

 Complete seçeneğini seçerseniz tüm frameworkler ve compact framework gibi alternatif araçlarda sisteminize yüklenecektir.

 

 

 

 

 MySQL veritabanı motorunun yönetimini yapacağınız uygulama MySQL Workbench uygulamasıdır. Bu uygulama SQL Server üstündeki Management Studio’ya denk gelmektedir.

 

 

 Workbench ekranı üstünden birden fazla connection ekleyebilir veya  yerel sunucunuzdaki verilerle çalışıp yönetebilirsiniz.

 

 

 Workbenc üzerinde birden fazla araç barınmaktadır.

 

 

 Tables, Views, Stored Procedures ve Functions kısmından işlevsel tüm özellikleri kullanabilirsiniz.

 

 

 Aynı SQL Server üzerinde kullandığımız sql cümleciklerini ufak bazı değişikliklerle MySQL üzerinde de kullanabilirsiniz. Select * from yapısı aynı şekilde MySQL içinde de geçerlidir.

 

 

 Farklı bir lokasyondaki veritabanına bağlanmak için aynı şekilde connect to database seçeneğini seçerek bağlantı sağlayabilirsiniz.

 

 

.NET uygulamamızda C# ile MySQL bağlantılı yazılım yazmak için öncelikle referanslar kısmından yüklediğimiz mysql connector’un dll paketlerini eklememiz gerekmektedir.

 

 Kullanacağımız MySQL.Data referansı bize gerekli alt yapıyı sağlayacaktır. Aynı zamanda Entity Framework yapısı içinde destek bulunmaktadır.

 

 

 Referanslara eklediğimizde MySql.Data başlığının projemize eklenmiş olduğunu görebiliriz.

 

 

Uygulamamızı yazarken gerekli olan namespace’ler MySql.Data, MySql, MySql.Data.MySqlClient isim alanlarıdır. Sql Server kodlaması yaparken kullandığımız SqlConnection gibi sınıfların isimleri bu isim alanı altında MySqlConnection gibi ufak değişiklikler göstermiştir. Aynı şekilde SqlCommand MySql ile kodlama yaparken MySqlCommand ismini almıştır. SqlDataAdapter ismi ise MySqlDataAdapter olmuştur. Bu şekilde klasik Ado.NET kodlaması yapabilirsiniz.

MySQL ile bağlanan ve işlemler yapan bir sınıf aşağıdaki şekilde tanımlanmış ve kodlanmıştır.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Data.SqlClient;

using System.Data;

using MySql.Data;

using MySql;

using MySql.Data.MySqlClient;

 

namespace sample_db

{

    public class dblayer

    {

        string connectionstr;

 

        public dblayer()

        {

            connectionstr = "Network Address=IP_Adresi;" +

                                                   "Initial Catalog='database_ismi';" +

                                                       "Persist Security Info=no;" +

                                                   "User Name='kullanıcı_ismi';" +

                                                   "Password='parola'";

        }

 

 

        public DataTable etkinlikleri_al()

        {

            DataTable dt = null;

            try

            {

                MySqlConnection connection = new MySqlConnection(connectionstr);

                string mysqlquery = "SELECT * FROM sample_db.etkinlik order by etkinlik.tarih desc";

                MySqlCommand command = new MySqlCommand(mysqlquery, connection);

                connection.Open();

                dt = new DataTable();

                MySqlDataAdapter adapter = new MySqlDataAdapter(command);

                adapter.Fill(dt);

            }

            catch

            {

                return null;

            }

            return dt;

        }

 

        public DataTable projeleri_al()

        {

            DataTable dt = null;

            try

            {

                MySqlConnection connection = new MySqlConnection(connectionstr);

                string mysqlquery = "SELECT * FROM sample_db.proje order by id desc";

                MySqlCommand command = new MySqlCommand(mysqlquery, connection);

                connection.Open();

                dt = new DataTable();

                MySqlDataAdapter adapter = new MySqlDataAdapter(command);

                adapter.Fill(dt);

            }

            catch

            {

                return null;

            }

            return dt;

        }

 

        public DataTable haberleri_al(string baslangic, string bitis)

        {

            DataTable dt = null;

            try

            {

                MySqlConnection connection = new MySqlConnection(connectionstr);

                string mysqlquery = "SELECT * FROM sample_db.haber where yayin_tarihi between " + baslangic + " and " + bitis + "order by haber.yayin_tarihi desc";

                MySqlCommand command = new MySqlCommand(mysqlquery, connection);

                connection.Open();

                dt = new DataTable();

                MySqlDataAdapter adapter = new MySqlDataAdapter(command);

                adapter.Fill(dt);

            }

            catch

            {

                return null;

            }

            return dt;

        }

 

        public DataTable duyurulari_al(string baslangic, string bitis)

        {

            DataTable dt = null;

            try

            {

                MySqlConnection connection = new MySqlConnection(connectionstr);

                string mysqlquery = "SELECT * FROM sample_db.haber where yayin_tarihi between "+baslangic+" and "+bitis+" order by haber.yayin_tarihi desc";

                MySqlCommand command = new MySqlCommand(mysqlquery, connection);

                connection.Open();

                dt = new DataTable();

                MySqlDataAdapter adapter = new MySqlDataAdapter(command);

                adapter.Fill(dt);

            }

            catch

            {

                return null;

            }

            return dt;

        }

 

    }

 

}



Entity Framework Kullanımı

clock Ocak 28, 2017 07:48 by author Volkan Atasever

Birden çok ORM yani Object Relational Mapping aracı vardır. .NET üstünde resmi frameworklerden biri Entity Framework'tür. Entitfy Framework kısaca EF, nesneye yönelik programlamada kullanılan ve veritabanındaki tablolara karşılık gelen nesneleri oluşturarak işlem yapan alt yapıdır.

Entity Framewor ile veritabanı işlemleri daha hızlı ve daha kolay yapılmasına rağmen büyük projelerde hız konusunda sınıfta kalmaktadır. Hala veritabanında çalışan stored procedure tekniği daha hızlıdır. Tabi ki bu büyük proje dediğim kavramın gerçekten big datalarla çalışıldığı durumları içerdiğinin bilinmesi gerekir.

Şu anda LINQ to Entities teknolojisi ile Entity Framework kullacağız.

Temel kaydet, güncelle, dil ve ara işlemlerini yaparak Entity Framework kullanarak temel işlemlerimizi yapacağız.

 

Öncelikle Solution sekmemize sağ tıklayıp add -> new items sekmesinden ado entity data model seçimini yapıyoruz.

 

 Ardından açılan pencerede eğer varolan bir veritabanından çağrı yapacaksak EF Designer from database sekmesini tıklayarak ilerliyoruz.

 

 

 Açılan pencerede daha önce bir connection yani bağlantı olmadığı için new connection butonunu tıklıyoruz.

 

 

 SQL Server bağlantı bilgilerimizi girdikten sonra veritabanını seçip pencereyi onaylıyoruz.

 

 

 Artık bağlantımız hazır hale gelmiş durumda.

 

 

 

 Gelen pencereden entity framework’ün hangi versiyonunu kullanacağımızı seçiyoruz.

 

 Bu örneğimizde veritabanında olan tek tabloyu seçip modellenmesini istedik.

 

 

 .edmx uzantılı diyagramımızda artık hikaye veritabanındaki hikayeler tablosunu görebiliyoruz.

 

 Bu işlemleri yaptıktan sonra aşağıdaki isim alanları projemize eklendiler. Bundan sonra LINQ to Entities kullanarak temel işlemleri yapabiliriz.

 

EntityFramework

System.ComponentModel.DataAnnotations

System.Data.Entity

System.Runtime.Serialization

System.Security

 

Şimdi bir örnek uygulama yapalım. Kullanıcı arayüzümüz aşağıdaki gibidir;

 

Veri eklemek için buton click olayına aşağıdaki kodu yazalım;

        privatevoid button2_Click(object sender, EventArgs e)

        {

            using (EFhikayeDBEntities efh = newEFhikayeDBEntities())

            {

                hikayeler hky = newhikayeler();

                hky.tip = textBox1.Text;

                hky.hikaye = textBox2.Text;

                efh.hky.Add(hky);

                efh.SaveChanges();

            }

            textBox1.Text = "";

            textBox2.Text = "";

        }

 

Kayıt silmek için buton click olayımıza aşağıdaki kodu yazabiliriz;

        privatevoid button3_Click(object sender, EventArgs e)

        {

            int id = Convert.ToInt32(dataGridView1.CurrentRow.Cells["ID"].Value);

 

            using (EFhikayeDBEntities efh = newEFhikayeDBEntities())

            {

                var liste = from h in efh.hky

                            where h.ID == id

                            select h;

 

                liste.ToList().ForEach(x => efh.hky.Remove(x));

                efh.SaveChanges();

            }

        }

    }

 

Verileri listelemek içinde click olayımıza aşağıda kodu yazalım;

privatevoid button1_Click(object sender, EventArgs e)

{

    

            using (EFhikayeDBEntities ehd = newEFhikayeDBEntities())

            {

                var liste = from h in ehd.hky

                            orderby h.ID ascending

                            selectnew

                            {

                                Id=h.ID,

                                tip = h.tip,

                                hikaye = h.hikaye

                            };

               dataGridView1.DataSource = liste.ToList();

            }

       

}

 

Container sınıfımızda aşağıdaki gibidir;

publicpartialclassEFhikayeDBEntities : DbContext

{

        public EFhikayeDBEntities()

            : base("name=EFhikayeDBEntities")

        {

        }

 

        protectedoverridevoid OnModelCreating(DbModelBuilder modelBuilder)

        {

            thrownewUnintentionalCodeFirstException();

        }

 

        publicDbSet<hikayeler> hky { get; set; }

 

}



Duyurular

Software4Galaxy eğtim departmanı Academy4Galaxy Yazılım Uzmanlığı (.NET) Eğitimlerimiz başlayacaktır. Sınıflarımız maksimum 7 kişiliktir. Android ve IOS eğitimlerimiz içinde ön kayıt alıyoruz. .NET eğitimi hocası son kitabı C# 6.0 olan Volkan Atasever'dir.  bilgi için 0850 346 75 47 - 0216 550 10 66 mail: egitim@software4galaxy.com

Volkan Atasever Kimdir ?

E-Mail: volkan@volkanatasever.com
Founder / Software4Galaxy

Bilgisayar Mühendisi

Programlama Yazarı

Kitaplarım

   

Dergi Yazılarım

 

Sosyal Ağlarım

 

   

 

   

Instagram  

Retro Bilgisayar Dergimiz

Türkçe Retro Bilgisayar dergimiz haziran 2016'da ilk sayısını çıkardı. www.bitsector.info adresinden ilk sayıyı indirebilirsiniz. Retro camiası tüm dünyada oldukça eğlenceli bir camia. Sizde katkıda bulunmak isterseniz bana mail atmanız yeterli. Dergimiz PDF formatında ve tamamen ücretsizdir.

Son Yorumlar

Comment RSS

Yasal Bilgi

Sitedeki yazıları,kodlar ve diğer materyaller Volkan Atasever'e aittir. Yazarı ve siteyi kaynak göstererek yazıları paylaşabilirsiniz.  Copyright(c)2004-2017

Sign In

Yazılım