seeseekey.net - Invictus Deus Ex Machina

Wer eine Rest-API testen möchte, der kann dies natürlich im Browser tun. Einfacher funktioniert das ganze mittels RESTClient. Dabei handelt es sich eine freie Anwendung um die REST-API aufzurufen und anschließend das Ergebnis auszuwerten.

RESTClient

Dabei hat man volle Kontrolle über die gesendeten Parameter, die HTTP Methode, den Header und einige andere Einstellungen. Nach einem ausgeführten Request können die Ergebnisse der Anfrage eingesehen werden. RESTClient ist unter der Apache Lizenz lizenziert. Neben der offiziellen Seite, gibt es den Download auf Foss Hub. Der Quelltext (sowie der Bugtracker) ist auf GitHub zu finden. Da RESTClient in Java entwickelt wurde ist es unter Linux, Mac OS X und Windows lauffähig.

Der muCommander ist ein freier 2-Panel Dateimanager, welcher in Java geschrieben ist. Bedingt dadurch läuft er unter Linux, Mac OS X und Windows. Angeblich soll es Menschen geben, die ohne einen solchen Dateimanager vom Typ „Norton Commander“ effektiv arbeiten können, aber das halte ich für ein Gerücht. Zu finden ist muCommander dabei auf der offiziellen Seite unter mucommander.com. Lizenziert ist er unter der GPL3 — der Quelltext kann über SVN bezogen werden.

muCommander unter Mac OS X

Was sich beim muCommander als etwas schwieriger erweist, ist es den Standardeditor zu ändern. Wenn man sich in den Einstellungen umschaut, wird man keine Option finden, welche dies ermöglicht. Möchte man diese Einstellung ändern, so muss die „commands.xml“-Datei bearbeitet werden. Je nach System ist diese dabei in einem anderen Pfad zu finden:

Linux: ~/.mucommander
Mac OS X: ~/Library/Preferences/muCommander 
Windows: ~/.mucommander

Unter Umständen kann es passieren, das noch keine „commands.xml“ Datei existiert. Die Standardeinstellungen für die jeweilige Datei (welche sich je nach Betriebssystem unterscheiden) ist dabei auf der entsprechenden Wikiseite zu finden. Für Mac OS X würde die Definition von TextMate als Standardeditor dabei so aussehen:

<?xml version="1.0" encoding="UTF-8"?>
<commands>
    <command alias="edit"    type="system" value="open -a Textmate $f"/>
    <command alias="open"    type="system" value="open $f"/>
    <command alias="openURL" type="system" value="open $f"/>
    <command alias="openFM"  type="system" value="open -a Finder $f" display="Finder"/>
</commands>

Da die Einstellungen beim Start von muCommander eingelesen werden, muss dieser einmal neugestartet werden, damit Änderungen in der „commands.xml“ wirksam werden.

Bei EncFS handelt es sich um eine Implementierung eines Verschlüsslungssystems für bestehende Dateisysteme. Bei diesem System wird jede Datei für sich verschlüsselt und das darunter liegende Dateisystem genutzt. Neben der Originalimplementierung von EncFS gibt es auch Portierungen in andere Programmiersprachen. Mit diesen Portierungen können EncFS verschlüsselte Daten auch unter Java und .NET ausgelesen werden.

Die Javavariante von EncFS trägt dabei den Namen „encfs-java“ und ist auf GitHub zu finden. Neben dieser gibt es auch eine Variante für .NET welche in C# geschrieben ist und auf BitBucket zu finden ist. Ursprünglich handelt es sich bei „encfs-dotnet“ um eine Portierung von „encfs-java“. Mittlerweile wurde diese Implementierung aber komplett neu geschrieben. Wie bei der Originalimplementierung, handelt es sich auch bei den Portierungen um freie Software. Die Java-Portierung steht dabei unter der GPL, während die .NET Implementierung unter der LGPG steht, was deren Verwendung flexibler gestaltet.

Weitere Informationen gibt es unter:
https://de.wikipedia.org/wiki/EncFS

Beim Spielen von Starcraft 2 wird man irgendwann den Begriff „Build Order“ oder Baureihenfolge gehört haben. Dabei handelt es sich um eine je nach Spielrasse verwendete feste Reihenfolge für den initialen Aufbau der Basis. Für die Standardvorgehensweisen gibt es dabei durchaus einige erprobte Strategien.

