Montag, 1. Juni 2009

Spring.Testing.NUnit, ConfigLocations und die App.config

Bei dem Versuch, Integrationstests unter Zuhilfenahme von Spring's Spring.Testing.NUnit  zu schreiben stand ich vor folgendem Problem:

Spring.Testing.NUnit wurde gegen eine ältere NUnit-Version kompiliert - daher war ein Assembly-redirect in der App.config nötig (unschön, denn nun hab ich eine App.config für eine dll):
   1: <runtime>
   2:      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
   3:        <dependentAssembly>
   4:          <assemblyIdentity name="nunit.framework"
   5:                        publicKeyToken="96d09a1eb7f44a77"
   6:                        culture="neutral"/>
   7:          <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="2.4.3.0"/>
   8:        </dependentAssembly>
   9:        <dependentAssembly>
  10:          <assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e"/>
  11:          <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="2.0.0.0"/>
  12:        </dependentAssembly>
  13:      </assemblyBinding>
  14:    </runtime>

Am Rande: Wie die Zeilen 10 und 11 benutze ich für Spring die neue Common.Logging Version. Laut Dokumentation muss man nun lediglich die Integrationstestklasse von AbstractTransactionalDbProviderSpringContextTests ableiten und ConfigLocations angeben, die Spring dann zur Contextinstanziierung verwendet - und schon hat man zurückrollende Transaktionen am Ende eines jeden Tests. Meine ConfigLocations sahen zunächst so aus:
protected override string[] ConfigLocations
{
   get { return new string[]{ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath };
}
}

Diese wurde dann mit einer Exception zur Laufzeit geahndet:

failed: Spring.Objects.Factory.ObjectDefinitionStoreException : Error registering object defined in 'file [IntegrationTests\bin\Release\IntegrationTests.dll.temp.config] at line 3' : There is no parser registered for namespace ''

Die ersten Zeilen der Konfiguration sehen so aus:
   1:  <?xml version="1.0" encoding="utf-8" ?>
   2:  <configuration>
   3:    <configSections>
   4:      <sectionGroup name="common">

Die übrigen Zeilen der Konfiguration beinhalten die üblichen Spring Sections: spring, parsers, context, objects. Nach langer Suche hatte ich's dann: die ConfigLocation sieht nun so aus:
   1: protected override string[] ConfigLocations
   2: {
   3:  get { return new string[]{ "config://spring/objects" };  }
   4:  }

So hat man schlussendlich beides mit nur einer Konfigurationsdatei: AssemblyRedirection durch die App.config und normale Spring-Configsections. Glücklicherweise sind die beiden Namespaceparser DatabaseNamespaceParser und TxNamespaceParser offenbar automatisch registriert, sodass es nicht weiter ins Gewicht fällt, dass die parsers-Section nicht ausgewertet wird. Für nicht registrierte Namespace Parser bleibt schließlich noch das programmatische Registrieren in der XmlParserRegistry.

Donnerstag, 7. Mai 2009

Nebenläufigkeit und CHESS

Durch diesen Blogeintrag bin ich gerade auf ein Microsoft Research Projekt aufmerksam geworden: CHESS. Mit Hilfe von CHESS ist es möglich sonst nur schwierig zu reproduzierende Fehler zu finden. Beispielsweise können Threading Problem erkannt werden und durch CHESS erneut ausgelöst werden.

Leider ist die Projekt Seite research.microsoft.com/chess derzeit nicht erreichbar - im Google-Cache lässt sich aber dennoch einiges herausfinden und schließlich gelangt man auf Umwegen auch zur CHESS Download Seite. Ebenfalls interessant ist das offizielle CHESS Blog.

