Youtube Kanalım ve Eğitim Videoları

Merhaba, artık Youtube.com üzerinden videolar yayınlayacağım. Yazılım dilleri ve metodolojilerii eğitimleri hakkında ve günlük yaşantılarımla alakalı videoları kanalımda bulabilirsiniz.

Kanal adresim : a developer

Şuan kanalımda neler var;

  • ASP.Net MVC Eğitim videoları
  • Python Eğitim videoları
  • Kişisel Videolarım

Örnek olarak bir video paylaşacağım seslendirmesini yaptığım bu video ilk programcı Ada Lovelace’in bilgilerini içermektedir.

IQueryable ile IEnumerable farklılıkları

bisiklet_genel_IEnumerable ve IQueryable farklılıklarını ve kullanımını inceleyeceğiz, bu farklılık performans açısından projelerinize çok şey katacak.

Teorik olarak:

IQueryable, Database vb. veri depolarında yapılan sorgulamlarda işlevsellik sağlar.

IEnumerable, Bir koleksiyon üzerinde sorgulama yapmanıza olanak sağlar.

İşin ince ayrıntısı işte burada, IEnumerable data’yı çeker ve sorgulamanız var ise daha sonra bu işlemi gerçekleştirir. Data’yı Memory’de tutar ve kullanır.

Peki ya 1 Milyon datam var ise ? Vuuuuuuuuu !!!

Düşünsenize 1 Milyon data var ve IEnumerable ile sorgulama yapıyorsunuz

IEnumerable q = _context.UserList.Where(x=> x.Onay=1);

Yukarıdaki kodu çalıştırdığınızda aşağıdaki adımlar işliyor.

1. Memory IEnumerable için alan açıyor ve 1 Milyon datayı içine atıyor.
2. Memory’den o datalar Where ile sorgulanıyor. (Onay = 1 ifadesi sorgulanıyor)

IQueryable, Şartlara göre bir query oluşturur ve bu query ile birlikte database’e gider. O şartlara göre sonuç döner. Teorik olarak hızı farketettik bile 🙂

Yine de görelim;

Adım adım önce IEnumerable, IQueryable ve son olarak var tipine bakalım.

IEnumerable yapısı;IEnumerable

 

IQueryable yapısı;
Iqueryable

var yapısı;
Varq

List yapısı;list

 

Çalıştıralım;

console

 

Sql Profiler ile takip edelim;

IEnumerable sorgulaması ;
profie

IQueryable sorgulaması ;

profiq

42_EmoticonsHDcom

Neeeeeee ! 
IEnumerable tüm data’yı çekip daha sonra o çektiği data’dan tekrar mı sorguluyormuş?  Aman Allah’ımmmm

 

Sürelere baktığımız zaman var daha hızlı görünüyor peki bakalım breakpoint koyarak detayına inelim var neden bu kadar hızlıymış.

console1

Çalışma anında var, gelen değeri en iyi nasıl saklayacağını ayarlıyor ve yapısını o şekilde belirliyor. Yani şuan için en uygunu yine IQueryable.

Bir sonraki

Single Responsibility Principle

Single Responsibility Principle Yazdiginiz kodun rahat çalismasi ve kolay okunulabilir olmasini saglayan bir prensiptir. Her katman, sinif ve metodun kendine ait isleri yapmasi ve bu kurala uymasi mantigi yeralmaktadir.  Örnek verecek olursak;  Bir Email.cs Class dosyanizda sadece Email ile ilgili isler yeralmalidir. SMS, Kargo vb. islemleride bu Class içerisine alirsaniz eger bu prensibe uymamis olursunuz. Kodunuz hem daha karmasik hale gelir hem de çalismasi o denli yavaslar.  Ufak bir pratik;  Projenizde Business(Is) katmani içerisinde asagidaki Class'lariniz olsun;  - EMail.cs - User.cs - Product.cs - Customer.cs  Email.cs Bu Class içerisinde sadece Email islemleri yer alacak. Gönderme,Alma,Denetleme gibi metodlariniz yeralabilir.  User.cs Bu Class içerisinde sadece User ile ilgili islemleriniz yer alacak. User olusturma, silme gibi metodlar yeralabilir.  Bu sekilde her katmaninizin kendine ait isleri yapmasi Single Responsibility Prensibi olarak kabul edilmektedir.Yazdığınız kodun rahat çalışması ve kolay okunulabilir olmasını sağlayan bir prensiptir. Her katman, sınıf ve metodun kendine ait işleri yapması ve bu kurala uyması mantığı yer almaktadır.

