“Ambiguous match found” hatası neden kaynaklanır, nasıl düzeltilir?

kara tarafından 26 Nisan 2011 tarihinde C#, Programlama, Web, Yazılım kategorisinde yazıldı.

ASP.NET ile uygulama geliştirirken çok ilginç bir sorunla karşılaştım. Biraz uğraştıktan sonra sorunu çözdüm. Şansıma çok büyük bir proje değildi ve yine şansıma küçük bir değişiklik yaptığım sırada karşıma çıktı. Bu yüzden problemi çok daha kolay tanımlayabildim ve bu da çözüme daha kolay ulaşmamı sağladı.

Problem derleme sırasında karşınıza çıkmıyor. Proje sorunsuz bir şekilde yapılandırılıyor fakat problemin olduğu web sayfasını açmak istediğinizde ilk satırda belirsiz eşleşme (Ambiguous match) bulunduğu ile ilgili bir hata mesajı alıyorsunuz ve sayfa açılmıyor. Aşağıdaki ekran görüntüsüne benzer bir görüntü ortaya çıkıyor.

Bir süre webde araştırınca sorunun neden oluştuğunu, nasıl çözüleceğini burada buldum. Temel olarak problem, web sayfasında tanımlanmış bir kontrol ile aynı isme sahip bir değişken tanımlandığında ortaya çıkıyor. C# büyük/küçük harf duyarlı bir dil olsa da nedense bu durumda düzgün çalışmıyor ve hata üretiyor. Yani sayfanızda “Metin” isimli bir kontrol bulunuyorsa “metin” isimli bir değişken kullanmamanız gerekiyor.

Karşımıza açıklayıcı bir hata mesajı çıkmadığı için bu davranışın bir bug olduğunu düşünüyorum. İşin ilginç yanı konuyla ilgili bulduğum makale 2006 yılına ait, yani en az 5 senedir bu problem var ve Microsoft tarafından konu ile ilgili bir geliştirme/açıklama/düzeltme söz konusu değil…

Etiketler: , , , ,

Wordle ile web profilim

kara tarafından 17 Nisan 2011 tarihinde Web kategorisinde yazıldı.

DYG için yazılım geliştirici ararken Wordle‘ı kullanmak gelmişti aklıma. Aradığımız özellikleri ağırlıklarına göre sıralasak, bir kelime bulutu oluştursak, farklı bir şekilde kimi aradığımızı göstersek diye düşünmüştüm. Nedense o sıralar bir çok kereler denememe rağmen Wordle web sitesine girememiş, dolayısıyla da bir türlü kelime bulutunu oluşturamamıştım. Bunun üzerine ben de daha basit bir yöntemle kendi kelime bulutumu oluşturmuş ve yayına almıştım. Bugün bir yerlerde Wordle yine karşıma çıkınca tekrar siteye girmeye çalıştım ve sorunsuz bir şekilde girebildim. Fırsatı değerlendirip hemen yazılım geliştirici ilanının kelime bulutunu Wordle üzerinde oluşturdum.

Asıl uzun süredir yapmak istediğim ise başka bir şeydi. Bookmarklarımı saklamak için delicious kullanıyorum. Firefox eklentisi ile beraber çok verimli çalışıyor. Bir bookmark kaydederken mümkün olduğunca ilgili etiketleri girer, daha sonra aradığımda kolay bulabilmeme olanak sağlayacak etiketleri eklerim. Bunun Wordle ile alakasına gelince; Wordle herhangi bir delicious hesabının etiketlerini kelime bulutu haline getirebiliyor. Bu sayede bir nevi web profilinizi ortaya çıkartabiliyorunuz. İşte benim profilim:

Delicious üzerinde hangi etiketleri daha sık kullandığımı görebiliyorum zaten ama bu şekilde gördüğümde çok daha farklı oldu. İlgimi çeken alanların (JavaScript, jQuery, PHP, WordPress) bu kadar ön planda olmalarına şaşırmadım ama .NET, C# vb etiketleri yeterince büyük görememek şaşırttı açıkçası. Özellikle de hayatımı .NET üzerinde uygulama geliştirerek kazandığım göz önünde bulundurulursa. Bunda .NET ile sürekli olarak uygulama geliştiriyor olmamın payı olabilir. Yaptığım araştırmalar sonucu ortaya çıkan sonuçları projelerde kullanıyorum ve gerektiğinde bu projelere geri dönüp, kendi kodumdan destek alıyorum. Bu sebeple ilgili araştırmalar bookmarklarım arasına girmiyor olabilirler.

karalamalar.net etiket bulutunun delicious etiket bulutu ile bu kadar örtüşmesinden de ilgim olan alanlarda daha çok paylaşım yaptığım sonucunu çıkartıyorum. Son zamanlarda yazmak istediğim bir kaç konu var. Bari onları yazayım da teraziyi biraz olsun dengeleyeyim. :D

Etiketler: , , , ,

WordPress 3.0 ile beraber blog hayatınızı değiştirecek 10 yeni özellik

kara tarafından 2 Haziran 2010 tarihinde Web, Wordpress kategorisinde yazıldı.