Übrigens: Fehler, die nur unter bestimmten Umständen auftreten - Beispielsweise nur während des Debuggens oder nur bei konkurrierenden Zugriffen - und obendrein schlecht zu reproduzieren sind, nennt man offenbar Heisenbugs. Wieder was gelernt und wieder mal bei der Wikipedia-Lektüre von einem Thema (Heisenbugs) auf ein völlig anderes gekommen (Heisenberg's Uncertainty principle).

Sonntag, 11. Januar 2009

Liveshopping Newsletter und RSS

Liveshopping-Shops haben sich auf die Fahne geschrieben, jeden Tag ein Produkt zu einem "unschlagbaren Preis" meist in begrenzter Stückzahl und nur 24 Stunden lang anzubieten.
Liveshopping Anbieter und Portale gibt es wie Sand am Meer, da wünscht man sich doch ein wenig mehr Übersicht. Damit man sich nicht bei jedem dieser Anbieter anmelden, den Newsletter oder RSS-Feed abonnieren muss, habe ich mir die mühe gemacht und Liveshopping RSS-Feeds gesammelt und zu einem Feed aggregiert. Den zusammengefassten Feed kann man hier abonnieren:
xfruits
Viel Erfolg bei der Schnäppchenjagd!

Update:
Da xfruits leider nicht mehr aktiv ist und somit auch der RSS Feed nicht mehr funktioniert, habe ich mich auf die Suche nach Alternativen gemacht.
EIne gute Liveshopping Seite ist diese Seite und einen RSS Feed bietet sie auch an.

Mittwoch, 7. Januar 2009

Tipps für die Xbox360

Zu Weihnachten habe ich mir eine Xbox360 gegönnt. Tolles Gerät. Nur leider etwas laut. Auch sind Spiele und Zubehör relativ teuer. Hier einige Tipps die einige Euros im Zusammenhang mit der Xbox360 sparen:

Xbox Live

Um gegen andere Spieler online anzutreten benötigt man eine Xbox Live Goldmitgliedschaft. Kauft man diese im Einzelhandel oder per Kreditkarte bei Mircosoft, kostet ein Jahr Goldmembership 60 Euro. Günstiger wird die Xbox Live Goldmitgliedschaft auf dem Marktplatz von Amazon. Dort wird die Jahresmitgliedschaft schon ab 38,26 Euro angeboten. Warum die Anbieter dort Porto nehmen, obwohl die Xbox Live-Abonnementcodes per Mail verschickt werden, bleibt mir allerdings ein Rätsel.

Wer seine Xbox360 mit dem Internet verbinden will, um beispielsweise das lohnenswerte New Xbox Experience (NXE) herunter zu laden, Demos zu spielen oder zu chatten, hat zwei Möglichkeiten: Die günste per LAN-Kabel oder man greift zum 70 Euro teuren Microsoft Xbox360 WLAN Adapter. Letzteres ist aber nicht der einzige Weg, seine Konsole kabellos ins Netz zu bringen: WLAN Brücken schaffen günstig Abhilfe. Verbunden wird die Konsole per Lan-Kabel zur WLAN Bridge, von dort aus geht's weiter per Funk. Ich benutze das SMC Networks EZ Connect G (Artikel zur Konfiguration), aber laut Herstellerangaben unterstützten auch die günstigen Geräte Edimax BR-6204Wg (20,47 Euro) und WL054MBit Access Point WAP-3000 von LevelOne (32,22 Euro) einen Brige Modus. Wer noch einen alten Router sein Eigen nennt und diesen nicht mehr benötigt, kann versuchen eine neue Firmware mit Bridge-Modus zu installieren. Voraussetzung hierfür ist, dass das Gerät kompatibel mit der DD-WRT, OpenWRT oder Sveasoft Talisman Firmware ist. Hilfreich ist in diesem Fall folgender Workshop: WLAN Bridge mit Linksys-Routern aufsetzen.

Ist die Box online, möchte man wahrscheinlich mit seinem Gegenüber kommunizieren. Microsoft bietet hierzu das "Xbox 360 - Tastatur Input-Device" (ca. 30 Euro). Günstiger geht's mit einer handelsüblich USB Tastatur, die man an einen der beiden USB Ports der Konsole anschließt - sieht zwar nicht so gut aus, reicht aber aus.

Strom sparen

Die Xbox360 ist ein Stromfresser: Je nach Modell verbraucht die Konsole im Standby bis zu 2,8 Watt, im Ruhebetrieb 155,7 Watt und unter Last bis zu 172 Watt, wie diese Tabelle zeigt. Nun hat Microsoft nachgebessert und in der neuen Xbox360 Revision mit dem Codenamen "Jasper" den Verbrauch reduziert, was schlussendlich auch dem berühmten, durch Überhitzung entstehenden, Red Ring of Death (RROD) vorbeugen soll.

Wer mit dem Gedanken spielt, eine Xbox360 zu Kaufen, sollte (soweit verfügbar) zur Jasper Revision greifen. Wie man eine Jasper schon im Laden erkennt zeigt dieser Artikel.

Auch gilt: Xbox aus? Netzteil aus der Steckdose! Das spart im Jahr bis zu 4,66 € (2,8 Watt an 365 Tagen bei 19 Cent pro kwh).

Anstelle des Charge & Play Kits (~17 Euro), welches es ermöglicht, einen Controller per Akku zu betreiben und gleichzeitig zu spielen, ist es meines Erachtens sinnvoller, das Geld in gute, handelsübliche AA Akkus und ein vernünftiges Ladegerät mit Lade- und Pflegeprogramme zu investieren (ich benutze dieses Gerät und bin sehr zufrieden damit). Selbiges gilt meiner Meinung nach auch für das Xbox Schnelladegrät - universell einsetzbare Akkus sind einfach günstiger und praktischer.

Waagerecht spielen

Die Xbox360 kann man sowohl waagerecht, als auch senkrecht aufstellen. Senkrecht sieht die Konsole zwar besser aus und nimmt weniger Platz weg, steht die Box jedoch waagerecht, bekommt die Konsole besser Luft und angeblich zerkratzen die DVDs nicht so leicht (ein weiteres Xbox360 Problem).

Wie spart das Geld? Nunja, sind die DVDs in tadellosem Zustand können diese ggf. besser verkauft (Ebay) bzw. in Zahlung gegeben werden (Gamestop). Möchte man ältere Spiele spielen lohnt sich ebenfalls ein Besuch bei Gamestop, Ebay und auf dem Amazon Marktplatz. Eine Liste mit weiteren Möglichkeiten günstig an Spiele zu gelangen gibt es auf mydealz - und seit dem der Zoll die Höchstgrenze der zollfreien Einfuhr von Geringwertigen Sendungen von 22 auf 150 Euro je Sendung angehoben hat, kann man Spiele sogar Zollfrei importieren.

Donnerstag, 11. Dezember 2008

IronPython 2.0 auf Codeplex

Gerade heute habe ich mit einem Kollegen über Python bzw. Microsoft's IronPython gesprochen. Welch Zufall, dass ich just auf diese DNK Story gestoßen bin: IronPython 2.0 wurde am 10.12.08 auf der offiziellen Codeplex Seite released.

Jetzt brauche ich nur genügend Zeit um die Sprache auszuprobieren - aber demnächst gibt's ja Urlaub.

Sonntag, 7. Dezember 2008

Liste, Collection und Dictionary

Das .Net Framework bringt viele Listen, Collections und Dictionaries mit. Wem diese Container nicht reichen und auch spezielle Listen nicht helfen, sollte einen Blick auf die C5 Generic Collection Library und auf die Wintellect's Power Collections for .NET werfen, bevor er mit Hilfe von System.Collections.ObjectModel.KeyedCollection eine eigene generische Implementierung vorantreibt.

Mittwoch, 3. Dezember 2008

Office 2007 - wo sind die Menüs?

Seit etwa einem halben Jahr bin ich stolzer Besitzer des Office 2007 Paketes. Sieht auch alles toll aus - nur habe ich echt Probleme die alten Menüs und Einstellungen wiederzufinden. Offenbar hat Microsoft auch davon erfahren und bietet ein Gegenmittel in Form von interaktiven Office 2003 zu Office 2007 Demos an. Damit ich die Links nicht immer wieder nachschlagen muss, schreib ich sie am besten auf:

Wo finde ich...