7 Mart 2019 Perşembe

Entity Framework'ün incelikleri - 1 (AsNoTracking(), Eager loading & Lazy Loading & Explicit Loading)

Merhabalar uzun bir aradan sonra. Sizinle entity frameworkde tecrübe ettiğim ufak tefek inceliklerini seri halinde sizinle paylaşacağım.

1- AsNoTracking() 
Bu değişkeni kullandığınızda performansınız 5 kat hızlanabilir. Kendi yaptığım ölçümlere göre 100 milisaniyeden 20 milisaniyelere kadar düşmüştü yoğun bir tabloda.
Kullanımına gelirsek.
dbTestEntites db = new dbTestEntities();
db.tblTest.AsNoTracking().ToList();

Çok basit ve çok hızlı sonuç üretir. Fakat dikkat etmeniz gereken bir konu var ki eğer kayıtlar üzerinde güncelleme yapacaksanız sakın ola bunu kullanmayın. Çünkü kodun da dediği gibi Takip Etme!



1- Eager loading & Lazy Loading & Explicit Loading
Entity Framework default olarak Lazy Loading olarak gelir. Fakat Siz bunu ayarlardan yada kod üzerinden devre dışı bırakabilirsiniz.Yada türetildiği noktada Constructor kısmına
this.Configuration.LazyLoadingEnabled = false;
kodu ile devre dışı bırakabilirsiniz.

a- Lazy Loading.
 Bunu kullandığınızda kod olarak alt tabloları çağrıldıkça yeni sql sorguları çalıştırır.
Örnek:
dbTestEntites db = new dbTestEntities();
var Tests = db.tblTest.ToList();
foreach (var testDetay  in Tests.tblTestDetaylar.ToList())
{
Console.WriteLine(testDetay.Ad);//Döngü her çalıştığında yeni bir sql sorgu üretir.
}

b- Eager Loading.
 Bu da ilk tablo dolarken include ederek tabloları yüklememizi sağlar. Lazy loading'den farkı ise ilk yüklendiğinde lazy sadece main tabloyu yükler. eager ise sizin istediğiniz kadarını yükler.
Örnek:
dbTestEntites db = new dbTestEntities();
var Tests = db.tblTest.Include(o=>o.tblTestDetaylar).ToList();
foreach (var testDetay  in Tests.tblTestDetaylar.ToList())
{
Console.WriteLine(testDetay.Ad);//Döngü her çalıştığında yeni bir sql sorgu üretMEZ.
}
c- Explicit Loading.
 Bu ise Lazy Loading ile Eager Loading arasında bir şeydir. Ana tabloyu yükledikten sonra isteğe bağlı olarak bu tabloyu da üstüne ekle diyebiliriz.
Örnek:
dbTestEntites db = new dbTestEntities();
var Tests = db.tblTes.ToList();
db.Entry(Tests).Referance(o=>o.tblTestDetaylar).Load(); //Burada alt tablo yüklenir.

foreach (var testDetay  in Tests.tblTestDetaylar.ToList())
{
Console.WriteLine(testDetay.Ad);//Döngü her çalıştığında yeni bir sql sorgu üretMEZ.
}



22 Ağustos 2016 Pazartesi

Javascript: Kullanıcıdan Veri Girişi İsteme İşlemleri

Javascriptte  veri girişi ve verinin kontrolü oldukça kolay bir şekilde yapılmaktadır. Diyelim bir üyelik formu yapıyoruz. Burda kullanıcıdan yaş istiyoruz. Şimdi kullanıcı maximum sallıyorum 170 yaşına kadar kabul edelim. En düşük değer olarak da 0 alırsan kullanıcının yaşı 0 ile 170 arasında bir değer olabilir. Ama öyle birşey yapalım ki kullanıcı yaşını girdiğinde otomatikmen kullanıcıyı uyarsın. yani 40 yaşında biri yanlışlıkla fazladan 1 adet fazladan sıfıra basarsa 400 yaşına basmış bir üyenizi kaydedersiniz. Bunu kontrolünü sağlamak için. HTML tarafında yazmanız gereken tek şey ID atamak nesneye.
Örnek Vereyim

21 Temmuz 2016 Perşembe

Pokemon Go: İstanbulda Pokemon İle Kaynayan Yerler



