Lutz Roeder’s Reflector 5.0

23 02 2007

Özellikle .NET Framework’un kapalı kaynaklarına girip içsel çalışmasını merak edenlerin vazgeçilmezi Reflector yeni sürümüyle karşınızda…

Reflector 5

(Codeplex) Reflector Add-In’leri (Şiddetle Tavsiye!)

Reflector Tanıtımı (PPT)

Konuyu paylaşan Ken Egozi ve Mitch Denny‘ye teşekkür ediyorus…

Advertisements




We are us/ing machine?

21 02 2007

TEZ

antiTEZ





Amazon Mechanical Turk 101

18 02 2007

“Beta” tipi alternatif web hizmetleri verme modası sürerken Amazon’un son hizmeti gerçekten ilgi çekici. 🙂

Amazon Mechanical Turk, resmi tanımı ile bir çeşit yapay yapay zeka.

Bilgisayarların çözmesi gerçekten zor olan, karmaşık desenler içinden anlamlı imgeler bulmak gibi görüntü işleme görevlerini bilirsiniz. Hatta bu tür uygulamalar web’de otomatik form doldurmayı engellemek gibi gündelik yaşamda da karşımıza çıkar. İnsanlar için saniyelik, basit işler olmasına rağmen bilgisayarların oldukça zamanını alan görüntü işleme ve buna benzeyen semantik görevleri yerine getirmek için sunulabilecek en basit çözüm herhalde bilgisayarları aradan kaldırıp insanları kullanmak olurdu… Ve oldu da..

Lafı dolandırmayı (belki de daha açıklayıcı olmak adına) ne kadar çok sevsem de basitçe Amazon’un yeni hizmeti ile artık web’de form doldururken karşınıza çıkan “insan olma” testlerini yaparak para kazanabileceğinizi söylesem iyi olacak.

Sistem basitçe şöyle çalışıyor :

  1. (Her zamanki gibi ne yazık ki) Üye oluyorsunuz. (ama beleş tabii)
  2. HIT (Human Intelligence Task 😉 ) kategorinizi seçiyorsunuz. (Görüntü analizi, web sitesi semantik tanımlaması gibi)
  3. HIT’inizi gerçekleştiriyorsunuz. (Resim için örneğin rastgele gelen uydudan çekilmiş deniz fotoğrafında bir tekne mevcut mu? veya “Verilen bir web sitesini en iyi tanımlamak için hangi üç tümceyi kullanırsınız?” gibi)
  4. Bu gibi her iş karşılığı $0,07 gibi bir ücret kazanıyorsunuz.

Bağlamam gereken son konu sanırım “Turk” isminin nereden bu konuya karıştığı. Amazon buna cevabı da eksik bırakmamış. Anladığımız kadarıyla konu Avrupa tarihi ile de ilgili. 1976 yılında, Wolfgang von Kempele isimli Macar soylusu, aralarında Napolyon ve Benjamin Franklin (Amerika?) da bulunan bir çok kişiyi yenen tahtadan yapılmış bir otamat yapar. Bu dişli ve çarklar yardımıyla hareket eden manken, kaftan ve sarıkla giydirildiği için adına “Mekanik Türk” denir. Sonradan kuklanın içine saklanmış bir satranç ustası olduğu da ortaya çıkar tabi.

Bu bağlamda Amazon’un hizmetinde, kukladaki satranç ustaları kullanıcılar oluyor sanırım :).





Windows IE Entegrasyonu Üzerine Bir Not

17 02 2007

Geçtiğimiz yıllarda (çok önce geçtik ama), Internet Explorer’ın Windows’a entegrasyonu üzerine bir çok tartışma ve davaya şahit olduk. Hatta Amerikan anti-tekel yasalarına göre Microsoft bölünecek, Windows’la ilgilenen departman ayrılacak, Office’le ilgilenen departman ayrılacak gibi söylentiler etrafta dolaşıyordu. Devam eden yıllarda bildiğim kadarıyla bu söylemler gerçekleşmedi. Hatta artık bir çok MS ürünün IE’dan fazlasıyla yararlandığını hepimiz biliyoruz.

Geçenlerde MSDN Help sisteminde bir makale okurken, gerekli araç çubuğu ikonuna tıklayarak yazı puntosunu büyülttüm. MSDN okumamı bitirdikten sonra web’de dolaşırken bir de baktım ki Internet Explorer’da puntoları büyük gösteriyor! Entegrasyon ve bileşenleri tekrar-kullanım mantığını anlayabilirim ama yapılandırma veya ayar dosyalarının uygulamaya özel olması gerekmez mi?





DataTable.Clone() Hakkında

15 02 2007

Belki geç kalmış bir bilgi ama yakın zamanda başıma geldiği için dikkat çekmek istedim,

Diyelim ki içinde veriler bulunan bir tabloyu çoğaltmak için DataTable.Clone() + ImportRow() yapmak istiyorsunuz, böyle bir durumda bu DataTable örneğine ait DefaultView (yani varsayılan DataView) e atanmış bir filtre (DataView.RowFilter) tanımlanmışsa bu filtrenin klonlanarak oluşturulmuş yeni DataTable’da yer almayacağını unutmamalısınız…

Örneğin :

DataTable dtOrijinal = new DataTable();
...
dtOrijinal.DefaultView.RowFilter = "Isim = 'Ahmet'";
Console.WriteLine("Orijinal Filtre: " + dtOrijinal.DefaultView.RowFilter);
...
DataTable dtClone = dtOrijinal.Clone();
Console.WriteLine("Klonun Filtresi: " + dtClone.DefaultView.RowFilter);

şeklindeki bir kod parçacığı…

Orijinal Filtre: Isim = ‘Ahmet’
Klonun Filtresi:

şeklinde bir çıktı oluşturur.

Kısaca belirtmek gerekirse klonlar veriyi içermediği gibi filtreleri de içermiyor!

Ek olarak filtrelenmiş bir DataTable’ın satırları içinde dolaşırken filtre dışında kalan satırlara da ulaşırsınız. Dolayısıyla filtre edilmiş bir DataTable’daki verileri bir klona aktarırken satırları değil de DefaultView satırlarını dolaşmalısınız.

Örneğin sadece filtre kuralına uyan satırları import etmek istenen bir durumda aşağıdaki kod parçası istenen sonucu üretmez:

foreach (DataRow dr in dtOrijinal.Rows)
{
this.dtClone.ImportRow(dr);
}

…ama aşağıdaki kod parçası ile sadece filtre kuralıana uyan satırlar alınabilir:

foreach (DataRowView drv in this.dtOrijinal.DefaultView)
{
this.dtClone.ImportRow(drv.Row);
}





Ozan’a Selam

3 02 2007

Web güncesi tutanlar arasına sevgili Ozan Günceler de katıldı.

Bu noktada “Günceler’den günce tutmasını uzun zamandır bekliyorduk!” esprisi yapmamaktan kendimi alı koyamayacağım. 🙂

Özellikle Active Directory üzerinde çalışan makinalar, LDAP gibi konuların .NET tarafından değerlendirilmesi ve yönetilmesi gibi kullanışlı konular üzerine girişler yapmayı düşünen
Ozan’nın günlüğüne aynı Ejder’in ki gibi devamlılık dilerim.

Yazılarını ilgiyle takip edeceğiz Ozan’cım. Hoşgeldin 😉