Volkan Atasever

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

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.rar (1.013,87 kb)

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

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; }

 

}



Uygulamalar da Toplu SMS ve SMS Kullanmak

clock Aralık 3, 2016 04:11 by author Volkan Atasever

Merhabalar Arkadaşlar,

bugüne kadar bir yazılım geliştirici/yöneticisi olarak yazılarımı yazdım çoğunlukla kendi ürünlerime atıfta bulunmadım. hala da bulunmayacağım ve burada reklamını yapmayacağım. şirketimin reklamının yapılacağı yerin burası olduğunu düşünmüyorum. en azından yaptığımız uygulamaların ve projelerin. fakat gsm konusunda bir iş ortaklığı alarak toplu sms hizmeti vermeye başladık. buradaki önemli konu bu hizmetin verilmesi değil bu hizmeti yazılımlarınıza ve mobil uygulamalarınıza entegre ederek aktivasyon veya mesaj hizmetleri verebilirsiniz. ön ödemeli bir sistem olduğu için aldığın kadar kullan mantığıyla çalışmaktadır.

şirketimizin sitesi bildiğiniz gibi www.software4galaxy.com bu hizmet içinse www.s4gsms.xyz adresinden sms paketleri satın alabilirsiniz.

azılım altyapısı XML arabağlantı olanağı sağlamaktadır.

 

XML Arayüzü ile Bağlantı

 

XML Arayüzü ile yapılan istekler POST metodu ile çalışmakta olup aynı anda azami 100.000 adet kişiye sms gönderimine olanak sağlamaktadır. XML Arayüzü ile Bağlantı ile ilgili dökümantasyona menüden ulaşabilirsiniz.

SMS ile mesaj gönderme:

<SMS>

   <oturum>

      <kullanici>Kullanıcı adı</kullanici>

      <sifre>Şifre</sifre>

   </oturum>

   <mesaj>

      <baslik>DENEME</baslik>

      <metin>XML Api ile sms gonderimi...</metin>

      <alicilar>5329998877,5309998877,5429998877</alicilar>

      <tarih>YYYY-MM-DD HH:MM:SS</tarih>

   </mesaj>

   <karaliste>kendi|genel</karaliste>

   <izin_link>true</izin_link>

   <izin_telefon>true</izin_telefon>

</SMS>

http://s4gsms.xyz/api-v3/xml_api.php

 

Post URL

Parametreler :

kullanici : Sistemde kayıtlı olan kullanıcı adınızdır.

sifre : Sistemde kayıtlı olan şifrenizdir.

baslik : Mesaj gönderiminin hangi başlık üzerinden yapılacağını belirtir. Azami 11 karakter olabilir.

metin : Mesaj metnini belirtir.

alicilar : Mesajın gönderileceği numaraları belirtir. Başına 0 konulmadan girilmelidir. Birden fazla kişiye mesaj göndermek için araya virgül (,) konularak yazılmalıdır.

tarih : Boş bırakılması durumunda mesaj hemen gider, ileri bir tarihte gönderim için 19 karakter olacak şekilde yukarıdaki tarih formatına uygun olmalıdır.

karaliste : Sistem üzerinde bulunan karalisteyi kullanarak mesaj göndermenizi sağlar. 2 parametre almaktadır. Bu parametreler, Genel (Genel olarak kullanılan karaliste) veya Kendi (size ait olan kara listeniz) olarak kullanılabilir.

izin_link : true değeri gönderildiğinde mesaj metnine otomatik olarak iptal metninin eklenmesini sağlar.

