Meta

  • Add to Google
  • Add to My Yahoo!
  • Add to My MSN
  • Add to Technorati Favorites
  •  
  • Valid XHTML 1.0 Transitional
  • Valid CSS!
  •  
Şüphesiz Visual Studio ve .Net elbirliği ile XML Web Service yazmayı çok kolaylaştırdı. Tabii ki test etmeyi de. Geliştirme için .Net ortamını kullanıyorsanız size sağlanan en büyük kolaylıklardan biri de browser'ınız ile [servis_adı].asmx adresinden servisi ziyaret edip değişkenleri elle girerek test edebilme olanağıdır. Yalnız güvenlik açısından sadece aynı makine üzerinden bunu yapılmasına izin veriliyor. Eğer başka bir makineden servisinizi bu şekilde test etmeniz gerekiyorsa aşağıdaki ayarları web.config dosyanıza eklemeniz gerekiyor :
<system.web>
    <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>
</system.web>
O makinedeki bütün uygulamalar için böyle bir ihtiyacınız varsa bu işlemi machine.config üzerinde yaparak amacınıza ulaşabilirsiniz.

etiketler : .net  

HttpContext altında sayfayı ziyaret edenin gerçek bir ziyaretçi mi yoksa bir crawler (örümcek) mi olduğunu anlayabilmemiz için bir property var. Request.Browser.Crawler şeklinde ulaşılabilen ve boolean bir değeri olan bu özellik hakkında nedense yeterli bilgi yok ve kullanıldığında sürekli false değeri dönüyor. Bunu düzeltmenin sihirli yolu ise web.config ya da machine.config dosyasında ufak bir değişiklik. Yapmanız gereken <system.web> bölümü altına aşağıda örneği bulunan <browsercaps> bölümünü eklemek.
    <browserCaps>
<filter>
<!-- Google (Yahoo uses this as well) -->
<case match="^Googlebot(\-Image)?/(?'version'(?'major'\d+)(?'minor'\.\d+)).*">
browser=Google
version=${version}
majorversion=${major}
minorversion=${minor}
crawler=true
</case>

<!-- Googlebot -->
<case match="Googlebot">
browser=Googlebot
crawler=true
</case>

<!-- Google Adsense -->
<case match="Mediapartners-Google">
browser=GoogleAdsense
crawler=true
</case>

<!-- Alta Vista (Scooter) -->
<case match="^Scooter(/|-)(?'version'(?'major'\d+)(?'minor'\.\d+)).*">
browser=AltaVista
version=${version}
majorversion=${major}
minorversion=${minor}
crawler=true
</case>

<!-- Alta Vista (Mercator) -->
<case match="Mercator">
browser=AltaVista
crawler=true
</case>

<!-- Slurp (Yahoo uses this as well) -->
<case match="Slurp">
browser=Slurp
crawler=true
</case>

<!-- MSN Bot -->
<case match="MSNBOT">
browser=MSN
crawler=true
</case>

<!-- Excite -->
<case match="ArchitextSpider">
browser=Excite
crawler=true
</case>

<!-- Twiceler -->
<case match="Twiceler">
browser=Twiceler
crawler=true
</case>

<!-- Lycos -->
<case match="Lycos_Spider">
browser=Lycos
crawler=true
</case>

<!-- Ask Jeeves -->
<case match="Ask Jeeves">
browser=AskJeaves
crawler=true
</case>

<!-- Alexa Crawler -->
<case match="ia_archiver">
browser=AlexaCrawler
crawler=true
</case>
</filter>
</browserCaps>


etiketler : .net  

Geçtiğimiz günlerde üzerinde çalıştığım bir projede elimdeki generic bir listenin içerisindeki elemanları rassal olarak sıralamam gerekti. Biraz uğraş ve denemeden sonra gayet güzel ve hızlı çalışan bir kod ortaya çıktı sizlerle de paylaşmak istedim.
Bu işi yaparken asıl sorun rassal ama tutarlı olmak, daha doğrusu benim kaygım bu idi ama karşılaştırılan iki elemanın eşit olduğunu söylemediğimiz sürece burada sorun çıkmıyor. Çünkü 1 2'den, 2 de 3'ten büyük dediğimizde 1'in 3'ten de büyük olduğu sonucuna ulaşılabiliyor. Neyse fazla uzatmadan kodu vereyim :
    Random _Randomizer = new Random();
