@@TechBuddyTR Tekrar selamlar hocam. Videoyu şimdi izleme imkanı buldum. Dün bildirim geldiği gibi beğenip yorum yapmıştım içinin dopdolu olacağından emin olduğum için. Dopdoludan daha öteymiş :) Bu konuyu hiç bu seviyede dinleyip öğrenememiştim şu ana kadar. Yield kullanımı hiç bilmiyordum. Ama keşke dün izleseymişim. Dün yazdığım bir kodda IEnumarable ve ICollection kullanmak istedim ama o an bilememiştim. İzleseydim tüm sorularıma cevap alacakmışım :) ICollection ve IEnumerable arasındaki farkı hala anlayamış olsam da bu video beni IEnumarable hakkında fazlasıyla aydınlattı. Çok çok teşekkür ederim. Kesinlikle içerikler çok faydalı. Hatta videolarınızı izlerken hiç bitmesin istiyorum. Acaba şimdi ne öğretecek ne tür püf noktalar verecek diye sabırsızlıkla izliyorum :) Emeğinize sağlık. Hala cevabını bulamadım bir kaç soru sormak istiyorum. Şayet uygunluğunuz olursa bunlarla ilgili de bir video çekebilirseniz çok mutlu olurum. 1- IEnumarable ve ICollection arasındaki farklar nedir? Mülakatlarda Collectionlar nedir, ne işe yarar, ne tür özellikleri vardır diye soruyorlar. Cevap veremiyorum nette okuduğım makalelerden ezber dışında. Siz anlatırsanız mantığını anlamış halde cevap verip uygulamalarımda kullanabilirim. 2- Ben genelde delay için Thread kullanırım. Siz Task kullandınız. Bu ikisi arasındaki farklar nedir? Await Async Wait kullanımları arasındaki farklar nedir? Apilerde ağırlıklı olarak kullandığımız şeyler bunlar. Ancak benim takıldığım yerler var hala. Örneğin apide bir metodu async yapınca frontend tarafında (Winforms (en çok bunu kullanıyorum) , AspNetCoreMvc) ne şekilde çağırmam gerektiğini bilmiyorum. Genelde desktop uygulamaları geliştiriyorum. Formlarda anlık değer değişimi gerektiğinde BeginInvoke(new Action(() => .......)); gibi bir kullanım yapmak zorunda kalıyorum. Bu durumda threadlerle ilgili bir çok sorun yaşıyorum. Bruteforce oluyor yazdığım kodlar. 3-Bir software architect ve princible arasında ne farklar vardır. Mimar ve Princible olmak için minimum bilinmesi gerekenler nedir. Hangi seviyede bilgimizin olması gerekiyor? Teşekkür ederim :)
Hocam merhaba, 19:44 de yazmış olduğunuz GetOddNumbers'ı tıpkı sizin ettiğiniz gibi debug ettim. Program numbers değişkenini geçtikten sonra değişkenin içerisi EnumerablePartition türünde oluyor ve itere edeceğimiz bütün değerleri içerisinde barındırıyor, ben ise önce kontrollerin yapılıp sonra koleksiyonun içerisinin dolmasını bekliyordum. Devamında ise counter'ın tek tek arttırıldığını ve if kontrollerinin de her defasında yapıldığını gördüm.
Normalde debug IEnumerable belli metodlar tarafından tetiklenene kadar içerisi çalışmayan bir yapı. Ama bir debug ettiğimizde işin rengi değişiyor. O yüzden Debug edildiğinde IEnumerable tetiklenmiş gibi yapılsın diye temp bir Enumerable kullanılıyor olabilir. Siz de o yüzden Debug ederken bunu bu şekilde görmüş olabilirsiniz.
Hocam videolarınızı bişeyler öğrendikçe geri dönüp, haa böylemiymiş diyerek tekrar tekrar izliyorum :) emeğiniz için öncelikle teşekkür ederim. Bir sorum olacak. Ef'de mesela ToList dediğimizde sorgu atılıyor Ram'a alınıyor. IQueryable bir nesneye istediğimiz where clause'ları ekleyip öyle çektirebiliyoruz. List bir IEnumerable. Peki AsEnumerable() dersek nasıl çalışır. Yani var ogrenci = context.Student.AsEnumerable(); ogrenci.where(i=> i.Name=="Ali").ToList() desem yine bütün liste ramde mi olur yoksa numarator sadece alileri mi alır
Evet AsEnumerable() dediğimiz zaman da (filtreden önce çalışacağı için) tüm kayıtlar belleğe alınacaktır. AsEnumerable bize bir filtre mekanizması sağlamıyor, sadece yield return kullanarak o anlık değil ihtiyaç halinde o verinin return edilmesini sağlıyor. context.Student.AsEnumerable(); bu satır çalıştığında tüm Student tablosu içindeki datalar daha sonradan kullanılmak üzere bekletiliyor. Biz tolist veya getEnumerator().Next dediğimizde bu sefer tüm dataların yüklenmesi süreci başlıyor.
@@TechBuddyTR Hocam aklıma takılan bir şey oldu. List numbers = new() { 1, 2, 3, 4, 5 }; var greaterThanTwo = numbers.Where(number => number > 2); numbers.Add(6); var result = greaterThanTwo.TakeLast(1); Console.WriteLine(string.Join(',', result)); IEnumurable datayı bekletiliyor ve ihtiyaç halinde sonradan yürütülüyor demişsiniz yukarıda. Burada ekrana 6 yazdırmasının sebebi nedir. Biz daha bellekteki dataya ihtiyaç duymadan o şarta bağlı olan datayı değiştirdiğimiz için mi eklemiş oluyor.
@@tarkbugra verdiğin örnekde numbers ve greaterThanTwo reference tipleri, bellekte aynı yeri gösteriyorlar, numbers'e eklediğin sayı greaterThanTwo 'a da ekleniyor
Daha önce bu konuyu farklı eğitimcilerden dinlemiştim yalnız sizden dinlemek çok verimli oluyor hocam. Teşekkürler :)
Çok teşekkür ederim. Umarım faydalı olmuştur
Uzun zamandır araştırmak istediğim bir konuydu. Emeğinize sağlık.
Harika Anlatım.. Çok güzel emek..
Teşekkür ederim :)
Teşekkürler hocam mükemmel anlatıyorsunuz ve eğitimleriniz çok kaliteli
Çok teşekkür ederim. Umarım faydalı olur içerikler
Emeklerinize sağlık, teşekkürler.
Teşekkür ederim :)
Salih hocam elinize sağlık like attım
Teşekkür ederim.
Eline sağlık hocam :)
Teşekkür ederim. İyi seyirler.
Hocam hemen söylemeliyim ki, bildirimlerde Tech Buddy kanalını görünce her yanım umutla kapanıyor. Emeğinize sağlık. Çok çok teşekkür ederim.
Çok teşekkür ederim :-) Umarım faydalı oluyordur içerikler ve beklediğinize değiyordur.
@@TechBuddyTR Tekrar selamlar hocam. Videoyu şimdi izleme imkanı buldum. Dün bildirim geldiği gibi beğenip yorum yapmıştım içinin dopdolu olacağından emin olduğum için. Dopdoludan daha öteymiş :) Bu konuyu hiç bu seviyede dinleyip öğrenememiştim şu ana kadar. Yield kullanımı hiç bilmiyordum. Ama keşke dün izleseymişim. Dün yazdığım bir kodda IEnumarable ve ICollection kullanmak istedim ama o an bilememiştim. İzleseydim tüm sorularıma cevap alacakmışım :) ICollection ve IEnumerable arasındaki farkı hala anlayamış olsam da bu video beni IEnumarable hakkında fazlasıyla aydınlattı. Çok çok teşekkür ederim. Kesinlikle içerikler çok faydalı. Hatta videolarınızı izlerken hiç bitmesin istiyorum. Acaba şimdi ne öğretecek ne tür püf noktalar verecek diye sabırsızlıkla izliyorum :) Emeğinize sağlık.
Hala cevabını bulamadım bir kaç soru sormak istiyorum. Şayet uygunluğunuz olursa bunlarla ilgili de bir video çekebilirseniz çok mutlu olurum.
1- IEnumarable ve ICollection arasındaki farklar nedir? Mülakatlarda Collectionlar nedir, ne işe yarar, ne tür özellikleri vardır diye soruyorlar. Cevap veremiyorum nette okuduğım makalelerden ezber dışında. Siz anlatırsanız mantığını anlamış halde cevap verip uygulamalarımda kullanabilirim.
2- Ben genelde delay için Thread kullanırım. Siz Task kullandınız. Bu ikisi arasındaki farklar nedir? Await Async Wait kullanımları arasındaki farklar nedir? Apilerde ağırlıklı olarak kullandığımız şeyler bunlar. Ancak benim takıldığım yerler var hala. Örneğin apide bir metodu async yapınca frontend tarafında (Winforms (en çok bunu kullanıyorum) , AspNetCoreMvc) ne şekilde çağırmam gerektiğini bilmiyorum. Genelde desktop uygulamaları geliştiriyorum. Formlarda anlık değer değişimi gerektiğinde BeginInvoke(new Action(() => .......)); gibi bir kullanım yapmak zorunda kalıyorum. Bu durumda threadlerle ilgili bir çok sorun yaşıyorum. Bruteforce oluyor yazdığım kodlar.
3-Bir software architect ve princible arasında ne farklar vardır. Mimar ve Princible olmak için minimum bilinmesi gerekenler nedir. Hangi seviyede bilgimizin olması gerekiyor?
Teşekkür ederim :)
Hocam merhaba, 19:44 de yazmış olduğunuz GetOddNumbers'ı tıpkı sizin ettiğiniz gibi debug ettim. Program numbers değişkenini geçtikten sonra değişkenin içerisi EnumerablePartition türünde oluyor ve itere edeceğimiz bütün değerleri içerisinde barındırıyor, ben ise önce kontrollerin yapılıp sonra koleksiyonun içerisinin dolmasını bekliyordum. Devamında ise counter'ın tek tek arttırıldığını ve if kontrollerinin de her defasında yapıldığını gördüm.
Normalde debug IEnumerable belli metodlar tarafından tetiklenene kadar içerisi çalışmayan bir yapı. Ama bir debug ettiğimizde işin rengi değişiyor. O yüzden Debug edildiğinde IEnumerable tetiklenmiş gibi yapılsın diye temp bir Enumerable kullanılıyor olabilir. Siz de o yüzden Debug ederken bunu bu şekilde görmüş olabilirsiniz.
23:03'te Ünal'a biraz ayıp oldu :)
O benim gerçekten arkadaşım :) sorun yok o yüzden
Hocam videolarınızı bişeyler öğrendikçe geri dönüp, haa böylemiymiş diyerek tekrar tekrar izliyorum :) emeğiniz için öncelikle teşekkür ederim. Bir sorum olacak. Ef'de mesela ToList dediğimizde sorgu atılıyor Ram'a alınıyor. IQueryable bir nesneye istediğimiz where clause'ları ekleyip öyle çektirebiliyoruz. List bir IEnumerable. Peki AsEnumerable() dersek nasıl çalışır.
Yani var ogrenci = context.Student.AsEnumerable();
ogrenci.where(i=> i.Name=="Ali").ToList()
desem yine bütün liste ramde mi olur yoksa numarator sadece alileri mi alır
Evet AsEnumerable() dediğimiz zaman da (filtreden önce çalışacağı için) tüm kayıtlar belleğe alınacaktır.
AsEnumerable bize bir filtre mekanizması sağlamıyor, sadece yield return kullanarak o anlık değil ihtiyaç halinde o verinin return edilmesini sağlıyor. context.Student.AsEnumerable(); bu satır çalıştığında tüm Student tablosu içindeki datalar daha sonradan kullanılmak üzere bekletiliyor. Biz tolist veya getEnumerator().Next dediğimizde bu sefer tüm dataların yüklenmesi süreci başlıyor.
@@TechBuddyTR teşekkür ederim hocam. Teorikte bildiğim bir konuydu ancak şuan netleşti 😀
@@TechBuddyTR Hocam aklıma takılan bir şey oldu.
List numbers = new() { 1, 2, 3, 4, 5 };
var greaterThanTwo = numbers.Where(number => number > 2);
numbers.Add(6);
var result = greaterThanTwo.TakeLast(1);
Console.WriteLine(string.Join(',', result));
IEnumurable datayı bekletiliyor ve ihtiyaç halinde sonradan yürütülüyor demişsiniz yukarıda. Burada ekrana 6 yazdırmasının sebebi nedir. Biz daha bellekteki dataya ihtiyaç duymadan o şarta bağlı olan datayı değiştirdiğimiz için mi eklemiş oluyor.
@@tarkbugra verdiğin örnekde numbers ve greaterThanTwo reference tipleri, bellekte aynı yeri gösteriyorlar, numbers'e eklediğin sayı greaterThanTwo 'a da ekleniyor
Selam listeleme yaparken try catch icinde yield nasil kullaniliyor
Tam olarak anlayamadım sorunuzu, biraz daha açabilir misiniz?
var OddNumbers= Generator.GetOddNumbers();
burada Generator sınıfı obje örneği alınmadan nasıl çağrılabildi hocam?
Neyse buldum hocam Static metod uygulandığı için. :)
yorum
Cevap :-)