LINQ Son Eklenen Kayıtın ID’sini almak

by Alper KOCA 26. Temmuz 2009 11:37

Uzun zamandır yazı yazamıyordum. Dün eklediğim bir verinin idsini geri almam lazımdı. Hani bildiğim bir yöntem olarak ekle sonra eklediğin parametrelerle geri çağır ve istediğin ID’yi geri al. Bu yöntemi denicektim ama öncesinde acaba LINQ bana bir kolaylık sağlamışmı diye merak ettim ve ufak bir deneme yaptım ve deney başarılı oldu :)

linq

Kullandığım table’ım yukardaki. Şimdi buna bir veri ekleyelim ve sonrasında eklediğim verinin id’sini isteyelim.

static void Main(string[] args)
{
    DataClasses1DataContext context = new DataClasses1DataContext();
    user u = new user();
    u.name = "Alper";
    u.surname = "KOCA";
    u.user_name = "alperkoca";
context.users.InsertOnSubmit(u); context.SubmitChanges(); }

Yukarıdaki kod ile ekleme işlemini yapıyoruz.

Eklediğimiz verinin id’sini alabilmek için tek yapmamız gereken SubmitChanges() metodundan sonra eklediğimiz nesnenin ID’parametresini çağırmamız olacak.

static void Main(string[] args)
{
    DataClasses1DataContext context = new DataClasses1DataContext();
    user u = new user();
    u.name = "Alper";
    u.surname = "KOCA";
    u.user_name = "alperkoca";
    context.users.InsertOnSubmit(u);
    context.SubmitChanges();
    int id = u.ID;
}

 

linq1

Tags: , , , ,

LINQ

Organik Yazılım Günü

by Alper KOCA 16. Haziran 2009 18:52

İsim biraz değişik ama aslında etkinlik güzel. .Net ile yapılan ve yol katetmiş projelerin anlatılacağı seminerler olacak. Aslında .Net ile yapılan açık kaynak kod olarak çok fazla proje var ama işte bu görülmüyor açık kaynak denince akla Linux deniyor. Bence yapılan büyük bir hata. Linux platformunda çalışan lisanlı yazılımlarda var ücretli satılan Linux sürümleride var. Neyse konuyu uzatmim zaten bu konuda fazla bir bilgimde yok ama etkinlik güzel gözüküyor birde Adana’da yapılıyor olsa iyi olurdu. Yine de teselli olarak Adana’dan Kaan BAŞLI arkadaşım  konuşmacı olarak seminere katılıyor. Ordakileri ikna ederde Adana’da bir Hit yaptırır :) Ayrıntıları Daron Yöndem in sitesinden bulabilirsiniz. Birde kayıt yaptırmak gerekiyormuş onuda INETATR  sitesinden yaptırabilirsiniz.

organik_yazilim

Tags: ,

Etkinlikler | Seminer

LINQ Birden çok veri ekleme ve silme işlemi

by Alper KOCA 9. Haziran 2009 20:56

Bugün yazdığım LINQ Insert, Update, Delete makalemde verilerimizi tek tek eklemeyi ve silmeyi görmüştük. Şimdi ise size toplu ekleme ve toplu silme olaylarından bahsedecem.

İlk başta verilerimiz veritabanımıza kaydedelim.

yine bir önceki tablomla çalışacam.

user[] alper = { 
                    new user() { name = "alper", surname = "koca", user_name = "alperkoca" },
                    new user() { name = "alper", surname = "koca", user_name = "alperkoca" },
                    new user() { name = "alper", surname = "koca", user_name = "alperkoca" },
                    new user() { name = "alper", surname = "koca", user_name = "alperkoca" },
                    new user() { name = "alper", surname = "koca", user_name = "alperkoca" },
                    new user() { name = "alper", surname = "koca", user_name = "alperkoca" } };

İlk başta user nesnemin dizisini oluşturdum ve içerisine bir kaç veri ekledim. Şimdi bunu eklemeye çalışalım. Bir önceki makalemde InsertOnSubmit() metodunu kullanmıştık bu sefer ufak bir değişiklik yapacaz ve başka bir metodumuz olan InsertAllOnSubmit() metodunu kullanacaz.

context.users.InsertAllOnSubmit(alper);
context.SubmitChanges();