Örnek verecek olursak;

Bir Email.cs Class dosyanızda sadece Email ile ilgili işler yer almalıdır. SMS, Kargo vb. işlemleri de bu Class içerisine alırsanız eğer bu prensibe uymamış olursunuz. Kodunuz hem daha karmaşık hale gelir hem de çalışması o denli yavaşlar.

Ufak bir pratik;

Projenizde Business(İş) katmanı içerisinde aşağıdaki Class’larınız olsun;

  • EMail.cs
  • User.cs
  • Product.cs
  • Customer.cs

Email.cs
Bu Class içerisinde sadece Email işlemleri yer alacak. Gönderme,Alma,Denetleme gibi metotlar yer alabilir.

User.cs
Bu Class içerisinde sadece User ile ilgili işlemleriniz yer alacak.
User oluşturma, silme gibi metotlar yer alabilir.

Bu şekilde her katmanın kendine ait işleri yapması Single Responsibility Prensibi olarak kabul edilmektedir.

a Developer kanalımdan bu konu ile ilgili yakında bir video paylaşıyor olacağım. Takip edebilirsiniz.

ASP.Net MVC, vNext, Entity Framework, NHibernate, Design Patterns Nedir?

Herkese Merhaba, bugünden itibaren yeni eğitim videoları hazırlayıp Youtube Kanalımdan paylaşıyor olacağım. Tabii ki Blog’umdan da takip edebilirsiniz. İlk tanıtım videosunu aşağıda paylaşıyorum. İyi seyirler, başarılar..

Korumalı: Reklam Açık Artırması

Bu içerik parola ile korunmaktadır. Görmek için lütfen aşağı parolanızı girin:

LINQ Insight Express (Write, Execute, Analyze)

Eklenti hakkında ufak bir kaç bilgi verip kısa bir örnekle tamamlamak istiyorum. ADO.Net’in SQLCommand sorgu calıştırma yapılarında sorgunun çalışıp çalışmadığını ve ya sorgunun hangi sonuçlar ürettiğini görmek için sayfanın derlenmesi ile birlikte çalıştırıp browser’da izlemek gerekiyor. Bu durum ilk zamanlarda bir engel olmamakla birlikte çokta hoşumuza gidiyordu çünkü; alternatif bir çözüm yoktu ! Microsoft bunun bir sorun olduğunu hissetmeye başladıktan sonra kolları sıvayıp bir şeyler yapması gerektiğini düşündü ve bir sorgu metodolojisi üretmeye karar verdiler. Sonuç olarak Language Integrated Query ismini taşıyan bir Metodoloji üretildi. LINQ, Ado.Net gibi string sorguları çalıştırmak yerine her bir terimi metod şeklinde dil ile entegreli kullanıp, kod daha derlenmeden hatayı bildiriyor. Bu şekilde hem zaman kaybından kurtuluyorsunuz hem de ADO.Net’e göre daha hızlı çalışmaktadır.

LINQ bildiğiniz gibi programlama dili ile bütünleşmiş bir yapıdadır. Çok hızlı ve esnek çalışmaktadır. Fakat kod blogunun verdiği sonucu nasıl izleyeceğiz ? Browser’da görmeden bunu anlayamayız tabii ki, Bunun bir eksiklik olduğunu düşünen bir firma kolları sıvayıp bir eklenti hazırlıyor. Bu eklentinin adı ise LINQ Insight Express, bu eklenti kod blogunu proje üzerinde çalışma anında execute edip platform üzerinde hızlı bir şekilde sonuç üretiyor. Bu mükemmel birşey 🙂 Hemen kullanalım..

LINQ Insight Express (Write, Execute, Analyze)

Visual Studio MSDN Sayfası : http://visualstudiogallery.msdn.microsoft.com/269e6da9-7f4d-4650-a327-c70b359dcfe0

Nasıl Çalışır ?

Eklentiyi aşağıdaki kurduktan sonra kod blogunu seçip sağ tuş yapıp Run LINQ seçeneğine tıklayın. Sonuç aşağıda ;
LINQ Nasıl Çalışır

2012 in review

WordPress.com istatistik yardımcı maymunları bu blog için bir 2012 yıllık raporu hazırladılar.

İşte bir alıntı:

2012 Cannes Film Festivaline 4.329 film gönderildi. Bu blog, 2012 içinde yaklaşık 20.000 kez görüntülenmiş. Eğer her görüntülenen bir film olsaydı, bu blog 5 Film Festivaline ev sahipliği yapardı

Raporun tamamını görmek için buraya tıklayın.