VMWare’e geçit vermeyen FixCamera.exe’yi öldürün!!!

İş yerinde kullandığım Orite RN3700 webcam ile beraber gelen kurulum dosyaları, bilgisayarın açılışında çalışmak üzere FixCamera.exe adlı bir uygulamayı da beraberinde kuruyor. Ne işe yaradığını bulamadığım bu uygulama VMWare uygulama dosyaları ve kurulum dosyaları ile çakışıyor ve ne uygulama dosyalarının, ne de kurulum dosyalarının çalışmasına izin veriyor. VMWare’i ya da VMWare kurulum dosyalarını çalıştırmak istediğinizde, hiç bir hata mesajı almıyorsunuz ve çalıştırmak istediğiniz uygulama da çalışmıyor. Görev Yöneticisinde de VMWare ile ilgili bir iz göremiyorsunuz. Benim gibi olayın FixCamera.exe’den kaynaklandığını bilmiyorsanız bir çok VMWare kaldırma/yeniden kurma vb işlemleri yapmaya çalışabilir, değerli vaktinizi boşa harcayabilirsiniz.

Bir çok başarısız yeniden yükleme denemesinden sonra, probleme farklı bir açıdan yaklaşıp, çalışan diğer uygulamalarla çakışma ihtimalini göz önüne aldım ve görev yöneticisini açıp, bilgisayarın çalışmasını engellemeyecek, çalışan harici uygulamaları teker teker sonlandırmaya başladım. Her uygulamayı sonlandırdıktan sonra VMWare’i tekrar çalıştırmayı deneyim. FixCamera.exe’yi sonlandırdıktan sonra VMWare çalıştı. Mevzuyu hemen yetkili mercilere taşıyıp, yalnız olup olmadığımı kontrol ettim ve yalnız olmadığımı gördüm. Benim gibi bu dertten muzdarip bir kaç kişi daha varmış. Ben de konuyla ilgili Türkçe bir çözümün de internetlerde yer alması için bu yazıyı yazayım dedim.

FixCamera.exe’yi bilgisayarın açılışından gönül rahatlığıyla kaldırabilirsiniz. Kameranız çalışmaya devam edecektir. Açılıştan kaldırmadan VMWare çalıştırabilmek isterseniz bu durumda Görev Yöneticisinden FixCamera.exe uygulamasını sonlandırmanız gerekecektir.

C# ile SEO uyumlu daha anlaşılır web adresleri hazırlama

PHP ile bu işi nasıl yapabileceğimizi daha önce anlatmıştım. C# ile geliştirdiğimiz bir uygulamada da gerekli olunca biraz araştırdım. PHP ile olan deneyimlerimden yola çıkarak ihtiyaç listesi çıkarttım ve bu ihtiyaçlar doğrultusunda biraz araştırma yaptım. Bu araştırmalardan bir tanesi HTML etiketlerinin temizlenmesi konusuydu ki ondan da bahsetmiştim. Geriye çentikli karakterlerin (ğ,ü,ş,ö,ç, ì, é vb.) çentiksiz hallerine ulaşmak gibi bir problem kalmıştı. Problemin çözümüne burada ulaştım.
Okumaya devam et C# ile SEO uyumlu daha anlaşılır web adresleri hazırlama

Internet Explorer iFrame çerezlerini (cookie) neden engelliyor?

Gün geçmiyor ki Internet Explorer yeni bir arızayla beni çıldırtmasın. Bugüne kadar hep standartları takip etmediği için çıldırtmıştı, bugün ise yeni bir standardı direkt desteklemeye başladığı için çıldırttı. IFrame içinde yer alan sayfalar Internet Explorer’da tarayıcıya çerez (cookie) gönderemeyince problemi araştırmaya başladım ve buradaki yazıya ulaştım.

Problem Internet Explorer’ın W3C tarafından gizlilik tercihleri ile ilgili oluşturulmuş Platform for Privacy Preferences Project, kısaca P3P adlı standardı desteklemesinden kaynaklanıyormuş. Tabi bu durumda buna bir problem demek doğru olur mu bu da tartışılır. Aslında iFrame içinde gösterdiğiniz sayfa farklı bir alan adından çağrılıyorsa, asıl alan adındaki çerezlerin etkilenmemesi/kötüye kullanılamaması için geliştirilmiş bir önlem. Firefox’ta varsayılan olarak bu ayar kapalı geliyor. İsteğe bağlı olarak kendiniz açabiliyorsunuz. Internet Explorer ise varsayılan olarak bu ayarı açık olarak kullanıyor. Lafı fazla uzatmaya gerek yok aslında. P3P hakkında detaylı bilgiye buradan ulaşabilirsiniz. Ben size sorunu nasıl çözebileceğinizden bahsedeyim;

İsterseniz çeşitli online araçlarla kendi P3P kodunuzu üretebilirsiniz(IBM P3P Policy Editor). Uğraşmak istemeyenler iFrame içinde çalışacak olan ve çerez gönderecek olan her sayfanın başlık bilgilerinde P3P için özel bir bilgi göndermeniz gerekiyor. Çeşitli platformlar için örnekleri ekliyorum. Burada yer almayan fakat sizin kullandığınız bir platform varsa, örnek olarak ekleyebilirseniz sevinirim.

PHP:

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

ASP.NET (C#);

HttpContext.Current.Response.AddHeader("p3p","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");

Django:

response = render_to_response('mytemplate.html')
response["P3P"] = 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'

JSP:

response.addHeader("P3P","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"")

Rails:

response.headers['P3P'] = 'CP="NON DSP COR CURa IVAa IVDa CONa OUR NOR STA"'

“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. Bir süre çözüm aradıktan sonra bu yazıyı bulduk(Engin ile birlikte). 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.

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.