Sonrada değişiklikleri veritabanımıza kaydetmesini söylicez. Tüm veriler kısaca veritabanımıza eklenmiş oldu. Artık sıra bunları silmeye geldi :)

Silme işleminde ilk olarak hangi verileri sileceğimizi veritabanımızdan istememiz gerekiyor. Bunun için

var uyeler = from u in context.users where u.name == "alper" select u;

Sorgusuyla uyeler değişkenine verilerimizi yükledik. uyeler değişkenimizde artık insert ile eklediğimiz 6 tane verimiz var. İstersek bunları geçen makalemde yaptığım gibi silerbiliriz. foreach kurarız ve tek tek silebiliriz. Bu iş biraz uzun :( Tek satır kod yazmak varken neden işimi 5 satıra çıkarim ? işte bunun için imdadıma DeleteAllOnSubmit() metodum yetişti ve beni kurtardı :)

context.users.DeleteAllOnSubmit(uyeler);
context.SubmitChanges();

artık tüm verilerimiz geri silindi hemde 3 satır kod ile :)

Tags: , , , ,

LINQ

LINQ Insert, Update, Delete

by Alper KOCA 9. Haziran 2009 13:05

LINQ çalıştığımı ve bununla ilgili yazılar yazacağımı önceki yazılarımda söylemiştim. Şimdi bu yazdıklarımın arkasında durarak LINQ ile Insert, Update, Delete işlemlerinin nasıl yapıldığına tek tek bakalım.

insert_update_delete

Kullanacağım tablom yukarıdaki gibi bunun üzerinde işlemler yapacaz.

INSERT

Insert yapabilmek için ilk başta insert yapacağımız veri lazım. Bunun için user nesnemi oluşturmam gerekiyor.

user Alper = new user();

Sonrasında da değerlerini girmem gerekiyor.

Alper.name = "Alper";
Alper.surname = "KOCA";
Alper.user_name = "alperkoca";

Yukarıda yaptığım işlemi tek satırda da C# 3.0 özelliğini kullanarakta yapabilirdim.

user Alper = new user() { name = "Alper", surname = "KOCA", user_name = "alperkoca" };

şeklinde yapmamda mümkün. Ama sonuçta benim için önemli olan user nesnemi oluşturmam ve değerlerini ayarlamam. Şimdi de benim bu yaptığım nesnemi DataContext’ime eklemem ve değişiklikleri veritabanıma aktarmam lazım.

context.users.InsertOnSubmit(Alper);
context.SubmitChanges();

ve yukarıdaki kod bu işleri benim yerime yapıyor.

DataClasses1DataContext context = new DataClasses1DataContext();
private void Form1_Load(object sender, EventArgs e)
{
    user Alper = new user() { name = "Alper", surname = "KOCA", user_name = "alperkoca" };
    context.users.InsertOnSubmit(Alper);
    context.SubmitChanges();
}

Kısa bir kod parçasıyla işimizi hallettik.

UPDATE

Update işleminde biraz bir farklılık var. Aslında işlem aynı ama Update’te bize hangi veriyi güncellememiz lazım onu veritabanımızdan almamız lazım bunun içinde bir LINQ sorgusu yazıp database'imizden verimizi alamız lazım.

user alper = (from u in context.users where u.name == "Alper" select u).SingleOrDefault();

LINQ sorgumuzla tek verimiz user sınıfımızın Alper isimli nesnesine atıyoruz. Bundan sonra Alper nesnemiz üzerinde işlemlerimizi yapıyoruz.

alper.name = "aLPER";
alper.surname = "koca";
alper.user_name = "ALPERKOCA";

istediğimiz gibi değişikliğide yapalım. Artık bunu veritabanımıza uygulayalım.

context.SubmitChanges();

Artık verimizi güncellemiş olduk.

DataClasses1DataContext context = new DataClasses1DataContext();
private void Form1_Load(object sender, EventArgs e)
{
     user alper = (from u in context.users where u.name == "Alper" select u).SingleOrDefault();
     alper.name = "aLPER";
     alper.surname = "koca";
     alper.user_name = "ALPERKOCA";
     context.SubmitChanges();
}

İşte buda bukadar :)

DELETE

Delete işlemini de yukarda anlattıklarımızdan yola çıkarak yapabiliriz. Sileceğimiz veriyi veritabanımızdan bulacağız ve sileceğiz. Hadi bunuda yapalım.

