Cumartesi, Ocak 29, 2011

Ubuntu Flash Player Donma Sorunu

Ubuntuda ki tipik flash player sorunlarından biride tam ekran video izlerken donma olması. Ubuntu forumlarından okuduğum kadarıyla sorunun çözümü herkes için aynı olmaya biliyor.Ben bu sorundan aşağıdaki adımları uygulayarak kurtulabildim. Umarım işinize yarar...

1- /etc dizinine adobe adından bir dizin oluşturuyoruz.
sudo mkdir /etc/adobe

2- mms.cfg adından bir dosya oluşturup içine OverrideGPUValidation değerini true olarak ayarlayarak ekledik. Bu ayar sayesinde flash playerın her seferinde yaptığı GPU hızlandırma kontrolünü devre dışı bırakmış oluyoruz.

echo "OverrideGPUValidation=true" >~/mms.cfg

3- Son olarak mms.cfg dosyasını 1.adımda oluşturduğumuz /etc/adobe dizinine taşıyoruz.

sudo mv ~/mms.cfg /etc/adobe/


Daha az sorunlu flash player dileğiyle...
Kolay gelsin...

Pazar, Ocak 23, 2011

Linq ile NewID() Kullanımı

Amacımız veri tabanından rastgele 4 kayıt çekmek olsun. Bu işlemi gerçekleştirmek için aşağıdaki gibi bir sql cümlesi kullanırız.

select top 4 EmployeeID,LastName,FirstName,Title,TitleOfCourtesy from Employees order by NewID()

Böyle bir işlemi linq ile yapmak için harici bir fonksiyona ihtiyaç duyarız. Fonksiyon aşağıdaki şekilde.

[Function(Name = "NEWID", IsComposable = true)]
public Guid NewID()
{
return Guid.NewGuid();
}

Fonksiyonun yaptığı iş sadece ilgili kayıt için yeni bir guid döndürmek. Bu fonksiyonu kullanabilmek için iki seçeneğimiz var:

1. Fonksiyonu dbml'in .cs dosyasına içine eklemek
2. dbml sınıfı partial class olduğu için yeni bir ".cs" dosyası açıp dbml sınıfı ile aynı isimde partial class oluşturup fonksiyonu buraya koyabiliriz.

Yukarıdaki seçeneklerden birini kullanarak fonksiyonu kullanıma hazır hale getirdikten sonra, en baştaki sql cümlesini linq ile yazarak eklediğimiz fonksiyonun linq ile kullanımını görelim.

var employess = (from t0 in linqDB.Employees
orderby linqDB.NewID()
select new
{
t0.EmployeeID,
t0.LastName,
t0.FirstName,
t0.Title,
t0.TitleOfCourtesy
}).Take(4);


Kolay gelsin...

Cumartesi, Ocak 01, 2011

Dinamik Linq Sorgusu Yazma

Nasıl bir giriş bölümü yazsam diye düşündüm aklıma hiç bir şey gelmedi. O yüzden direk mevzuya giriş yapıyorum. İşte mevzu;

Amacımız, başlıkta da açık ve net olarak belirttiğim gibi dinamik linq sorgusu yazmak. Böyle bir işlemi visiaul studio kurulumuyla gelen default linq sınıfları ile yapamıyoruz. Harici olarak bir şeyler yüklememiz gerekli. Ama tabi yükleme işlemleri için taklalar atmamıza (kütüphane derleme falan filan yani) gerek yok - .Net in en sevdiğim yanı. Sağolsun Microsofttaki amcalar bizim için bir sınıf yazmışlar. Bize düşen bu sınıfı indirip projemize dahil etmek.

İndir

Öncelikle dinamik linq ile kastımız ne buna bakalım. Senaryomuz şu şekilde, elimde bir dropdownlistim(php ce si combobox) ve datagridim var. Dropdownın içinde tablodaki alan adları var. Listeden seçtiğim alan adına göre griddeki verilerimin sıralanmasını(orderby) istiyorum. Dinamik linq kullanmadan bu sorguyu aşağıdaki gibi yazabiliriz.

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
/* Value index
* ---- -------
* FirstName 0
* LastName 1
* Address 2
*/
var employess = from t0 in db.Employees
select new
{
t0.FirstName,
t0.LastName,
t0.Address
};
switch (DropDownList1.SelectedIndex)
{
case 0: employess = employess.OrderBy(o => o.Name); break;
case 1: employess = employess.OrderBy(o => o.LastName); break;
case 2: employess = employess.OrderBy(o => o.Address); break;
}

GridView1.DataSource = employess;
GridView1.DataBind();
}



Ne yaptığımıza bakacak olursak. Önce bütün verileri employess değişkenine çektik. Daha sonra switch() yarıdımı ile dropdownlistten seçilen değerin index numarasına göre karşılaştırma yaparak, veriyi sıraladık ve employess değişkenine aktardık.

Görüldüğü gibi dinamik linq kullanmadan switch() kontrolü ile istediğimiz işlemi gerçekleştirdik. Lakin fazladan bir kontrol yapısı kullanmış olduk. Daha kompleks sorgularda yazacağımız kod satırı daha da artacaktır.

Şimdide dinamik bir linq sorgusu ile işlemi nasıl gerçekleştireceğimize bakalım.

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
var employess = (from t0 in db.Employees
select new
{
t0.FirstName,
t0.LastName,
t0.Address
}).OrderBy(DropDownList1.SelectedValue);

grdListe.DataSource = employess;
grdListe.DataBind();
}



Gördüğünüz gibi ekstradan bir kontrol yapısına ihtiyaç duymadan dropdownlistin value değerine göre sıralamayı gerçekleştirdik.

Bu uygulamaya bir de arama özelliği ekleyelim. Bunun için ikinci bir dropdownlist,textbox ve button nesnelerini kullanacağız. Dropdownlistten hangi alan adına göre arama yapacağımızı seçip,textboxada aranacak kelimeyi gireceğiz.Bu işlem için butonun tıklama olayındaki kod aşağıdaki gibi olacak.

protected void btnAra_Click(object sender, EventArgs e)
{
var employess = db.Employees.Where(ddlAlanAdi.SelectedValue + ".Contains(@0)", txtKelime.Text)
.Select(s => new {s.FirstName,s.LastName,s.Address});

grdListe.DataSource = employess;
grdListe.DataBind();
}



Bu örnekte dinamik linq kullanımının esnekliğini daha iyi görebiliyoruz. "@" yardımı ile aralara istediğimiz değerleri parametre olarak ekleyebiliyoruz. Benim anlatacaklarım bu kadar. Uygulamanın tamamını buradan indirebilirsiniz.

Kolay gelsin...