seeseekey.net - Invictus Deus Ex Machina

Reguläre Ausdrücke sind mächtig. Wenn man einen solchen Ausdruck entwickelt z.B. um eine Zeichenkette zu extrahieren, ist es enorm hilfreich das ganze zeitnah zu debuggen. Mit der Webseite regexr.com gibt es dafür einen Dienst mit welchem eigene reguläre Ausdrücke schnell überprüft und getestet werden können. Dabei wird der Ausdruck auf der Seite eingegeben und anschließend gegen den angegebenen Text überprüft.

regexr.com

regexr.com

Daneben bietet der Dienst eine Reihe von Zusatzfunktionalitäten, wie die von Nutzern befüllte Bibliothek von regulären Ausdrücken für bestimmte Funktionalitäten. Der Quelltext des Dienstes ist auf GitHub zu finden – er ist unter der MIT-Lizenz lizenziert und damit freie Software.

Vor einigen Wochen bin ich von o2 zu congstar gewechselt – dabei handelt es sich um einen Mobilfunkdiscounter, welcher eine hundertprozentige Tochterfirma der Deutschen Telekom ist. Damit ist man im Netz der Deutschen Telekom (D1-Netz) unterwegs, was ja vielfach als das beste Netz Deutschlands gepriesen wird – unter anderem auf Grund des Netztestes der Zeitschrift connect.

Das beste Netz?

Das beste Netz?

Während es bei o2 genau eine Stelle auf meinem Heimweg gab, bei welcher die Verbindung abbrach – ansonsten aber das Netz halbwegs benutzbar war, bekomme ich seitdem öfter als mir lieb ist ein Kein Netz auf meinem Telefon angezeigt. Das fängt bei der Arbeit an (dort findet man selbst im Freien nur selten Netz), ist öfter beim Heimweg zu sehen und selbst zu Hause gibt es Zonen ohne Netz. Eine Ursache für das Problem ist sicherlich die Nutzung von LTE seitens Congstar – es wird schlicht nicht genutzt. Congstar selbst äußert sich auf der Webseite dazu:

congstar nutzt das Netz Mobilfunknetz der Deutschen Telekom, hat aber keine eigenen LTE-Tarife im Angebot. Stattdessen bieten wir unsere günstigen Mobilfunktarife zum Telefonieren, Simsen und Surfen in HSDPA-Speed an, die je nach Surfverhalten völlig ausreichend sind.

Die eigentlich gute Netzabdeckung wird damit Makulatur. Auf der Webseite von congstar wird hauptsächlich darauf eingegangen, das LTE nicht automatisch höhere Geschwindigkeit bedeutet – aber ohne Netz nutzt eine hohe Geschwindigkeit per UMTS nichts. Das es mit congstar kein LTE gibt, hat wahrscheinlich marketingtechnische Gründe – es ist ein Abgrenzungskritierum gegenüber den Tarifen der Deutschen Telekom. Natürlich kann man direkt zur Deutschen Telekom wechseln – allerdings sind die Tarife aus monetärer Sicht nicht das gelbe vom Ei. Während man bei o2 selbst bei kleinen Tarifen LTE bekommt, sieht es bei congstar – trotz ansonsten attraktiver Angebote – auf absehbare Zeit düster aus.

Mit Unity Remote, einer App für iOS und Android ist es möglich während der Entwicklung eines Spiels mittels Unity diese auf einem entsprechenden mobilen Endgerät zu testen.

Preis: Kostenlos
Preis: Kostenlos

Die Einrichtung ist dabei einfach. Im ersten Schritt muss das mobile Endgerät mit einem USB-Kabel mit dem Rechner verbunden werden. Auf dem Endgerät muss natürlich die Unity Remote App im Vordergrund arbeiten.

Unity Remote 4 mit den Inhalten des Spieles

Unity Remote 4 mit den Inhalten des Spieles

Ist dies gegeben, kann im Unity-Editor unter Edit -> Project Settings -> Editor das entsprechende Fenster geöffnet werden. In diesem Fenster wird unter Device das passende Gerät ausgewählt und anschließend wird der Inhalt auf das mobile Endgerät gestreamt und die Eingaben werden wieder zurück zum Unity-Editor gestreamt. Damit bekommt man während der Entwicklung einen Eindruck vom Verhalten des Spieles auf den entsprechenden Endgeräten ohne viel Aufwand betreiben zu müssen.

Mit dem Tool Logrotate werden unter Linux die Logs periodisch rotiert, damit der Speicherplatz nicht irgendwann durch die Logs erschöpft wird. Beim Schreiben einer neuen Konfiguration für Logrotate kann es vorkommen, das man diese anschließend testen möchte. Dazu gibt man im Terminal:

logrotate --force /etc/logrotate.d/dpkg

ein, womit der Vorgang für die definierte Konfigurationsdatei ausgeführt wird. Eventuelle Fehler und Warnmeldungen werden dabei mit angezeigt.

Durch einen Blogbeitrag bin ich auf den kleinen Dienst mit dem Namen Distrochooser gestoßen. Mit Hilfe dieses Dienstes kann man ermitteln welche Linux-Distribution für die eigene Nutzung in Frage kommen.