(Ör: SMS Listemizden çıkmak için http://iptal.biz/xxxxxx)

izin_telefon : true değeri gönderildiğinde mesaj metnine otomatik olarak iptal telefonunun eklenmesini sağlar.

(Ör: SMS Listemizden çıkmak için 02162120750 numarasını 1 kez çaldırınız.)

Dönen Sonuçlar :

Mesaj gönderiminin başarılı olması durumunda OK|MesajID şeklinde bir sonuç döner. OK| kısmı herzaman sabittir. | işaretinden sonraki kısım değişkendir.

 

Mesaj gönderiminin başarısız olması durumunda ERR ile başlayan ve türkçe açıklama içeren hata mesajları döner. ERR kısmı her zaman sabittir.

 

XML ile Hitaplı (Parametrik) SMS Gönderimi

XML ile SMS Gönderimi azami 100.000 kişiye kadar yapılabilmektedir. 100.000 adet üzerindeki gönderimlerinizi loop ederek 100.000 er adetlik paketler halinde göndermeniz gerekmektedir.

 

XML ile Hitaplı (Parametrik) SMS Gönderimi için örnek XML Yapısı aşağıdaki şekildedir.

 

<SMS>

   <oturum>

      <kullanici>Kullanıcı Adınız</kullanici>

      <sifre>Şifreniz</sifre>

   </oturum>

   <baslik>XML HITAPLI</baslik>

   <mesaj>

      <metin>Sayin Veli Dogan, borcunuz 15TL dir.</metin>

      <alici>5428887766</alici>

   </mesaj>

   <mesaj>

      <metin>Sayin Hasan Dogan, borcunuz 20TL dir.</metin>

      <alici>5556665544</alici>

   </mesaj>

   <mesaj>

      <metin>Sayin Haci Dogan, borcunuz 25TL dir.</metin>

      <alici>5057776655</alici>

   </mesaj>

</SMS>  

http://s4gsms.xyz/api-v3/xml_ozel_api.php

 

Post URL

Parametreler :

kullanici : Sistemde kayıtlı olan kullanıcı adınızdır.

sifre : Sistemde kayıtlı olan şifrenizdir.

baslik : Mesaj gönderiminin hangi başlık üzerinden yapılacağını belirtir. Azami 11 karakter olabilir.

: N sayıdaki mesaj döngüsü temsil eder.

metin : Mesaj metnini belirtir.

alici : Mesajın gönderileceği numarayı belirtir. Başına 0 konulmadan girilmelidir.

 

Dönen Sonuçlar :

Mesaj gönderiminin başarılı olması durumunda OK|MesajID şeklinde bir sonuç döner. OK| kısmı herzaman sabittir. | işaretinden sonraki kısım değişkendir.

 

Mesaj gönderiminin başarısız olması durumunda ERR ile başlayan ve türkçe açıklama içeren hata mesajları döner. ERR kısmı her zaman sabittir.

 

Başlıklı SMS göndermek için C#kodu aşağıdaki şekildedir;

  publicstring SMSMesajGonder(string numara, string mesaj)

        {

            // DEĞİŞKENLER OLUŞTURULUYOR

            string kullaniciAdi = "", sifre = "", baslik = "";

            // XML DESENİ YARATILIYOR.

            string xmlDesen = "<SMS><oturum><kullanici>" + kullaniciAdi + "</kullanici><sifre>" + sifre + "</sifre></oturum><mesaj><baslik>" + baslik + "</baslik><metin>" + mesaj + "</metin><alicilar>" + numara.ToString() + "</alicilar><tarih></tarih></mesaj></SMS>";

            // APIYE XML DESENİ VE API ADRESİ GÖNDERİLİYOR.

            WebRequest request = WebRequest.Create("http://s4gsms.xyz/api-v3/xml_ozel_api.php");

            request.Method = "POST";

            byte[] byteArray = Encoding.UTF8.GetBytes(xmlDesen);

            request.ContentType = "application/x-www-form-urlencoded";

            request.ContentLength = byteArray.Length;

            Stream dataStream = request.GetRequestStream();

            dataStream.Write(byteArray, 0, byteArray.Length);

            dataStream.Close();

            WebResponse response = request.GetResponse();

            Console.WriteLine(((HttpWebResponse)response).StatusDescription);

            dataStream = response.GetResponseStream();

            StreamReader reader = newStreamReader(dataStream);

            string responseFromServer = reader.ReadToEnd();

            reader.Close();

            dataStream.Close();

            response.Close();

            return responseFromServer;

            // DÖNEN CEVAP İLGİLİ YERE GÖNDERİLİYOR.

 

        }



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