31 Temmuz 2019 Çarşamba

C# DLR (Dynamic Language Runtime) Kullanımı

.NET Framework 4.0 ile birlikte hayatımıza giren DLR'ın (Dynamic Language Runtime) temel olarak amacı static ve dynamic yapıların bir arada çalışabilir olmasını sağlamaktır. Bu özellik .NET projelerinde dinamik dillerdeki kütüphanelerin kullanılmasını sağlıyor.
DLR ayrıca IronPython gibi dinamik programlama dillerinin Common Language Runtime (CLR) ile iletişim kurmasını da sağlamaktadır. Bunun için dynamic anahtar kelimesi kullanılır.



Örneğimizde python dili ile "Hesap Classı" yazılacak olup class içerisine "topla-fark-print" işlerini yapacak olan metotlar dahil edilecektir. C# Console Projesi içerisinde python tarafında yazılmış olan class kullanılacaktır. C# dünyasında "Python" kodunu kullanabilmek için projemize IronPython  kütüphanesini dahil etmemiz gerekmektedir.  

Öncelikle boş bir C# Console Projesi aşağıdaki görseldeki gibi oluşturulur.














Python kodlarını yazabilmemiz için gerekli olan IronPython kütüphanesini   projeye sağ tıklayıp gelen menüden "Manage Nuget Packages" seçeneğinden seçelim.






























static void Main(string[] args)
{
            var source = @"C:\Users\n.esendal\a\dynamicExample.py";
            var engine = Python.CreateEngine();
            var scope = engine.CreateScope();
            var oper = engine.Operations;
            engine.ExecuteFile(source,scope);
            var Hesap = scope.GetVariable("Hesap"); //classı kullandık
            dynamic ins = oper.CreateInstance(Hesap);
            Console.WriteLine(ins.topla(15,20));
            Console.ReadKey();

}

Python uzantısı .py olacak şekilde aşağıdaki kodlarla hazırlanır. Adını "dynamicExample.py" olarak düzenlenir.


class Hesap():
    def __init__(self):
        pass
  
    def topla(self,x,y):
        return (x+y)
  
    def fark(self,x,y):
         return (x-y)



Bu python dosyasını uzantısı .py olacak şekilde bilgisayarıma kaydediyoruz.

Console projesine geldik ve python yolunu işaret edeceğimiz bir değişken tanımladık. Ve IronPython kütüphanesini "using Ironpython.Hosting;" kodunu ekleyerek kullanabiliriz.


Kodumuzu çalıştırırsak 15 ve 20 değerlerinin toplamı olan 35 sonucunu ekranda görürüz. 

























Python kodumuzda değişiklik yaparsak ekrana bilgi yazdıran kodu ekleyelim. (Python ve C# kodlarının son hali)


class Hesap():

 def __init__(self):

  pass  

 def topla(self,x,y):

  return (x+y)  

 def fark(self,x,y):

  return (x-y)  

 def yazdir(self,a):

  print(a)


Main Kodlarında direkt olarak dynamic türünden tanımlanmış olan değişkeni kullanarak son eklediğimiz yazdir metodunu çağıralım.



static void Main(string[] args)

{



            var source = @"C:\Users\n.esendal\a\dynamicExample.py";

            var engine = Python.CreateEngine();

            var scope = engine.CreateScope();

            var oper = engine.Operations;

            engine.ExecuteFile(source,scope);

            var Hesap = scope.GetVariable("Hesap");

            dynamic ins = oper.CreateInstance(Hesap);

            ins.yazdir(ins.fark(5, 15));

            Console.ReadKey();

}
















12 Temmuz 2019 Cuma

.Net CAMP Etkinliği

Kadir Has Üniversitesi'nde Taze .NET Camp Etkinliğine eğitmen olarak katıldım. Öğrencilerimle birlikte aşağıdaki konular üzerine geliştirmeler yaptık.


  • Nesne Yönelimli Programlama (OOP)
  • S.O.L.I.D Yazılım Geliştirme Prensipleri
  • Tasarım Desenleri (Design Patterns)
Etkinlik 5 günlük bir kamptı. Etkinliğin detaylarına ulaşmak için tıklayınız. Eğitim workshop tadında uygulamalı olarak geçti. Öğrenciler anlatılan konuları örnekler üzerinden deneyimleme şansına sahip oldular. Katılımcılar farklı farklı üniversitelerden olup teknik üniversite öğrencilerinin de bulunduğu gayet dinamik ve enerjik bir gruptu. Çok etkileşimli ve keyifli bir eğitim gerçekleştirdik. Yine olsun yine gidelim :)