Die Startseite des Distrochooser

Die Startseite des Distrochooser

Nachdem man einige Fragen beantwortet hat, bekommt man eine Liste von Distributionen angezeigt, welche zu den Antworten passen. Interessant fand ich, das andere Distribution, als die von mir präferierten Distribution vorgeschlagen wurden. Eventuell sollte man noch eine Gewichtung der einzelnen Fragen einbauen, damit bestimmte Präferenzen (wie z.B. ein bestimmtes Paketsystem) klarer definiert werden können.

Wer seine Domains mit Zertifikaten für SSL bzw. TLS ausgerüstet, um den Aufruf per HTTPS zu ermöglichen, fragt sich am Ende wie sinnvoll das ganze konfiguriert ist.

Eine Auswertung für heise.de

Eine Auswertung für heise.de

Mit dem SSL-Test von Qualys kann man das unter ssllabs.com/ssltest/ herausfinden. Nach dem Test erfolgt eine Auswertung, welche mit einer Gesamtnote bewertet wird. Anschließend finden sich in tabellarischer Form die Einzelergebnisse.

Wer testen möchte ob der IPv6 Zugang funktioniert, kann natürlich einen per IPv6 erreichbaren Webserver besuchen. Etwas ausführlicher ist das ganze auf der Webseite test-ipv6.com.

Ein erfolgreicher Test auf IPv6

Ein erfolgreicher Test auf IPv6

Der Test überprüft dabei nicht nur ob man eine IPv6-Verbindung herstellen kann, sondern zeigt auch den Weg an. So kommt es häufig vor das man eine Verbindung über 6to4 oder ähnliche Tunnelmechanismen aufbaut. Das Projekt ist freie Software, so das jeder einen eigenen IPv6 Test aufsetzen kann. Der Quelltext kann über GitHub bezogen werden. Dort firmiert das ganze unter dem Namen „The Falling-Sky Project“.

Vor ein paar Stunden schlug bei mir Gran Turismo 6 für die PlayStation 3 auf. Nachdem das Paket ausgepackt war ging es an den Start. In diesem Fall bedeutete das ein 1,2 GiB großes Update auf die Version 1.01 über sich ergehen zu lassen. Nachdem das Update heruntergeladen und installiert wurde, darf man die Lizenzbedingungen abnicken. Danach legt man seinen Fahrer an. Hierbei muss sowohl ein Vorname, als auch ein Nachname angegeben werden. Nicknames sind damit nicht ohne Weiteres möglich. Allerdings kann man als Vorname auch ein @ angeben, so das man seinen Twitter-Nutzername abbilden kann.

Gran Turismo 6

Gran Turismo 6

Nachdem der Fahrer angelegt wurde, geht es auch gleich an die erste Runde. Im Gegensatz zu Gran Turismo 5, wird man nicht zur Installation der Spieldaten aufgefordert, sondern kann gleich losfahren. Auf der Strecke wird man mittels Autopilot aus der Boxengasse geführt und kann seine erste Runde drehen. Geleitet wird das ganze dabei von einer Art Mini-Tutorial welche in die Grundlagen der Bedienung einführt. Dabei fällt auf das die Grafik im Gegensatz zum Vorgänger wesentlicher hübscher wirkt. Auch die Physik wirkt nun wesentlich realistischer, beim Vorgänger hatte man manchmal ein seltsames Gefühl was diese betraf unter anderem wenn man gegen Hindernisse stieß. Das Fahren und Driften auf dem Straßenbelag und die damit verbundene Kontrolle über das Fahrzeug wirkt hier wesentlich durchdachter und deckt sich besser mit der Alltagserfahrung.

Wenn man die erste Einführungsrunde erfolgreich bewältigt hat landet man im neuen Menü. Dieses wirkt wesentlich aufgeräumter als das der Vorgänger. Man findet sich hier sofort zurecht und sieht auf den ersten Blick welche Strecken zur Verfügung stehen und welche Strecken noch gesperrt sind.

Von den Vision GT Autos ist im Moment nur das Exemplar von Mercedes AMG verfügbar, alle anderen Autos werden in späteren Updates nachgereicht. Es handelt sich dabei um Entwürfe welche anlässlich den 15ten Jubiläums der Gran Turismo Reihe von den Herstellern angefertigt wurden. Insgesamt sind im neuen Teil um die 1200 Autos verfügbar. Alles in allem macht der neue Teil von Anfang an Spaß und kann bedingungslos für den Einstieg in die Gran Turismo Reihe empfohlen werden.

Wer einen eigenen Mailserver betreibt und testen möchte ob er sich nicht ein Open Relay (ein Mailserver den jeder zum Senden von Mails benutzen kann) erstellt hat, kann das ganze testen.

mailradar.com/openrelay/

mailradar.com/openrelay/

Ein solcher Test ist auf http://www.mailradar.com/openrelay/ zu finden. Er probiert verschiedene Methoden aus, um mit dem angegebenen Mailserver eine Mail zu versenden. Wenn dies in allen Fällen fehl schlägt, ist der Server sauber konfiguriert.