Yedinci yıldönümünde ilk dağıtım adayı yayınlanan WordPress 3.0 bir çok yenilikle beraber geliyor. Bunlardan en öne çıkan 10 tanesini sizler için sıraladım;

  1. WordPress MU, WordPress paketi ile birleştiriliyor. Artık sitenizi bir siteler ağına dönüştürebilirsiniz.
  2. Dahili menü sistemi geliyor. İstediğiniz yazıyı, sayfayı, kategoriyi ya da etiketi ya da istediğiniz adresi özelleştirebildiğiniz menüde kullanabileceksiniz. Menüleri kullanabilmek için temanızın menüleri destekliyor olması gerekiyor.
  3. Sitenin arka planını değiştirebilme desteği geliyor.
  4. Varsayılan tema değişiyor. Yeni tema Twenty Ten (Yirmi On ya da 2010) WordPress 3.0′ın gelişmiş özelliklerini destekliyor. Özelleştirilebilir başlık alanı, arka planın özelleştirilmesi, menü kullanımı, özelleştirilebilir yazı formatları vb…
  5. Yönetim ekranlarına yardım alanları ekleniyor. Bir yönetim ekranında neyin ne işe yaradığını öğrenmek için sağ üst köşedeki yardım sekmesini kullanabileceksiniz.
  6. Çekirdek paketi hafifletmek için içeri aktarıcılar paketten çıkartılıyor. Bir aktarıcıya ihtiyacınız olduğunda, harici olarak yükleyip kullanmanız gerekecek.
  7. Turbo özelliği paketten çıkartılıyor. Google, Turbo özelliğini kullanmak için gerekli olan Google Gears uygulamasını geliştirmeyi bıraktığını açıkladığı için, WordPress de paketten çıkartıyor.
  8. Temaları ve eklentileri toplu güncelleme desteği geliyor.
  9. WordPress yüklemesi sırasında kullanıcı adı ve parola seçme özgürlüğü. Bu sayede admin kullanıcı üzerinden yapılan atakların önüne geçilebilmiş olacak.
  10. Yavru tema özelliği: Yavru temalar, asıl temaların özelliklerine sahiptirler ve asıl temalara dokunmadan özelliklerini değiştirebilmenize olanak sağlar. Bu sayede asıl tema güncellendiğinde yaptığınız değişiklikleri kaybetmiyorsunuz.

3.0 Sürümü için hedeflenen çıkış tarihi olarak Haziran ortaları belirtilmiş.

Etiketler: , , , , , ,

valiDate v2.1

kara tarafından 16 Nisan 2010 tarihinde JavaScript, Programlama, Web kategorisinde yazıldı.

Bugün valiDate metodunu çalışma arkadaşıma gösterirken, neden doğrulama başarılı olduğunda tarih nesnesini döndürmediğim sorusu aklıma geldi. Toplam 7 byte’lık ufak bir ekleme ile, doğrulama başarılı olduğunda JavaScript tarih nesnesi döndürecek şekilde metodu güncelledim. Bu sayede metottan dönen değeri hala if ifadesi içinde kullanabilirken, isterseniz if ifadesinden önce metottan dönen değeri bir değişkene atayarak, bu değişkeni if ifadesinde kullanabilir ve doğrulamayı geçerse değişkeni tarih nesnesi olarak kullanabilirsiniz. Hatta abartıp doğrulamadan dönen değeri direkt if ifadesi içinde değişkeninize atayarak da kullanabilirsiniz.

/*
 * valiDate
 * http://www.karalamalar.net/
 *
 * Copyright (c) 2009 İzzet Emre Erkan
 * Licensed under Creative Commons Attribution-Share Alike 3.0 Unported License
 * http://creativecommons.org/licenses/by-sa/3.0/
 *
 * Date: 2010-04-16 17:08:32 +0300 (Fri, 16 Apr 2010)
 * Revision: 7
 */
String.prototype.valiDate =
  function() {
    if(/^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)[0-9]{2}$/.test(this)) {
      var v = this.replace(/[- /]/g,'.').split('.');
      var d=parseInt(v[0],10), m=parseInt(v[1],10), y=parseInt(v[2],10);
      var o = new Date(y, m - 1, d);
      return o.getDate() == d && o.getMonth() + 1 == m && o.getFullYear() == y ? o : false;
    }
    else
      return false;
  }

Metodun küçültülmüş halini (647 byte) buradan edinebilirsiniz.

Etiketler: , , , , ,

Tekrarlı Kısaltmalar – Recursive Acronyms

kara tarafından 8 Ocak 2010 tarihinde Web kategorisinde yazıldı.

Bugün Engin’in blogu için hazırladığı makaleyi görünce aklıma geldi. İlginç bulduğum ve sizlerin de ilgisini çekebileceğini düşündüğüm için de paylaşayım dedim.

Başlıkta orijinal ismini görebileceğiniz bu terim için öngördüğüm Türkçe karşılık “Tekrarlı Kısaltma”. Tekrarlı kısaltma, açılımında yine kendisini tekrar eden kısaltmalar için kullanılıyor. Ağırlıklı olarak bilgisayar dünyasında örnekleriyle karşılaşsak da teknik olmayan kullanımları da mevcut. Bu tip Türkçe kısaltma hiç bilmediğim için konuyu anlatabilmek için meşhur olanlarından bir kaç tekrarlı kısaltma yazayım. Daha fazlası için vikipedi makalesine bakabilirsiniz.

  • GNUGNU’s Not Unix
  • PHPPHP: Hypertext Preprocessor
  • VISAVisa International Service Association
  • XNAXNA’s Not Acronymed
Etiketler: , ,