4 Temmuz 2019 Perşembe

Xamarin İlk Uygulama

Xamarin'i Nasıl entegre edilir makalesini okumak için tıklayınız.

Xamarin'de ilk projemiz oluşturmadan önce anroid ve IOS tabanlı uygulamalar geliştirebileceksiniz. Dolayısıyla her platformda çalışabilen bir uygulamanız olacaktır. IOS çıktısını alıp Mac işletim sistemli bilgisayarlarda bir derlemeniz gerekecektir. (Xcode editoru üzerinde) 

Uygulamadaki farklı ekranlara sırayla bakalım.

Resources içerisinde bulunan layout klasöründe bulunan activiy_main.axml dosyası ekran tasarımını, ekranda bulunmasını istediğimiz kontrolleri taşımaktadır. Yeni bir kontrol eklemek istersek Toolbox üzerinden sürekleyip bırakarak tasarımını yapabiliriz.


activity_main.axml kodları aşağıdaki gibidir.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="0"
android:textSize="50sp"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtNumber" />
<Button
android:text="Increment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnIncrement" />
<Button
android:text="Decrement"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnDecrement" />
</LinearLayout>

Yukarıdaki kodların tasarımı aşağıdaki gibi olacaktır. 



















Buttonun kodlarına yani MainActivity.cs dosyası kontrollerin yapacakları işleri kodladığımız backend kodlarının barındığı yerdir.

MainActivity.cs kodları


using Android.App;

using Android.OS;

using Android.Support.V7.App;

using Android.Runtime;

using Android.Widget;


namespace App1

{

[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]

public class MainActivity : AppCompatActivity

 {

 TextView txtNumber;

 int number;

protected override void OnCreate(Bundle savedInstanceState)

{

base.OnCreate(savedInstanceState);

// Set our view from the "main" layout resource

 SetContentView(Resource.Layout.activity_main);

txtNumber = FindViewById<TextView>(Resource.Id.txtNumber);

FindViewById<Button>(Resource.Id.btnIncrement).Click += (o, e) => txtNumber.Text = (++number).ToString();

FindViewById<Button>(Resource.Id.btnDecrement).Click += (o, e) => txtNumber.Text = (--number).ToString();

}     

}

}

Uygulamamız hazır olup Increment buttonuna tıklandığında değer artarken, decrement buttonuna tıkladığında değerde azalma görünecektir. Yazmış olduğumuz bu uygulama hem android hem de IOS işletim sistemli uygulamalarda çalışacaktır.  


3 Temmuz 2019 Çarşamba

Xamarin'in Visual Studio Programına Tanımlaması

Merhabalar,

Bilgisayarımızda daha önce kullanmış olduğumuz Visual Studio varsa bunu silmeden "Programs and Features" bölümünden Visual Studio Programına tıklayıp change dememiz durumunda açılan ekranda xamarin eklentisini (Mobile Development with .Net) yükleyebiliriz.


































Yukarıdaki görselden yararlanarak Visual Studio Modify ekranına geçebilirsiniz. Seçimlerimizi yaptıktan sonra en altta yer alan Modify buttonuna tıklayıp kurulumları başlatabiliriz.


Kurulumu yaptığımıza göre artık ilk uygulamamızı oluşturalım.




















Proje template'ni aşağıdaki gibi seçelim. Blank bir uygulama oluşturalım.




















Android için gerekli olan emülatörlerin bilgisayarımıza kurulması gerekmektedir. 

Bunların ayarlamalarını aşağıdaki görselden yapabiliriz.
























Android uygulamasının geliştirilmesi için gerekli SDK, JDK vs. tanımlamalarını yaptıktan sonra artık Xamarin dünyasında projelerimizi geliştirmeye başlayabiliriz.




SQL Çalışma Sorularının Çözümü

 -Ürünler tablosundaki ürünlerden Rengi siyah,silver ya da multi renkte olanları fiyat bilgisine göre büyükten küçüğe getirilip gösterilecek...