user alper = (from u in context.users where u.name == "Alper" select u).SingleOrDefault();

Yazdığımız kod ile alper nesnemize sileceğimiz nesneyi seçiyoruz. Şimdi de bunu silelim.

context.users.DeleteOnSubmit(alper);
context.SubmitChanges();

ve silme işlemimizi de tamamlamış olduk.

DataClasses1DataContext context = new DataClasses1DataContext();
private void Form1_Load(object sender, EventArgs e)
{
    user alper = (from u in context.users where u.name == "Alper" select u).SingleOrDefault();
    context.users.DeleteOnSubmit(alper);
    context.SubmitChanges();
}

Veri tabanımızda yapabilceğimiz işler bunlarla sınırlı değil ama şimdilik bunlar bir çok işimizi görecektir. Zaman buldukça diğer işlemlerin nasıl yapıldığına değinecem.

Tags: , , , ,

LINQ

SQL Server’a Başka Bilgisayardan Bağlanabilme

by Alper KOCA 9. Haziran 2009 09:45

Dün Sharepoint kurmak için SQL Server 2008’i ağda görünür yapmam gerekiyordu. Sevgili Onur arkadaşımla zamanında denemiştik o bana ip’sini yolladı ve bende bağlanabilmiştim. Peki ben bunu nasıl yapabilirim? Araştırmalarım neticesinde nasıl yapılabileceğini buldum ve sizinle paylaşmak istedim :)

İlk başta SQL Server Configuration Manager’ı açmanız gerekiyor. Kendisi Microsoft SQL Server 2008 –> Configuration Tools altında bulunuyor.

sql_server_configuration_manager

SQl Server Network Configuration’dan Protocols for MSSQLSERVER’ı seçmeniz gerekiyor. İtalik olarak yazdığım MSSQLSERVER sizin kurarken sunucunuza verdiğiniz isim. (Instance Name) Yani sizinki farklı olabilir.

sql_server_configuration_manager1

Sağda gelen ekranda protokol isimleri gözüküyor. Bizim için önemli olan TCP/IP protokolü. Şuan için bende aktif değil. Hadi gelin bunu aktif yapalım :) TCP/IP protokoüne iki defa tıklayalım.

sql_server_configuration_manager2

Karşımızı yukarıdaki gibi bir ekran gelecek. burdan Enabled özelliğini Yes yapalım ve IP Addresses sekmesine geçelim.

sql_server_configuration_manager3

Bu ekranda benim bilgisayarımda olan IP’ler var ama siz kendinize uygun olan IP’den Enabled özelliğini Yes yapın. Benim için uygun olan IP 192.168.1.2 ve port numarası MS SQL Server ile varsayılan olarak gelen 1433. Isterseniz bunu değiştirebilirsiniz.

Bu işlemleride yaptıktan sonra artık SQL Server’ını ağa açılmıyor :) Firewall’a izin vermeniz gerekiyor 1433 portuna. Başka bir antivirüs yazılımınız varsa onunda firewall’ına sizin vermeniz gerekiyor. Bu işlemlerden sonra sizin ağınızda bulunan başka bir bilgisayardan SQL server’ınıza bağlanabilirsiniz. Eğer internetten bağlanmak istiyorsanız Modem’inizin 1433 portunun açık olduğunuza emin olun açıksa internetten internet IP’niz ilede bağlanabilirsiniz.

Tags: , , ,

SQL Server 2008

101 LINQ Örneği

by Alper KOCA 6. Haziran 2009 22:56

LINQ’e daha çalışıyorum tam olarak bilmiyorum ama sıkıştığımda şu özellik nasıl kullanılıyordu dediğimde baktığım ve sizinle paylaşmak istediğim bir site var. MSDN’den nasıl kullanıldığına bakabiliyoruz ki zaten vereceğim sitede MSDN sitesi ama olsun yinede elinizin altında bulunsun :)

 101 LINQ Samples girip bakmanızı LINQ’i denemenizi tavsiye ederim.

Tags: , ,

LINQ

Silverlight 3.0 Öğreniyoruz

by Alper KOCA 1. Haziran 2009 10:50

