“The Social Network” Trailer
The Social Network’ ün Trailer’ i Yahoo Movies’ de yayınlanmış, filmin web adresi http://www.thesocialnetwork-movie.com/ .
Entity Framework, 4.0 ile Performans Yenilikleri
.Net Framework 4.0 release olduktan iki hafta sonra önemli bir riski göze alarak tüm projelerimizi .Net Framework 4.0’ a taşıtmaya başladım, iki haftalık bir süreç sonucunda elde ettiğimiz performansa gerçekten değdi.
“Risk, olumlu sonuçlandığında fırsat, olumsuz sonuçlandığında tehdittir.”
Bu tehditi göze almamı sağlayan performans yeniliklerinin en önemlileri kabaca şunlardı.
1. Foreign Key’ ler.
NorthwindEntities model = new NorthwindEntities();
int categoryId = 0;
Categories category = (from c in model.Categories
where c.CategoryID == categoryId
select c).FirstOrDefault();
model.AddToProducts(new Products()
{
ProductName = "Elma",
UnitPrice = 100,
UnitsInStock = 5,
Categories = category
});
model.AddToProducts(new Products()
{
ProductName = "Elma",
UnitPrice = 100,
UnitsInStock = 5,
CategoryID = categoryId
// Artık Foreign Key’ leri direk kullanabiliyoruz…
});
model.SaveChanges();
NorthwindEntities model = new NorthwindEntities();
var sonuc = from p in model.Products
select new
{
ProductId = p.ProductID,
ProductName = p.ProductName,
CategoryId = p.Categories.CategoryID,
// Ürün’ ün Kategorisi boş geçilmiş ise hata verir,
CategoryId Nullable olamaz çünkü…
CategoryName = p.Categories.CategoryName
};
var sonuc = from p in model.Products
select new
{
ProductId = p.ProductID,
ProductName = p.ProductName,
CategoryId = p.Categories == null ? 0 : p.Categories.CategoryID,
// Şeklinde kullanabiliyorduk, ama gerek kalmadı, özellikle subquerylerde
veritabanına iki kez gitmek zorunda kalıyorduk, yada nullable bir
class yazmak…
CategoryName = p.Categories.CategoryName
};
var sonuc = from p in model.Products
select new
{
ProductId = p.ProductID,
ProductName = p.ProductName,
CategoryId = p.CategoryID,
// Veritabanı dizaynına bağlı olarak Nullable olabilir,
artık bu hatayı almıyoruz…
CategoryName = p.Categories.CategoryName
};
2. StoreCommands ve StoreQueries
NorthwindEntities model = new NorthwindEntities();
var products = model.Products;
foreach (var p in products)
{
p.UnitPrice = p.UnitPrice * 1.10M;
// 100 Ürün varsa 100 kere update çalışır, tüm ürünleri çekmekte cabası…
}
int rowsAffected = model.ExecuteStoreCommand
("update Products set UnitPrice = UnitPrice * {0}", 1.10M);
// Tek sorguda bitirelim…
foreach (string name in context.ExecuteStoreQuery<string>
// Sorgu sonucu ne ise, ona cast edebiliyoruz, dikkat! nesne de olabilir…
("Select Name from Department where DepartmentID < {0}", 5))
{
Console.WriteLine(name);
}
model.SaveChanges();
3. Lazy Loading
NorthwindEntities model = new NorthwindEntities();
var products = model.Products;
foreach (var p in products)
{
p.CategoriesReference.Load();
// Ya Load ediyorduk,
string categoryName = (p.Categories.CategoryName);
}
var products = model.Products.Include("Categories");
// Yada include kullanmak zorundaydık.
foreach (var p in products)
{
string categoryName = (p.Categories.CategoryName);
}
model.ContextOptions.LazyLoadingEnabled = true;
// Artık Lazy Loading var…
var products = model.Products;
foreach (var p in products)
{
string categoryName = (p.Categories.CategoryName);
// İsteyince geliyor, bence bu pattern komple yanlış orası ayrı,
ben olsam perf. için…
}
var sonuc = from p in model.Products
// …derim veritabanına bir kez giderim…
select new
{
ProductId = p.ProductID,
ProductName = p.ProductName,
CategoryId = p.CategoryID,
CategoryName = p.Categories.CategoryName
};
foreach (var p in sonuc)
{
string categoryName = (p.CategoryName);
}
Sonuç, teknolojiyi ertelemeyin…
Blog ve Pazarlama 2012
eMarketer’ in yaptığı araştırmaya göre 2012 Amerika’ daki şirketlerin %43’ ü pazarlama için Blog kullanmayı hedefliyor. Amerika’ da bugün her üç şirketten biri blog sahibi.
eMarketer’ in Senior Analyst’ i Paul Verna, blogların içerik olarak, twitter, facebook gibi sosyal medialara göre daha etkin kullanıldığını söylemiş ki, katılmamak mümkün değil.
Peki nereye gidiyoruz?
Bilgi çağındayız, aç gözlüyüz, bilgiye doymuyoruz, eş zamanlı bir çok siteyi ve sosyal medya içeriğini takip etmek zorlaşıyor, bize filtreler lazım, istediğimiz içeriği filtreleyerek önümüze getirecek filtreler, sosyal medya ve blog api’ lerini kullanan yeni nesil arama motorları ve rss okuyucular.
Bu bağlamda yazılım tarafında, Agent Oriented Programming, bence üzerinde durulması ve araştırılması gereken bir konu. Vakit bulur bulmaz bahsedeceğim.
Hayat’ı Harcıyoruz.
“Your time is limited, don’t waste it living someone else’s life. Don’t be trapped by dogma, which is living the result of other people’s thinking. Don’t let the noise of other’s opinion drown your own inner voice. And most important, have the courage to follow your heart and intuition, they somehow already know what you truly want to become. Everything else is secondary.” – Steve Jobs
Doğrularımızla, yanlışlarımızla, doğru sandıklarımızla, boşa zaman harcadıklarımızla, yitip giden kendi hayatımız değil mi? Az zamanımız var!
Uzun Bir Aradan Sonra
İşlerimin yoğunluğu sebebiyle uzun bir ara verdiğim yazılarıma ve makalelerime, artık http://www.enginoren.com.tr/ adresinden devam ediyor olacağım. Eski adresim http://www.enginoren.com/ ‘ u da buraya yönlendirdim, tek bir sorun var, SQL’ den MYSQL’ e aktarmaya üşendiğim için eski yazı ve makalelerden vazgeçiyorum, zaten teknoloji de yerinde durmuyor…
Ps: Artık kendi blog projemi geliştirmeyi bırakıp, ben de WordPress kullanmaya başladım. 2005′ den beri iyi dayandım ama değil mi? :)