Pokemon Go oynayanların sayısı her geçen gün katlanarak artıyor. Bu da ne kadar büyük bir çılgınlığın başladığını gösterir. Bu durum ne kadar bazılarını gıcık etse de böyle etkileşim içine sokan bir oyun ilk defa çıkıyor. 1990'lı yıllarda dışarıda futbol oynayan çocuklar eve girmezdi, 2000'li yıllarda çevrim içi oyun oynayan çocuklar dışarı çıkmadı şimdi ise çevrim içi oyun oynayıp içeri girmeyen nesil geliyor. Bana sorarsanız 2000'li yılların çocukları oldukça sağlıksız yetişti. Çünkü bol hava ve hareket kabiliyeti oldukça az bir ortamda büyüdüler. Şimdiki nesil ise hem eğlenecek hem yürüyüşünü yapacak ve yeni yerler keşfedecek. Sizde yeni yerler keşfetmek ve oyun oynamak istiyorsanız tam olarak doğru adrestesiniz. İstanbul'da yaşayıp metro tünellerinden başka yer görmeyen kişilere 10 tane hem Pokemon açısından oldukça kalabalık hem nadir Pokemon yuvası söyleyeceğim. Alın arkadaşınızı ve hem temiz hava hem de Pokemon kovalayın.

20 Temmuz 2016 Çarşamba

Pokemon Go: Yumurta ne işe yarar

Pokemon Egg
Pokemon Egg

Pokemon go oyununu hepimizin bildiği gibi yumurtalar mevcuttur. Bu yumurtalardan pokemon nasıl elde edebiliriz gibi nice sorular kafanızı karıştırıyor ki buradasınız. Şimdi bu pokemon yumurtaları Yani Egg kırdırmak için yapmanız gereken

16 Temmuz 2016 Cumartesi

Pokemon Go: Pokemonların Çıkma Sıklıkları


Everywhere: pokemonlar her yerde çıkar ve poki topu harcamakla uğraşmayın hiç. toplarınıza yazık.
Virtually Everywhere: Fiilen hemen hemen her yerde çıkar. Çıkma sıklığı oldukça fazladır. Yarasayı mesela yakalamayın boşuna.
Very Common: Çok sıradan pokemonlardır. Çıkma sıklığı gene yüksektir.
Common: Sıradan pokemonlar.
UnCommon: Sıradan olmayan pokemonlar.
UnUnCommon: Sıra dışı pokemonlar.
Rare: Nadir pokemonlardır.
Very Rare : Çok nadir pokemonlar.
Special: Özel pokemonlar
Epic:Destansı pokemonlar.
Myths:Efsane pokemonlardır. Kasadaki bütün poketoplarını harcamaya değerdirler. Gördüğünüzde yumulun.
Still Not Convinced: Halen ne olduğu belli olmayan pokemondur. Yani halen karar verilmiş değil poketoplarına değip değmeyeceği.

4 Şubat 2016 Perşembe

XAML ListViewItem Tasarımı

XAML grid nesnesi sayesinde listview e her türlü kontrol aktarabilir olduk. Bu bir çok işimizi kolaylaştırdığı gibi görselimizi de harika oranda iyileştirdi. Bu grid nesnesi bir çok kontrolüze etki edecek düzeyde iyileştirme yapmakla kalmayıp birden fazla kontrol eklememize olanak sağlayarak çok da fonksiyonel bir element oluşturmamıza yardımcı oluyor.

Grid nesnesi içine eleman eklerken Children propertysinden Add özelliği ile içeri aktarılır. Örnek vermek gerekirse...

            ListViewItem lv = new ListViewItem(); // Listviewitem oluşturduk
            Grid gr = new Grid();//Burda da grid nesnesini baştan yarattık
            gr.Height = 470;//grid nesnesine yükseklik değeri vererek listviewitemın yüksekliğini sınırladık.

31 Ocak 2016 Pazar

C# Application Data Kullanımı ( How to use ApplicationData in C# )

Bu sayfaya geldiyseniz bir depolama birimine ihtiyacınız var demektir. Application data da oldukça ideal bir depolama bölgesidir. Kullanıcı verilerini depolarken oldukça pratik bir bölüm ve object türünde depolama yaptığını söylesem nimet gözü ile seve seve bakabilirsiniz. Kullanımı da oldukça basittir. Sözlük mantığı ile çalışır. Yani ini dosyası gibi düşünebilirsiniz. Neyse kullanımını anlatayım tecrübe edinin ve çok daha iyi kavrayın. Burdan okuduğunuz uçup gider tecrübeleriniz elinizde kalır. 