vesikalik2 Sevgili Daron Yöndem Hoca’mız bizi düşünmüş ve 12 bölümden oluşan Silverlight 3.0 webinerlerini bizim için ayarlamış. Silverlight nedir ne değildir diyen yine Daron Yöndem’in sitesine bakabilir. Haziran boyunca yapılacak olan eğitim takvimi yine Daron hocanın sitesinde var ama bende sizin için buraya kopyalayıp yapıştırdım :)

Webinerlere katılım takibi için bloğumu ve twitter’ımı, aynı zamanda Daron Hocanın blog ve twitter’ını takip edebilirsiniz.

 

 

Silverlight'a Giriş - 8 Haziran, 21.00
Bu webinerde Silverlight nedir sorusuna cevap verirken mimari yapısına bakarak Silverlight dünyasına bir giriş yapacağız. Silverlgiht projeleri nasıl oluşturulur,nasıl yayınlanır, XAML nedir? ve "Neden Silverlight" gibi soruların cevapları da bu webinerde.
https://www.livemeeting.com/cc/usergroups/join?id=GFRH8M&role=attend

Silverlight ile Animasyonlar - 9 Haziran, 21.00
Animasyon mantığını kavrayacağımız bu webinerde ilk olarak Expression Blend arayüzüne bakarak animasyonlarının Blend tarafında nasıl oluşturulabildiğine göz atacağız. Sonra bu animasyonların programatik olarak yaratılmasını ve kontrollerini inceleyerek Silverlight tarafında bir animasyon uzmanı olacağız.
https://www.livemeeting.com/cc/usergroups/join?id=6GRJPM&role=attend

Layout Kontrolleri ve Dinamik Arayüzler, 10 Haziran, 21.00
Silverlight içerisinde istediğiniz görsel arayüzü oluşturabilmek için arayüz oluşturma esnasından kullanabileceğiniz Layout kontrollerini çok iyi tanımanız gerekir. Diğer yandan dinamik olarak tüm nesneleri yaratbilmeniz, bu nesnelerin birbiri ile konuşabilmesi ve projenizi doğru biçimde UserControl yapıları ile şekillendirmeniz de şart. İşte bu webinerde bu konulara değineceğiz.
https://www.livemeeting.com/cc/usergroups/join?id=PBRM8P&role=attend

Kontrol Şablonları ve VisualStateManager, 11 Haziran, 21.00
Standart kontroller arasında sıkışmayın ve kontrollerinizi tamamen baştan yaratın. Hatta bu tasarımları tekrar ve tekrar kullanın. Bu webinerde silverlight kontrollerinin şablonlarının değiştirilmesini, Template Binding mekanizmasını ve visual State Manager'ın kullanımını Custom State yapıları ile beraber inceleyeceğiz.
https://www.livemeeting.com/cc/usergroups/join?id=R8JSQH&role=attend

Silverlight içerisinde Veri Erişimi, 12 Haziran, 21.00
İster klasik web servisleri kullanın, ister WCF servisleri veya ister Socket üzerinden haberleşin hepsinin de kendine göre avantaj ve dezavantajları var. Gelin hepsinin de Silverlight tarafındaki detaylarını beraber inceleyip Silverlight uygulamalarımızı veri ile tanıştıralım.
https://www.livemeeting.com/cc/usergroups/join?id=GH9T5W&role=attend

Offline/Online/Desktop çalışma yapıları, 15 Haziran, 21.00
Silverlight 3.0 ile beraber uygulamalarınızı masaüstüne birkaç tıklama ile taşıyabilirsiniz. Peki hem masaüstünde hem webde hem online hem offline çalışırken tüm bu sistemi, verilerinizi nasıl kontrol edeceksiniz. Bu webinerde farklı çalışma yapılarını göz atarken verilerimizi IsolatedStorage içerisinde saklayacağız.
https://www.livemeeting.com/cc/usergroups/join?id=QTZH9R&role=attend

İş Uygulamaları Yaparken Silverlight, 16 Haziran, 21.00
Animasyonlar hoştur, güzeldir ama herşey değildir. DataGrid'ler, Comboboxlar, Calendar'lar bir araya girdiğinde hepsinden bir iş uygulaması arayüzü yaratıp kontrol etmeye ne dersiniz? Bu webinerde hep beraber bir iş uygulamasının ekranını hazırlayacağız.
https://www.livemeeting.com/cc/usergroups/join?id=BGN6BT&role=attend

