“Cannot create/shadow copy ‘dll ismi’ when that file already exists” probleminin çözümü

Geçen gün uygulamalarımızın çalıştığı sunucunun olay kayıtlarını incelerken ASP.NET’in sürekli olarak bu hata ile karşılaştığını gördüm. Bunun neticesinde web siteleri kimi zaman cevap veremez duruma geliyordu. Internette biraz araştırma yaptığımda genelde geliştiricilerin Visual Studio’da çalışırken bu hatayla karşılaştıklarını gördüm. (Engin ile birlikte) Bir süre çözüm aradıktan sonra bu yazıyı bulduk. Benim gibi bu problemle karşılaşmış ve çözüm yolu arayışındaki başka bir geliştiricinin bulduğu çözümü ben de sizlerle paylaşayım dedim.

web.config dosyanızda system.web elemanına aşağıdaki kod öbeğini ekleyerek sorundan kurtulabilirsiniz.

<hostingenvironment shadowcopybinassemblies="false"></hostingenvironment>

shadowCopyBinAssemblies özelliği şu şekilde tanımlanmış: Bir Boolean(Evet/Hayır) değeri ile uygulamanın Bin klasöründe yer alan bileşenlerinin, gölge kopyalarının (shadow copy) uygulamanın ASP.NET geçici dosyalar klasörüne kopyalanıp kopyalanmayacağını belirtir.

Umarım işinize yarar.

BOM karakter dizisi olmadan XmlWriter ile UTF-8 kullanımı

C# ile geliştirdiğim projelerde XML üretmem gerektiğinde, bu konuda çok becerikli olduğunu düşündüğüm XmlWriter nesnesini kullanırım. Nesneyi oluştururken aşağıdaki gibi oluştururdum;

XmlWriter writer = new XmlTextWriter(stream, Encoding.UTF8);

Bilmediğim şey ise, bu şekilde nesneyi oluştururken otomatik olarak streamin başına UTF-8 tanımlayıcısı olan üç baytlık BOM karakter dizisinin ekleniyor olduğuydu. Yazmış olduğum bir servisi kullanan firmadan gelen dönüş ile, gönderdiğim XML’de BOM olduğunu ve bu yüzden XML’i düzgün işleyemediklerini öğrendim. Bunun üzerine BOM olmadan XML’i nasıl oluştururum diye araştırdım ve buradaki makaleye ulaştım.

Yapmamız gereken çok basit. Daha önce Encoding.UTF8 ile elde ettiğimiz Encoding nesnesini bu sefer yeni bir Encoding nesnesi oluşturarak hallediyoruz. Yeni Encoding nesnemizi oluştururken de encoderShouldEmitUTF8Identifier parametresini false olarak kullanıyoruz;

XmlWriter writer = new XmlTextWriter(stream, new UTF8Encoding(false));

Ben XmlWriter kullanırken bu sorunla karşılaştığımdan yazı da bu konu etrafında şekillendi. Elbette ki Encoding kullandığınız başka durumlarda da bu şekilde Encoding nesneleri oluşturabilirsiniz.

Aslan sütüyle ilk imtihanım

Yaşımı tam hatırlamasam da aslan sütüyle ilk imtihanımı çok net hatırlıyorum. Oldukça küçüktüm, babam ve arkadaşları muhabbetin dibine vurmuşken merakla babama yaklaşıp, herkesin neşeyle içtiği beyaz suyun ne olduğunu sormuştum. “Rakı” kelimesi yeterli gelmemiş olacak ki bir de denemek istemiştim. Babam da sağ olsun, biraz muzırlıktan biraz da tadını alınca akıllanırım diye muhtemelen, tattırmıştı. Heves bu ya, kokusuna rağmen bir ağız dolusu rakıyı boğazımdan aşağı yuvarlamıştım. Yiğitliğe çamur sürmemek için de hiç bir şey olmamış da beğenmemişim gibi hızlıca uzaklaşmıştım. :) Bu deneyimden aklımda kalan iki şey vardı. İlki rakının tadı, ikincisi de masadaki şen şakrak muhabbet. Yıllar içinde kendim de bolca deneyimledim bu ikisini. İkisi ayrı ayrı güzel olsa da bir arada bambaşka oluyor.

FriendFeed’de Yakup Abiyi okurken, “Ben yazacak olsam ne yazardım?” diye düşünürken geldi aklıma. Madem aklıma geldi yazayım bari dedim. :)

Tekrarlı Kısaltmalar – Recursive Acronyms

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.

  • GNU – GNU’s Not Unix
  • PHP – PHP: Hypertext Preprocessor
  • VISA – Visa International Service Association
  • XNA – XNA’s Not Acronymed

Türkçe Twitter

Bir önceki yazımda Twitter’ın henüz Türkçe dil desteği olmadığından bahsetmiştim. Dün oturdum biraz uğraştım. Alternatif bir metotla Twitter’ın Türkçe kullanılabilmesi için bir şeyler yaptım.

İşte yapmanız gerekenler;

  1. Firefox kullanın. Çünkü sonraki adımları Firefox ile yapabileceksiniz. (Alternatif varsa da ben bilmiyorum.)
  2. Firefox’a Greasemonkey eklentisini yükleyin.
  3. userscripts.org üzerinden Türkçe Twitter betiğini yükleyin.

Hepsi bu kadar. Artık twitter’a girdiğinizde sitenin bir çok kısmının Türkçe olduğunu göreceksiniz. Vakit buldukça sitenin geri kalanını da Türkçeleştirmeye çalışacağım.