Date Pattern unter .NET

Unter .NET gibt es einige Eigenschaften, welche mit Formatierungsstrings gefüttert werden, so z.B. die Eigenschaft:

picker.CustomFormat="dd/MM/yyyy HH:mm:ss";

Die Herangehensweise den Formatierungsstring von Hand einzutragen ist dabei gefährlich – spätestens wenn es an die Lokalisierung der Anwendung geht. Glücklicherweise kann man diese Date Pattern anhand der aktuellen Kultureinstellung (CurrentCulture) ermitteln:

Application.CurrentCulture.DateTimeFormat.LongDatePattern
Application.CurrentCulture.DateTimeFormat.LongTimePattern
Application.CurrentCulture.DateTimeFormat.ShortDatePattern
Application.CurrentCulture.DateTimeFormat.ShortTimePattern

Neben den hier gezeigten Pattern, gibt es noch eine Reihe weiterer wie z.B. MonthDayPattern. Obige Definition würde nun wie folgt aussehen:

picker.CustomFormat=String.Format("{0} {1}", Application.CurrentCulture.DateTimeFormat.ShortDatePattern, Application.CurrentCulture.DateTimeFormat.LongTimePattern);

Freie ePub Bibliotheken für C#

Vor ein paar Tagen war ich auf der Suche nach einer .NET Bibliothek zum Lesen und Schreiben von ePub Dateien. Bei ePub handelt es sich um einen offenen Standard für eBooks. Möchte man ePub-Dateien nur lesen, so dürfte sich die Bibliothek ePubReader anbieten, welche auf CodePlex zu finden ist.

epubreader.codeplex.com

epubreader.codeplex.com

Ist man auch auf das Schreiben von ePub-Dateien angewiesen, gibt es die Bibliothek DotNetEpub. An zweiter Stelle wäre die Bibliothek epubsharp.net zu nennen, allerdings existiert zu dieser Bibliothek kein Quelltext.

Private Variablen und Eigenschaften mittels NUnit testen

Manchmal möchte man private Variablen und Eigenschaften einer Klasse mittels NUnit testen. Im Normalfall lautet die Antwort auf diese Fragestellung – Nein. Stattdessen soll nur das öffentliche Interface getestet werden. Möchte bzw. muss man trotzdem ein privates Mitglied einer Klasse testen, so muss man sich der Reflection bedienen. Das könnte dann so aussehen:

string[] lines=(string[])typeof(MyClass).GetField("Lines",BindingFlags.NonPublic|BindingFlags.Static).GetValue(null);

In diesem Fall wird sich das statische String Array Lines aus der Klasse MyClass geholt. Je nachdem, wie man die entsprechenden BindingFlags einstellt, ist es auch möglich Instanzvariablen zu ermitteln.

Freie Software für interaktive Whiteboards

Beginnend mit dem Jahre 2003 wurde an der Universität Lausanne in der Schweiz eine Software für interaktive Whiteboards entwickelt und eingesetzt. Diese Software trug dabei den Namen Uniboard. Auf Betreiben der gemeinnützigen Interessenvereinigung für Digitale Bildung in Afrika wurden alle Rechte dieser Software von der französischen Regierung gekauft.

open-sankore.org

open-sankore.org

Seitdem wird die Software unter dem Namen Open-Sankoré weiterentwickelt. Es handelt sich dabei um die erste freie Software für interaktive Whiteboards. Technisch basiert die Software dabei auf C++, QT und HTML5 und ist unter der GPL in der Version 3 lizenziert. Open-Sankoré ist für Linux, Mac OS X und Windows verfügbar. Bezogen werden kann die Software auf der offiziellen Seite unter open-sankore.org.

Pattern für asynchronen Timer

In den letzten Tagen habe ich nach einem Pattern für C#/.NET gesucht welches elegant einen Timer zur Verfügung stellt. Gestoßen bin ich dabei auf ein Pattern, welches sich die neuen Keywörter async und await aus den aktuellen C#-Versionen zu Nutze macht. Mit Hilfe dieser Schlüsselwörter lassen sich nebenläufige Funktionen ohne größeren Overhead entwickeln. Die Timer-Funktion sieht dabei so aus:

async void StartPollingTimer()
{
    while(true)
    {
        await Task.Delay(2000);

        //Do something
    }
}

Aufgerufen wird das ganze dabei einfach mittels:

StartPollingTimer();

Der Entwickler muss sich dabei nicht mehr um die Thread-/Task-Verwaltung kümmern und kann damit auf die Schnelle einen Timer implementieren, welcher asynchron läuft.