RIA Services, 17 Haziran, 21.00
Farklı bir bakış açısı ile Silverlight uygulamalarınızdan veritabanına erişimine çocuk oyuncağına dönüştürmek ister misiniz? RIA Services sadece verinin taşınmasını değil aynı anda kendi kontrolleri ile düzenlenmesini de kolaylaştırıyor. Nasıl olacağını merak ediyorsanız bekleriz.
https://www.livemeeting.com/cc/usergroups/join?id=P9KQ6B&role=attend

Silverlight projelerinde SEO, 18 Haziran, 21.00
Arama motorlarına dair optimizasyonların çoğumuz için önemli. Silverlight projelerinde özellikle asenkron veri erişimi nedeniyle söz konusu veriye arama motorları ulaşamıyor. Peki ya bir çözümü varsa? Tabi ki o çözümü paylaşma vakti.
https://www.livemeeting.com/cc/usergroups/join?id=Q6H2G7&role=attend

Video Aşkına! Canlı/Cansız Yayın, 19 Haziran, 21.00
İnternette televizyoz izlemek veya cansız kayıtları yayınlamak, amacınız ne olursa olsun video konusunda Silverlight çok güçlü. Bu webinerde Silverlight ile canlı yayın, Media Services ayarları, Adaptive Streaming, cansız yayın ve Video Player hazırlanması gibi konulara değineceğiz.
https://www.livemeeting.com/cc/usergroups/join?id=BNPK36&role=attend

DeepZoom Uygulamaları, 22 Haziran, 21.00
Yaklaştıkça daha çok detay görmek isteyenlerin tarzı DeepZoom uygulamalarını hızlı bir şekilde geliştirmenin yanı sıra sıfırdan DeepZoom uygulamalarını yazmak, uygulamaları özelleştirmek ve veri bağlantısı yaparak dinamik DeepZoom projeleri yaratmak isteyenler bu webineri kaçırmasın.
https://www.livemeeting.com/cc/usergroups/join?id=BZFCH9&role=attend

Tarayıcı Entegrasyonu, 23 Haziran, 21.00
Silverlight ile tarayıcı arasındaki ilişkiyi inceleyeceğimiz bu webinerde Silverlight tarafındaki C#/VB kodunuz ile DOM entegrasyonunun yanı sıra tam ekran uygulamaları, ön yükleme ekranlarını ve RunTime yükleme ekranlarını özelleştirmeye göz atacağız.
https://www.livemeeting.com/cc/usergroups/join?id=3GZKMH&role=attend

 

 

Evet güzel bir Haziran ve Süper bir yaz bizi bekliyor :) bekleyelim ve görelim :D

Tags: , , , , ,

Silverlight | Webiner

Flas Flas Flas Yeni Haberler Var

by Alper KOCA 29. Mayıs 2009 22:45

Aslında pekte flash sayılmayabilir belkide bu yazıyı okurken benim hakkımda nekadar eski haberleri veriyorsun be diyebilirsiniz ama napabilirim anca bukadar hızlıyım.

bing İlk haberim yeni nesil arama motoru olan Bing! Microsoftun yeni nesil arama motoru. Aslında önceden de biliyorduk bu arama motorunu ismini faklıydı Kumo idi artık Bing olarak piyasaya çıkma vakti geldi. Deneme sürecinden çıktı artık gerçek kulvarda koşacak. Peki ya Google?

Söylenilen özellikler gerçekten çok güzel Web 2.0’dan Web 3.0 a geçişte öncü olacağı söylenen Bing aramalarda kelimeyi değil hislerinide ortaya döküyor ve ona göre bir arama yapıyor. Google şuan çok kullanılan arama motoru Bing çıktığında neler yapacak bilemicez ama arama sonuçlarında ufak değişiklikler yaparsa sevinirim :)

Bing 3 Haziran’da kullanıma açılıyor herkesin denemesini tavsiye ederim.

silverlight Şimdi size güzel bir haberim daha var. Geçenlerde Mix 09 yapılırken betası duyurulan ve Bloğumda linkteki adrestenhaberini duyurduğum Silverlight 3.0 Beta, 10 Temmuz’da çıkıyor. Expression Blend 3 de bunun yanında geliyor. Artık kullanabileceğiz Silverlight’ı :)

Süper haberler artık 2.0 dan 3.0 a geçiyoruz :D hem web’de hem Silverlight ta :D

Bir sonraki haber bülteninde görüşmek üzere iyi günler :)