Interessant wird es wenn man eine eigene Build Order entwickeln möchte. Das kann man natürlich von Hand tun oder spezialisierte Tools dafür benutzen. Eine solche Build Order könnte dann z.B. so aussehen:

0:02,00: 50M 0G 3L 6/ 10S — Build Drone
0:13,63: 50M 0G 2L 7/ 10S — Build Drone
0:24,70: 50M 0G 2L 8/ 10S — Build Drone
0:29,75: 25M 0G 1L 9/ 10S — Build Extractor
1:07,65: 200M 0G 3L 8/ 10S — Build Spawning Pool
1:07,65: 0M 0G 3L 7/ 10S — Move Three Drones To Gas
1:25,56: 50M 26G 3L 7/ 10S — Build Drone
2:12,65: 160M 116G 3L 8/ 10S — Research Metabolic Boost
2:12,65: 60M 16G 3L 8/ 10S — Build Extractor
2:12,65: 35M 16G 3L 7/ 10S — Build Extractor
2:12,65: 10M 16G 3L 6/ 10S — Cancel Extractor
2:12,65: 29M 16G 3L 7/ 10S — Build Extractor
2:12,65: 4M 16G 3L 6/ 10S — Cancel Extractor
2:12,65: 23M 16G 3L 7/ 10S — Cancel Extractor
2:12,65: 42M 16G 3L 8/ 10S — Build Extractor
2:12,65: 17M 16G 3L 7/ 10S — Cancel Extractor
2:17,58: 50M 18G 3L 8/ 10S — Build Zergling
2:37,78: 100M 31G 3L 9/ 10S — Build Overlord
2:47,88: 50M 37G 2L 9/ 10S — Build Zergling
3:02,78: 74M 46G 2L 10/ 18S — Build Zergling
3:08,08: 50M 50G 2L 11/ 18S — Build Zergling
3:18,18: 50M 56G 1L 12/ 18S — Build Zergling
3:28,28: 50M 63G 1L 13/ 18S — Build Zergling
3:38,38: 50M 69G 1L 14/ 18S — Build Zergling

Waypoint 1 satisfied:
4:02,65: 120M 84G 1L 15/ 18S
Income: 297M 38G
Buildings: 1 Hatchery 1 Extractor 1 Spawning Pool
Units: 8 Drone 2 Overlord 14 Zergling
Research: Metabolic Boost

Bei jedem diesen Tools gibt man das Ziel an (z.B. 12 Zerglinge) und diese probieren das ganze so lange durch bis eine möglichst optimale Lösung gefunden wurde. Speziell für Zerg gibt es dabei das auf Java basierende Tool „Evolution Chamber“ welches unter http://code.google.com/p/evolutionchamber/ zu finden ist.

Starcraft Fusion beim Erstellen einer Build Order

Für Windows gibt es das Tool „Starcraft Fusion“. Im Gegensatz zu „Evolution Chamber“ können mit „Starcraft Fusion“ auch Build Order für die Terraner und die Protos angelegt werden. Bei der Benutzung sollte man immer beachten, das jede Bedingung die man definiert sich auf die Rechenzeit auswirkt. Bei komplexen Zusammenstellungen kann eine solche Berechnung schon mal einige Wochen dauern, während es sich bei ein paar Zerglingen nur um einige Minuten handelt.

Das schöne an zentralen Sammlungen ist das man sie relativ einfach auswerten kann. In diesem Fall geht es um die Auswertung der GitHub Repositories. Wie der Name „Popular Convention“ andeutet geht es darum aus den Quelltexten bestimmte Informationen über bevorzugte Konventionen wie z.B. Leerzeichen vs. Tabs zu extrahieren.

Popular Convention und Scala

Das Ergebnis kann man sich auf der Webseite http://sideeffect.kr/popularconvention/ für die Sprachen Javascript, Java, Python und Scala anschauen. Die Software zur Auswertung ist dabei freie Software und steht unter der MIT Lizenz und kann unter https://github.com/outsideris/popularconvention bezogen werden.