private int listRandomizerComparison(object x, object y)
{
if ((x == null && y == null) || x == y)
{
return 0;
}

if (x == null || y == null)
{
return (x == null) ? -1 : 1;
}

return (_Randomizer.Next(10) > 5) ? 1 : -1;
}
Bu sıralamayı yapan methodumuz, şimdi de gelelim nasıl kullanacağımıza :
    System.Collections.Generic.List<string> listToRandomize = 
new System.Collections.Generic.List<string>();
for (int i = 0; i < 1000; i++)
{
listToRandomize.Add(i.ToString());
}
listToRandomize.Sort(listRandomizerComparison);
Burada 1000 elemanlı bir string listesi yapıyorum ve rassal olarak sıralıyorum, listeniz çok büyükse bile endişeniz olmasın zira benim bilgisayarımda 1.000.000 (bir milyon) elemanlı bir string listesi için yaklaşık 3,5 saniyede işlem tamamlanıyor.

etiketler : .net  

Transparent backgroundu olan png formatlı imajlar internet explorer'in 7.0 öncesi sürümlerinde sorun çıkartır, saç baş yoldurur. Gri bir arka planda render edilerek iğrenç görüntülere sebebiyet verebilir. Bob Osola isimli bir arkadaş javascript ile ile bir çözüm bulmuş. Daha doğrusu msdn'de microsoft'un önerdiği iğrenç çözümü biraz otomatikleştirmiş. Kullanımı da gayet basit; arkadaşın hazırlamış olduğu pngfix.js dosyasını
<!--[if lt IE 7.]>
<script defer type="text/javascript" src="pngfix.js"></script>
<![endif]-->
şeklinde include ediyoruz ve sorunumuz çözülüyor. :-) Map ve rollover için de ayrıca çözümler mevcut...

Ayrıntılı bilgi için : http://homepage.ntlworld.com/bobosola/


etiketler : .net  

Klasik programlama dillerinden sıkılanlara farklı bir dil. Teorik olarak mümkün olacak en küçük compiler'e sahip çünkü sadece ve sadace 8 komutu var ve bu konutlar tek karakterden oluşuyor.
Detaylı bilgi için : http://en.wikipedia.org/wiki/Brainfuck
İşte tüm komutları ve c'deki karşılıkları :
brainfuck command C equivalent
> ++ptr;
< --ptr;
+ ++*ptr;
- --*ptr;
. putchar(*ptr);
, *ptr=getchar();
[ while (*ptr) {
] }
Bu komutlar dışındaki her karakter comment olarak algılanıyor. :-) Hello World örneği uzun ve anlaşılmaz olmasına rağmen bu dille yazılmış bir kaç basit oyun bile var. Eğer bu dil yeterince kafanızı karıştırmamışsa eksinin artı, büyüktürün küçüktür demek olduğu ReverseFuck diline de bir göz atabilirsiniz... :-)


etiketler : brainfuck  .net  

How to convert a String to an Enum?
object Enum.Parse(System.Type enumType, string value, bool ignoreCase);

enum Colour { Red, Green, Blue }
// ...
Colour c = (Colour) Enum.Parse(typeof(Colour), "Red", true);
Console.WriteLine("Colour Value: {0}", c.ToString());

// Picking an invalid colour throws an ArgumentException. To
// avoid this, call Enum.IsDefined() first, as follows:
string nonColour = "Polkadot";
if (Enum.IsDefined(typeof(Colour), nonColour))
c = (Colour) Enum.Parse(typeof(Colour), nonColour, true);
else
MessageBox.Show("Uh oh!");

Thanx to Tim Sneath



etiketler : .net