arşiv

yazılar buna göre etiketlendi; ‘XSLT’

.NET’te Bellek Sızıntısı (Memory Leak)

Pazar, 15 Şub 2009

Bundan önceki birkaç yazımda projede XSLT kodu yazdığımı ve IODD dosyalarını EDD kodlarına çevirdiğimi yazmıştım. Bir süre önce arkadaş projenin hafıza kullanımı incelerken çevirme tarafında bir sızıntı olduğunu söyledi. En sonunda cuma günü baktığımda yarım gün uğraşının sonucunda sorunun aslında bende değil de .NET’te olduğunu öğrendim. Özellikle XslCompiledTransform sınıfını Debug parametresi true ile oluşturduğumuz Debug buildi her çevirmenin sonunda yaklaşık 30MB’ın çöpe gitmesine sebep oluyor. İyi ki betik (script) kullanmıyorum, yoksa iyice uçacakmış hafıza. Üzülsem mi sevinsem mi bilemedim tabii. Çözüm olarak bu sınıfın Load metodunu mümkün olduğu kadar az çağırın, aynı çevrim dosyasını devamlı hafızaya yüklemekten kaçının, eskisini kullanın; bu sınıfın oluşturduğu geçici dosyaları elle silin gibi öneriler var. En kökten çözüm de çevrimi yapan kodu asıl programdan daha farklı bir AppDomain’den çalıştırmak imiş, bu sayede çevrim bittiğinde arka planda onu çalıştıran uygulama kapandığı için boşa tüketilen kaynaklar temizlenebiliyormuş.  Microsoft’u bu yaklaşımından ve aydınlatıcı önerilerinden dolayı ötürü tebrik ediyorum…

Konu hakkında MSDN’de ilgili sınıfın constructoru altında Community Content’te bir açıklama yapılmış durumda. Bununla yetinmeyenler için Google her zaman elinizin altında…

Bilgisayar , , , ,

XML Araçları

Cuma, 12 Ara 2008

Projedeki şu anki işim gereği XML ve XML teknolojileri (XSD, XSLT, XPath) ile bu aralar çok haşır neşirim. Şirkette projeyi Visual Studio 2005’te geliştiriyoruz. Ancak maalesef VS’nin bu sürümünde bu teknolojilere verilen destek en azından Microsoft standardı için sınıfta kalıyor. XSD şemalarının görsel modundan pek bir şey anlamak mümkün değil, herhangi bir XML dokümanı üzerinde dogrudan XPath sorgusu yapmak için Debug moduna geçilmesi gerekiyor, XPath sorgularını yazabilmek için herhangi bir araç sunulmuyor. Örnekler çoğaltılabilir, ilk olarak aklıma gelenler bunlar.

XML denince bu işin kralının Altova XML Spy olduğu söyleniliyor. Kendisi biraz(!) pahalı olduğu için şirketin lisans alacağını sanmıyorum. Zaten azından şimdilik durumum o kadar umutsuz değil. Açıkçası 30 günlük deneme sürümünü de denemek istemiyorum çünkü alışıp başka programla çalışmak istemeyeceğimden korkuyorum. Onun yerine VS’nin verdiği destek ve ücretsiz yardımcı programlarla işimi hallediyorum.

Asıl amaç aslında IO-Link cihaz tanımlama dosyalarını (IODD), EDD cihaz tanımlama dosyalarına çevirebilmek. Bunun için bir dizi XSLT dosyası kullanılıyor. Yazılan XSLT’ye VS’de bir girdi dosyası verdiğinizde sonuç dosyasını gösteriyor, bu sırada normal bir .NET dilinde olduğu gibi debug özelliklerinden yararlanabiliyorsunuz. Ancak zaman zaman XSLT dosyalarında kullanmak için XPath sorgularına ihtiyacım oluyor. VS’nin bu konudaki eksiğini SketchPath ile tamamlıyorum. Sitelerindeki video, kullanımı basitçe gösteriyor; bu sayede başka herhangi bir yardıma gerek kalmadan programı rahatça kullanabiliyorsunuz. Arada da IODD Standartlarına bakmam gerekiyor. Standartların bulunduğu XSD şemalarını da Liquid XML Studio adındaki başka bir programı kullanarak görüntülüyorum. VS’nin aksine şemalara bakınca neyin ne olduğunu rahatça anlamak mümkün.

İnsan bu işlerin tamamını birlikte gerçekleştiren ücretsiz bir yazılım ne güzel olurdu diye düşünmeden edemiyor. Bir de özgür yazılım olursa tadından yenmez…

Bilgisayar , , , , , , ,