WriteMonkey

Vor einiger Zeit stellte ich die Software FocusWriter (als Alternative zum iaWriter) für das ablenkungsfreie Schreiben vor. Daneben gibt es weitere Alternativen – einer dieser Alternativen ist WriteMonkey. Im Gegensatz zum FocusWriter wirkt WriteMonkey aufgeräumter, was der Schreiberfahrung zu gute kommt. Außerdem unterstützt WriteMonkey Markdown und ermöglicht so das Schreiben von strukturierten Texten.

WriteMonkey im Einsatz

WriteMonkey im Einsatz

Im Gegensatz zum FocusWriter steht der WriteMonkey leider nicht unter einer freien Softwarelizenz; sondern wird als Freeware vertrieben. Zu finden ist WriteMonkey auf der offiziellen Seite unter writemonkey.com.

Wordwide Telescope

Wer den Weltraum betrachten möchte, kann sich ein Teleskop kaufen – wem das zu kostenintensiv ist, der kann es mit dem Wordwide Telescope von Microsoft probieren. Dabei handelt es sich um eine Windows- und Webanwendung, in welcher unterschiedliche Teleskopaufnahmen miteinander kombiniert und welche wie durch ein virtuelles Teleskop betrachtet werden können.

worldwidetelescope.org

worldwidetelescope.org

Microsoft hat die Anwendung unter der MIT-Lizenz freigegeben, damit ist das Wordwide Telescope freie Software. Der Quelltext für das ist auf GitHub zu finden – die offizielle Seite des Projektes unter worldwidetelescope.org.

Quellcodeformatierung unter Xamarin Studio

Unter Xamarin Studio ist es wie in vielen IDEs möglich den Quelltext automatisch zu formatieren. Allerdings unterscheidet sich das Konzept etwas, von anderen C#/.NET IDEs wie dem Visual Studio. Xamarin Studio kennt hierbei einmal Benutzerrichtlinien und normale Einstellungen. In den Einstellungen kann die Codeformatierung für den entsprechenden Nutzer angelegt und modifiziert werden.

Die Einstellungen im Xamarin-Studio

Die Einstellungen im Xamarin Studio

Möchte man bestimmte Einstellungen allerdings auf mehreren Rechnern nutzen, so sollte man lieber eine Benutzerrichtlinie anlegen. Wenn die passenden Einstellungen in der Benutzerrichtlinie definiert sind, können sie auch als Datei exportiert und auf dem anderen Rechner importiert werden. Damit die Nutzerrichtlinie Wirkung zeigt, muss sie in den Einstellungen ausgewählt werden – damit werden die aktuellen Einstellungen mit denen der Richtlinie überschrieben. Ändert man die Richtlinie muss dieser Prozess wiederholt werden. Nachdem die Einstellungen angepasst wurden, kann die geöffnete Datei mittels Ctrl + I neu formatiert werden.

Doxygen Dokumentation für C# unter Mac OS X erzeugen

Ein Quelltext wird während der Entwicklung gewöhnlich kommentiert. Unter C# bzw. .NET gibt es dafür Kommentare nach einem bestimmen Schema. Über einer Methode könnte ein solcher Kommentar z.B. aussehen:

/// <summary>
/// Distance between a and b.
/// </summary>
/// <param name="a">The first vector.</param>
/// <param name="b">The second vector.</param>

Diese Kommentare kann die freie Software Doxygen auswerten und daraus eine Dokumentation erzeugen. Im Gegensatz zu anderen Lösungen wie Sandcastle ist Doxygen betriebsystemübergreifend verfügbar und kann somit – wie in diesem Beispiel – unter Mac OS X genutzt werden. Im ersten Schritt sollte Doxygen installiert werden. Unter Mac OS X kann dies einfach über MacPorts geschehen:

sudo port install doxygen

Nachdem Doxygen installiert ist, sucht man im Terminal den Ordner des Entwicklungsprojektes heraus und gibt dort ein:

doxygen -g projektname.doxygen

Damit wird eine Standard-Doxygen-Konfiguration erzeugt. In dieser Datei werden nun ein paar Änderungen vorgenommen:

PROJECT_NAME = "Testprojekt"
PROJECT_NUMBER = "Release Candidate 1"
OUTPUT_DIRECTORY = docs
RECURSIVE  = YES

Über den Aufruf:

doxygen projektname.doxygen

kann nun die HTML-Dokumentation des Quelltextes erzeugt erzeugt werden und diese anschließend im Browser genutzt werden.

Methode nach Notwendigkeit unter .NET invoken

Manchmal ruft man eine Methode unter .NET aus einem anderen Thread heraus auf. Je nachdem wie die Methode aufgerufen wird, kann es notwendig sein die Methode über Invoke aufzurufen. Mit folgendem Pattern geschieht dies nach Notwendigkeit automatisch:

private void MakeSomeFoo()
{
	MethodInvoker method=delegate
	{
		//Do some foo
		DoSomeFoo();
	};

	if(InvokeRequired) BeginInvoke(method);
	else method.Invoke();
}

Im MethodInvoker-Delegate ist der eigentliche Quellcode der Funktion zu finden. Dieser wird je nach Notwendigkeit im korrekten Thread aufgerufen.