Kullanımı için ilk önce Storage kütüphanesini using ile tanımlamanız gerekiyor.

using Windows.Storage;

20 Ekim 2015 Salı

C# Queue kullanımı ( Sıra )

Queue aynı ArrayList gibi object turunden değişken alır ve Collection sınıfının bir üyesidir. İlk giren ilk çıkar formatı ile işler ve birçok programlama mantığı kurmanızda basitlik sağlar. Örnek vermek gerekirse bankada fiş aldığımızda ister kartlı müşteri olalım ister kartsız müşteri olalım hep farklı numaralar verir. Biri 3xx biri 5xx iken numaralar burada tamamen zaman kavramını yenmek için yapılmış. Diyelim sizin numaranız 325 en son 315 vezneye geçti. Düşününce önünüzde 10 kişi varmış gibi durur ama aslında en az 30 kişi vardır. Sıralar karmaşık şekilde listeye eklendiğini varsayarsak queue tam bu iş için biçilmiş kaftan. Queue biraz ergen gülmesini andırır. Facebookta, inci sözlükte bu tarz platformlarda qeqewqeq tarzı kahkaha atanlara alternatif bir gülme şekli de olabilir.
"C# veya herhangi bir dilde yazılan yığın veri yapılarında Enqueue(), Dequeue, Peek(), Clear() fonksiyonları ve Count, özelliği vadır. Bunların yanında Clone(), CopyTo(), ToArray(), Contains() ve Equals() metodları .NET'in yığın sınıfında yeralır."
Enqueue kayıt eklemek için kullanılır. Dequeue kayıt silmek için peek ilk kayıdı göstermek için, clear da diziyi temizlemek için vardır.

 Neyse kullanımını anlatmak için öncelikle Collections sınıfımızı import etmemiz gerekmektedir.

using System.Collections;

projemize collections sınıfımızı import(ithal) ettikten sonra queue diyerek tanımlamaya başlayabiliriz.


Queue OrnekQueue = new Queue();

Örneğimizi tanımladıktan sonra içine değer aktarmaya sıra geldi. Değişik bir içeri nesne alma şekli var ve ilk defa burada kullanacağız. Visual studionun otomatik tamamlama özelliği olmasa ezbere yazılmayacak kadar değişik yani.

22 Eylül 2015 Salı

Muğla Sıtkı Koçman Üniversitesi - Mühendislik Fakültesi - Bilgisayar Mühendisliği(İngilizce)

Yorucu bir dikey geçiş maratonunun ardından sonuçların açıklanması ile artık Muğlalı olduğumu öğrenmiş bulunmaktayım. Kontenjanlar düştüğü için hedeflediğim üniversite puanını 10 puan arttırmış fakat beni en az kendi kadar güzel ve kaliteli bir okula yani Sıtkı Koçman amcamızın milyon dolarlar yatırım yaptığı üniversite olan Muğla Üniversitesine yerleştim. Hayırlısıyla ilk sene hazırlık okumayı tercih ettim. Zira hazırlık benim için çok önemliydi. İngilizcemi geliştirmek isterim. Mesleğim için çok önemli bir etmen. Neyse istatistiksel veri olarak 2095. sıradan 295.83 puan ile (sıra puan ilişkisine bakınız) 14 tane tercih yapıp 14. tercihimin tutmasıyla sonuçlanan yorucu bir dikey geçiş çalışmasını sonlandırmış bulunuyorum. Artık okul hayatımda öğrendiklerimi sizinle paylaşır güzel örneklere vesile olurum inşallah.

19 Ocak 2015 Pazartesi

Dev/urandom C# ve Python da kullanımı

Öncelikle bu yazımın hepinizin işine yaramasımı umuyorum.

Öncelikle skype altyapısını araştırırken dev/random la karşılaştım. İnceledim ve size de anlatmak istedim.

Öncelikle c# da anlatayım.

Random değişkenini bilirsiniz Random rnd = new Random(); diye tanımlanır fakat bu sistem
Cryptography clasını kullanıyor. Öncelikle import bölümüne ekleyelim 
 
using System.Security.Cryptography;
 
Sonra ise fonksiyon olarak yazalım ve her satırı tek tek açıklayayım