Sich einen Roboter bauen und diese gegen andere Roboter kämpfen zu lassen, kann relativ schnell ins Geld und Material gehen. Einfacher wird es dabei mit Robocode, wobei es sich um eine Softwareumgebung handelt, in welcher Roboter programmiert werden können. Anschließend treten diese in einer virtuellen Arena gegeneinander an.

Die Bots im Kampf gegeneinander

Geschrieben werden die Roboter in Java. Dabei finden sich eine Menge Beispiele in der Robocode Installation. Bei Robocode selbst handelt es sich um Open Source Software welche unter der Eclipse Public License steht. Die offizielle Webseite ist unter http://robocode.sourceforge.net/ zu finden. Lauffähig ist das ganze unter Linux, Mac OS X und Windows.

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

Da möchte man nichtsahnend Minecraft starten und bekommt nur folgende Fehlermeldung an den Kopf geworfen:

Exception in thread "main" java.awt.HeadlessException
        at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:173)
        at java.awt.Window.(Window.java:546)
        at java.awt.Frame.(Frame.java:419)
        at net.minecraft.LauncherFrame.(LauncherFrame.java:20)
        at net.minecraft.LauncherFrame.main(LauncherFrame.java:167)
        at net.minecraft.MinecraftLauncher.main(MinecraftLauncher.java:13)

In diesem Fall hilft ein beherztes:

apt-get install openjdk-6-jdk

auf der Konsole. Nach der Installation sollte Minecraft ohne weitere Probleme starten.

Wer versucht hat nach dem Update auf „Mountian Lion“ eine neue Java Applikation zu installieren, wird wahrscheinlich auf eine Fehlermeldung nach dem Schema

Applikation XYZ“ ist beschädigt und kann nicht geöffnet werden. Es empfiehlt sich, das Image auszuwerfen.

Ursache für dieses Problem ist Gatekeeper. Während man andere Applikationen problemlos per Kontextmenü im Finder öffnen kann, so das diese nach einer Sicherheitsabfrage zugelassen sind, funktioniert dies bei Java Applikationen nicht mehr.

OS X meldet das das Paket defekt ist

Um die Java Applikationen trotzdem zur Ausführung zu bewegen, muss für den ersten Start Gatekeeper auf „Keine Einschränkung“ gestellt werden. Anschließend kann die Einstellung wieder auf den ursprünglichen Wert zurückgestellt werden. Besagte Java Applikation läuft nun auch mit aktivierten Gatekeeper.

Wer ein Spiel für ein Mobilgerät schreiben möchte hat das Problem das es eine ganze Menge dieser Systeme gibt. Die bekannteren sind sicherlich Android und iOS. Möchte man für diese Systeme ein Spiel schreiben, so wäre eine Abstraktionsschicht eine feine Sache. Eine solche bietet Google mit „PlayN“ unter der Apache Lizenz an. Mit diesem Framework wurde unter anderem die Google Chrome Version von Angry Birds geschrieben. Aktuell werden folgende Plattformen unterstützt:

  • Java
  • HTML5
  • Android
  • iOS

Auch Flash wird unterstützt, wobei das Backend dafür im Moment einen Maintainer sucht und deshalb in dieser Liste nicht auftaucht. Herunterladen kann man sich PlayN unter http://code.google.com/p/playn/.

Weitere Informationen gibt es unter:
http://code.google.com/p/playn/wiki/PlatformStatus
http://www.schockwellenreiter.de/blog/2012/03/12/playn/

Manchmal ist es doch sehr praktisch eine APK Datei zu dekompilieren, z.B. um ein wenig Reverse Engineering zu betreiben. Nachdem wir die gewünschte APK auf der Festplatte haben laden wir uns dex2jar unter http://code.google.com/p/dex2jar herunter. Mit diesem Tool wandeln wir den Dalvik Intermediate Code in eine JAR (sprich Java) Datei um. Wir wenden dex2jar mittels

dex2jar.sh test.apk

auf unsere APK an. Heraus kommt eine JAR Datei welche wir mit der JD-GUI (zu finden unter http://java.decompiler.free.fr/?q=jdgui) öffnen und uns so anschauen können.

Weitere Informationen gibt es unter:
http://stackoverflow.com/questions/3122635/android-decompile-apk
http://stackoverflow.com/questions/1249973/decompiling-dex-into-java-sourcecode