Tags: , , , , , ,

Microsoft | Silverlight

TextBox Enter Button

by Alper KOCA 29. Mayıs 2009 17:13

Bugün kaç zamandır üşendiğim birşey öğrendim. Textbox’ta enter tuşuna basınca bir Button’u tetiklemek. Basit birşey olabilir ama işte insan üşenip ve araştırmayınca öğrenemiyor. Neyse bugün bir proje için lazım oldu üşensemde nasılsa aramak zorundaydım ondan Google’a bu makalenin başlığını yazdım. Sonuçlar beni çok mutlu etmesede biraz araştırma sonucu öğrendim bunuda sizlerle paylaşmak istedim.

Bunun için form elemntine yazılan bir attribute sorunu çözüyor. DefaultButton.

<form id="form1" runat="server" defaultbutton="Button1">

Sorun çözülüyor böyle ama bu sefer başka sorunlar oluşuyor. Eğer siz form’un herhangi biryerinde enter’a bastığınızda bu sefer o buton tetiklenmiş olur. Mesela bir form siteniz olsun ve hem üye girişi hemde post atacak yer olsun. Siz hem üye girişinde hem de post atışında enter’a bastığınızda farklı butonların tetiklenmesini istiyorsunuz. Ozaman imdadınıza Panel kontrolü yetişiyor. Bunun içinse

<asp:Panel ID="Panel1" runat="server" DefaultButton="Button1">

yapmanız yeterli oluyor. Bu sefer Button1’in tetiklenmesi sadece Panel1 içindeki TextBox’tan yapılabiliyor :) Tabi Enter tuşuna basılarak :D

Tags: , , , ,

ASP.NET

Sınavlar

by Alper KOCA 27. Mayıs 2009 23:12

Uzun zamandır bloguma bakamıyorum. Aslında fazlada yoğun değilim ama final sınavlarının stresi bana yetiyor. Sınavlardan bir kurtulsam gelecemde işte zaman geçmek bilmiyor :(

İlk olarak olasılık sınavına girdik pazartesi günü ve ertesi dün sınav sonucu açıklanmıştı. aradan 12 saat geçmedi ve final sınavını hoca okumuştu! Tabi durum belli sınıfta birçok kişi hatta çok az kişi geçebildi geri akaln herkes ff, fd ile kaldılar. Ben ucuz yırttım DC ile geçebildim :) Nasıl geçtim anlamadım ama artık bu konuda rahatım. KURTULDUM!

Kurtuldum ama seneye daha buna benzer çok ders var :( Ders zormu? HAYIR! ama işte bu konuyla bloğumu kirletmek istemiyorum :(

Bugün ise Mikroişlemciler finalini okuduk. Bunun sonucu daha açıklanmadı. Hatta bu dersin vizesi bile açıklanmadı :) Mutlu Hocamız sevgili hocamız beklenilenlerin aksine çooook zor bir sınav yapmıştı bakalım ne gelecek çok merak ediyorum :)

Yarin İngilizce sınavı var ama içimde hiç çalışma isteği yok. Daha çok böyle oyun oynayasım va yatasım var. Bu final zamanları nedense oyun tutkum ortaya çıkıyor. Hani böyle güncel bir oyunda değil SubMarine Titans diye bir oyun lisede bile oynamazdım bu oyunu daha eski diye hatırlıyorum ama işte sınav stresi insana neler yaptırıyor ben bile şaşırıyorum :) Hafta sonu birde açıköğretim sınavlarım var bakalım onda ne yapacaz.

Neyse ya yeter bukadar sınav muhabbeti sizler nasılsınız? Umarım iyisinizdir. Yaz yaklaşıyor ki yoğun geçecek bir yaza benziyor umarım güzel ve neşeli geçer :) Blog’a ne yaparım bilemicem ama kendim için güzel planlarım var :) Hani bazı planlarım şimdiden bozulsa da moral bozmak yok son gaz devam ediyoruz :)

 

İyi günler İyi Finaller :)

Tags: , , ,

Genel

Powered by BlogEngine.NET 1.6.1.0 - FunkyGrunge Theme by n3o Web Designers

 

Alper KOCA

Alper KOCA
Çukurova Üniversitesi Bilgisayar Mühendisi
3. Sınıf Öğrencisi
Microsoft Student Partner