Testbasierte Entwicklung ist schon eine schöne Sache, vor allem bei größeren Projekten. Mit Hilfe sogenannter Unit-Tests kann man dabei automatisiert überprüfen ob der zu testende Softwareteil noch immer die Ergebnisse liefert, die erwartet werden. Meist ist es so, dass man in größeren Softwareprojekten etwas ändert und damit implizit an anderen Stellen Fehler einbaut, welche ohne Unit-Tests gar nicht bzw. erst später auffallen.

Für die Entwicklung unter .NET/Mono mit Hilfe des Visual Studios habe ich mich dabei für NUnit entschieden, da man dieses im Gegensatz zu MsTest auch unter Linux und Mac OS X nutzen kann. Damit sich das ganze bequem in das Visual Studio integriert nutze ich TestDriven.NET welches unter http://www.testdriven.net/ bezogen werden kann. Der persönliche Gebrauch ist dabei kostenlos.

Nach der Installation von TestDriven.NET kann man sein Visual Studio starten und mit der testbasierten Entwicklung beginnen. Dabei hat man zwei Möglichkeiten dies zu lösen. Die erste Möglichkeit ist es die Tests in ein extra Projekt zu verlagern so das diese nicht in der zu testenden Software vorkommen. Bei der zweiten Möglichkeit werden die Tests direkt im zu testenden Projekt geschrieben (z.B. in einen Namespace „Tests“).

Als Beispiel sei folgende Klasse gegeben:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Project
{
	public class FooBar
	{
		public int A { get; private set; }
		public int B { get; private set; }
		public int C { get; private set; }

		public FooBar(int a, int b, int c)
		{
			A=a;
			B=b;
			C=c;
		}
	}
}

Die Klasse „FooBar“ nimmt dabei im Konstruktor die drei Variablen a, b und c entgegen und weist sie den jeweiligen Eigenschaften der Klasse zu. Um nun zu testen ob diese Zuweisung funktioniert schreiben wir eine entsprechende Test-Unit. Dazu erstellen wir eine Klasse namens: „FooBarTest.cs“:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;

namespace Project
{
	[TestFixture]
	public class FooBarTests
	{
		[Test]
		public void TestNewFooBar()
		{
			FooBar fooBar=new FooBar(13, 24, 47);

			Assert.AreEqual(13, fooBar.A);
			Assert.AreEqual(24, fooBar.B);
			Assert.AreEqual(47, fooBar.C);
		}
	}
}

Diese Testklasse testet nun ob die Werte die im Konstruktor angegeben werden auch wirklich in den entsprechenden Eigenschaften landen. Dazu wird zuerst das NUnit Framework mittels:

using NUnit.Framework;

eingebunden. Mittels des Attributes „[TestFixture]“ sagen wir dem NUnit Framework das sich in dieser Klasse Unit-Tests befinden. Bei diesem Attribut gibt es einige Einschränkungen, so darf die Klasse z.B. nicht abstrakt sein, näheres dazu erfährt man auch in der Dokumentation.

Das Attribut „[Test]“ über der Funktion „TestNewFooBar“ teilt dem Framework mit das es sich bei dieser Funktion um einen Unit-Test handelt, welcher überprüft werden soll. Dazu legen wir in der Funktion eine Instanz von „FooBar“ an und übergeben die entsprechenden Werte an den Konstruktor.

Mittels der „Assert.AreEqual“ Funktion (weitere „Assert“ Funktionen findet man in der Dokumentation) überprüfen wir ob die Werte auch bei den Eigenschaften A, B und C angekommen sind. Wäre dies nicht der Fall so würde der Tests fehlschlagen.

Nachdem ein Test für die entsprechende Klasse geschrieben wurde, klickt man im Visual Studio mit der rechten Maustaste auf die Testklasse und wählt dort „Run Test(s)“ aus. Möchte man mehrere Tests laufen lassen so muss einen übergeordneten Ordner auswählen. Wenn alles richtig gemacht wurde, sollte man folgende Ausgabe sehen:

------ Test started: Assembly: Project.exe ------

1 passed, 0 failed, 0 skipped, took 3,07 seconds (NUnit 2.6.0).

Falls ein Fehler aufgetreten ist so sieht das ganze so aus:

------ Test started: Assembly: Project.exe ------

Test 'Project.FooBarTests.TestNewFooBar' failed: 
  Expected: 47
  But was:  0
	FooBarTests.cs(19,0): bei Project.FooBarTests.TestNewFooBar()

0 passed, 1 failed, 0 skipped, took 1,66 seconds (NUnit 2.6.0).

Findet man einen Fehler bei einem Test sollte man schauen wodurch dieser verursacht wird und ihn beheben. Wenn man nun bei der späteren Entwicklung Fehler findet (und beseitigt), welche durch keinen Tests abgedeckt sind, so sollte man gleich einen entsprechenden Test dafür schreiben, damit dieser Fehler nicht ein weiteres Mal auftreten kann.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/NUnit
http://de.wikipedia.org/wiki/XUnit