Big Lazy Robot

Oktober 13th, 2013

Per Zufall drüber gestolpert.

Hier klicken, um den Inhalt von www.youtube.com anzuzeigen

Planetary Annihilation

November 28th, 2012

Es kommt mir wie gestern vor .. ich sitze mit meinem Bruder am Computer und schaue mir einen Trailer für das Spiel Supreme Commander an. Das war 2006 und von diesem Zeitpunkt an war ich begeistert für dieses Spiel. Als es dann im Februar 2007 erscheint, wird es gleich am ersten Tag gekauft. Noch heute spiele ich die Erweiterung “Forged Alliance” recht häuftig. Supreme Commander war das erste Spiel, dass mich über einen so langen Zeitraum gefesselt hat.

Gestern bin ich dann mehr oder weniger zufällig über “Planetary Annihilation” gestolpert, ein Spiel dessen Entwicklung erst vor kurzem gestartet ist und vermutlich noch ein paar Jahre in Anspruch nehmen wird. Aber schon der Trailers hat mich richtig fasziniert und ich wollte sofort losspielen. Leider geht das nicht 🙁

Hier klicken, um den Inhalt von YouTube anzuzeigen.
Erfahre mehr in der Datenschutzerklärung von YouTube.

Man hatte das Spiel mit dem Ziel von 900,000 Dollar auf Kickstarter.com eingestellt und schlussendlich mit 2,2 Million ausreichend Zuspruch gefunden. Bei Planetary Annihilation sind wieder einige Leute an Board, die schon an Spielen wie Total Annihilation (1997) oder Supreme Commander (2007) mitgearbeitet haben. Ich bin sehr gespannt was für ein Spiel am Ende wirklich entstehen wird. Ich werde es weiter verfolgen…

Hier noch der Trailer von Supreme Commander von 2006, der mich damals wirklich zum Staunen gebracht hat.

Hier klicken, um den Inhalt von YouTube anzuzeigen.
Erfahre mehr in der Datenschutzerklärung von YouTube.

Links
Planetary Annihilation – Offical Website
Planetary Annihilation on Kickstarter.com

 

Explorer’s unter Windows 8

August 30th, 2012

Heute soll es mal um einige Änderungen des Windows-, Internet- und Spiele-Explorer in Windows 8 gehen.

Der Windows Explorer

… wurde nun mit dem sogenannte Ribbon-Control versehen. Endlich, wie ich finde. Das wird zwar für viele eine große Umstellung bedeuten, meiner Meinung nach lohnt sich die Mühe jedoch, da man letzten Endes damit schneller und direkter arbeiten kann.

Im oberen Bereich ist das Ribbon zu sehen, das ich jedoch mittels Doppelklick (auf einen der Tabs z.B. Start) einklappe. Damit wird weniger Platz verschwendet. Über das Datei-Menü oben links kann man zu den häufig besuchten oder fest angepinnten Ordnern wechseln. Auch kann man hierüber im aktuellen Ordner die Eingabeaufforderung öffnen.

In der Titelleiste gibt es noch den sogenannten “Schnellzugriff” (oben links). Dort kann man einige Befehl direkt erreichen, z.B. für das Erstellen eines neuen Ordners. Damit muss man trotz eingeklapptem Ribbon nicht unnötig Klicken, um einen Ordner anzulegen. (… oder man verwendet gleich Strg+Shift+N).

Das Win+X Menü

Microsoft hat mit Windows 8 das Startmenü in seiner herkömmlichen Version entfernt. Es gibt keinen Start-Button mehr links in der Taskleiste. Damit man aber trotzdem schnell auf gewisse System-Funktionen zugreifen kann, gibt es ein neues Menü. Wenn man die Maus in die untere linke Ecke bewegt, erscheint die Schaltfläche um mittels Klick in das neue Startmenü zu gelangen.

Wenn man nun hier aber die rechte Maustaste drückt, wird einem ein ganz spezielles Menü mit einigen wichtigen Systemfunktionen angeboten. Dieses Menü ist auch über die Tastenkombination Win+X erreichbar. Im Internet spricht man daher auch vom WinX-Menü.

Der Internet-Explorer

… kommt eigentlich in zwei Darstellungs-Modi daher. Einmal der herkömmliche Desktop-Modus und der neue Modern-UI-Modus. Im neuen Startmenü erreicht man standardmäßig die Modern-UI-Variante anhand einer farblosen Kachel.

Und auf dem Desktop kann man über den angepinnten Internet-Explorer die herkömmliche Variante starten.

Doch wenn ich den an die Taskleiste (des Desktops) angepinnten Internet-Explorer entferne, kann ich dann aus dem neuen Startmenü die Desktop-Variante noch starten? Ja, das geht. Dafür hat man in den Internet Optionen eine extra Einstellung hinzugefügt.

Mit dem kleinen Häkchen kann man steuern, ob die IE-Kachel im Startmenü die Desktop-Version startet. Standardmäßig ist die Option deaktiviert, d.h. man startet die Modern-UI-Variante. Nachdem man den Haken gesetzt hat, öffnet sich der Internet-Explorer immer auf dem Desktop.

Übrigens, sobald man einen anderen Browser installiert und diesen als Standard-Browser definiert hat, wird die eben gezeigte Option in den Internetoptionen deaktiviert. Ab diesem Zeitpunkt kann man den Internet-Explorer nur noch in der Desktop-Version starten. Microsoft will hier anscheinend sicherstellen, dass man in der Modern-UI-Umgebung immer nur einen Browser nutzen kann.

Der Spiele-Explorer

… wurde zu meiner Verwunderung aus Windows 8 entfernt. In einem entsprechenden Blog-Artikel hat Microsoft die Änderungen für Entwickler kurz umrissen und auch nochmal am 15.August.2012 für die Release-Version überarbeitet. Nach den dortigen Informationen soll der Spiele-Explorer nicht mehr sichtbar sein. Nunja, vielleicht nicht direkt. Aber man kann ihn noch immer anzeigen lassen. Das ist ja nur logisch, denn die Shell-Objekt-IDs muss es ja noch immer gehen. Wie das geht? Sobald man ein Spiel installiert hat, welches sich im Spiele-Explorer registriert, gibt es im Apps-Menü (Win+Q) einen Spiele-Bereich. Mit der rechten Maustaste kann man das Aktionsmenü öffnen. Dort wählt man “Speicherort öffnen”.

Wie man aber im Bild sieht, hat man hier nicht mal die notwendigen Übersetzungen mitgeliefert (was aber nicht wirklich ein Problem wäre).

Schade ist, dass andere Spiele (die man zum Beispiel über den Windows-Store installiert) hier nicht angezeigt werden. (Derartige — auf die Modern-UI ausgelegte Spiele — lassen sich auch nicht an die Desktop-Taskleiste anpinnen.) Damit ist das unbrauchbar. Eine zentrale Zugriffmöglichkeit auf alle installierten Spiele fällt damit einfach mal weg. Diesen Schritt verstehe ich nicht ganz und ich werde das Gefühl nicht los, dass man an dieser Stelle nicht fertig geworden ist.

Windows 8 nach zwei Wochen

Ehrlich gesagt habe ich mir die Umstellung schwieriger vorgestellt. Wer bereits mit Windows 7 arbeitet, kommt recht schnell mit Windows 8 zurecht. Wer jedoch von Windows XP wechselt, wird erstmal überfordert sein. Am Anfang habe ich hin und wieder gedacht, ich hätte keinen Grafiktreiber installiert, da die Fenster keine Transparenzeffekte aufweisen. Doch schon nach einer Woche hat man sich daran problemlos gewöhnt und vermisst es gar nicht mehr. Auf das neue Startmenü bin ich heute bewusst noch nicht weiter eingegangen. Auch die vorinstallierten Modern-UI-Apps muss ich noch genauer kennenlernen. Jedoch habe ich festgestellt, dass ich unter Windows 8 noch mehr Tastenkombinationen nutze als vorher. Sind diese Funktionen per Maus so umständlich zu erreichen, dass man lieber auf die Tastatur zurückgreift? Oder hat man einfach noch nicht die korrekt Handhabung raus? Das soll ein späterer Artikel zeigen.

Auf zu neuen Windows

August 15th, 2012

Seit heute (15. August 2012) ist Windows 8, Visual Studio 2012 und .NET Framework 4.5 für MSDN-Abonnenten verfügbar. Also war es Zeit mein parallel installiertes OpenSuse gegen Windows 8 zu tauschen.

Die Installation verlieft völlig problemlos. Ein wenig Erfahrung hatte ich bereits durch die Installation der Preview-Version in einer VM gesammelt. Wie wahrscheinlich die meisten Nutzer, habe ich eine Neuinstallation durchgeführt, um gleich einmal die Chance zu nutzen, alten Ballast loszuwerden. Die benötigten Anwendungen werde ich in den nächsten Tagen noch nachinstallieren. Auf den ersten Blick funktioniert alles wie gewohnt und man kann gleich loslegen. Natürlich ist vieles anders und noch gewöhnungsbedürftig. In der nächsten Zeit muss Windows 8 beweisen, dass man genauso schnell arbeiten kann wie unter Windows 7.

Wenn man so die Meinungen im Internet ließt, dann lehnen viele Leute schon vor der Veröffentlichung Windows 8 ab. Ich denke, früher oder später wird man damit in Berührung kommen, und wenn man sich damit auseinandersetzt, dann kann man sich selbst ein Bild davon machen.

Von meinem Bild werde ich hier weiterhin berichten.

SVN-Repos auf eigenen Git Server migrieren

Juni 24th, 2012

Vor einer Weile hatte hatte ich mir einen SVN Server mittels WAMP zusammengebastelt. Die Lösung läuft bei mir aktuell immer noch, obwohl ich schon seit einer Weile auf lokale GIT Repositories gewechselt bin. Das hat es mir ermöglicht, jederzeit und unterwegs mit dem Repository zu arbeiten, also Verlauf einsehen und Änderungen einchecken, und sobald ich wieder netzwerktechnisch auf mein SVN zugreifen konnte, wurden die durchgeführten Commits einfach ins SVN übertragen. Den SVN-Server durch einen GIT “Server” zu ersetzen, war mir bisher zu aufwendig.

Die Tage bin ich dann über gitblit gestolpert. Dabei handelt es sich um ein Tool, in dem man einfach seine GIT Repositories hosten und auch für andere zugänglich machen kann. Das ganze kommt mit einem übersichtlichen Webfrontend daher, kurz gesagt: scheinbar ein perfekter Ersatz für meinen SVN Server.

Installation

gitblit gibt es in verschiedenen Download-Varianten. Die “GO” Variant beinhaltet alles was man braucht um direkt loszulegen, kommt dabei “aber” mit einem eigenen Jetty Webserver daher. Da ich eher einen lokalen Tomcat verwenden möchte, habe ich mir einfach die WAR-Datei (Web Archive) heruntergeladen.

Der Tomcat liegt bei mir unter D:\temp\apache-tomcat-7.0.28, d.h. die WAR-Datei wird in das Unterverzeichnis “webapps\gitblit” entpackt. Änderungen an den Einstellungen habe ich für meinen Test keine vorgenommen. Die vollständige Einrichtung erledige ich wenn ich genug getestet habe. Zum Abschluss sollte man prüfen, ob der Tomcat auch gestartet ist.

Tja, das war es eigentlich auch schon. Wenn man jetzt im Webbrowser die Adresse http://localhost:8080/gitblit/ aufruft, bekommt man folgende Seite zu Gesicht.

Erste Schritte

Für die Verwaltung der Repositories muss man sich anmelden. Einfach oben rechts mit Benutzer admin und Passwort admin anmelden. Jetzt bekommt man zusätzliche Navigationspunkte und Funktionen angezeigt.

Etwa rechts in der Mitte (also oberhalb der leeren Repository-Liste) hat man die Möglichkeit ein neues Repository anzulegen. Mit einem Klick auf “new repository” gelangt man zu einer Seite mit vielen Einstellungen. Ich gebe nur ins erste Feld den Name “test” ein und klicke ganz unten auf “Save”. Damit habe ich ein neues Repository angelegt und das wird jetzt in der Übersicht als leer angezeigt. Jetzt muss man seinem lokalen Git-Repository nur noch den neuen Remote-Server mitteilen, und schon kann man mittels Push das Repo auf den Server übertragen. Die notwendigen Schritte/Befehle werden direkt im gitblit-Frontend angezeigt. Einfacher geht es nicht.

SVN Migration

Als nächstes möchte ich eines meiner SVN-Repositories in das eben erstellte importieren. Das gestaltet sich nicht ganz so einfach, da man mehrere Dinge beachten sollte:

  1. Man benötigt ein Author-Mapping, damit die Namen aus dem SVN-Repository nicht verloren gehen
  2. Alle SVN-Branches müssen in Git als Branch angelegt werden
  3. Alle SVN-Tags müssen in Git angelegt werden

Zum Glück muss ich mir nicht alles selbst zusammensuchen und kann auf Hilfe auf dem Internet zugreifen. Sämtliche nun folgenden Arbeiten führe ich in der “Git Bash” aus, die man ja eigentlich intstalliert hat, wenn man mit Git unter Windows arbeitet. Wenn nicht, dann msysGit installieren.

Author Mapping

Um überhaupt an die eine Liste der Authoren heranzukommen, greift man am Besten auf ein kleines Bash-Script zurück. Das in Sven’s Blog bereitgestellte Skript, musste ich leicht anpassen, da es a) mit Leerzeichen in Authoren nicht klar kam und b) ein lokales SVN-Repository benötigte. An die geänderte Version kann ich einfach eine URL zum SVN-Server übergeben und schon bekomme ich eine Liste der Authoren. Hier das geänderte Script “svn_author_export.sh” (Download weiter unten):

#!/bin/bash
IFS=$(echo -en "\n\b")
authors=$(svn log -q $1 | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2 }' | sort | uniq)
for author in ${authors}; do
  echo "${author} = ${author} <${author}@domain.com>" >> svn.authors ;
done

Der Aufruf sieht dann wie folgt aus:

./svn_author_export.sh http://localhost/svn/svnGitTest

Im lokalen Verzeichnis gibt es nach dem Ausführen eine Datei namens “svn.authors”, die man jetzt entsprechend anpassen sollte.

SVN Repository clonen

Das eben erstellte Author-Mapping kommt beim Clonen des SVN-Repositories zum Einsatz.

git svn --authors-file=./svn.authors clone -s http://localhost/svn/svnGitTest

Jetzt hat man ein lokales Git-Repository mit sämtlichen Commits aus dem SVN und den entsprechend gemappten Author-Namen/Emailadressen. Das kann man durch einen Blick ins “git log” überprüfen.

Repository migrieren

Nachdem man das SVN-Repository nach Git geclont hat, sind einige Aufräumarbeiten notwendig. So muss man für jede SVN-Branch auch eine lokale Git-Branch erstellen, und auch die Tags aus dem SVN korrekt übernehmen. Um diesen Schritt zu automatisieren habe ich ein kleines Script gebastelt (Download weiter unten):

#!/bin/bash
branches=$(git branch -a | grep -e ' remotes/' | awk -F: '{print substr($0, 3)}')
for branch in ${branches}; do
  tagName=$(expr "$branch" : "remotes/tags/\(.*\)")
  branchName=$(expr "$branch" : "remotes/\(.*\)")
  if [ -n "$tagName" ]; then
    git checkout -b tag_"$tagName" remotes/tags/$tagName
    git tag $tagName tag_"$tagName"
    git checkout master
    git branch -D tag_"$tagName"
    git branch -D -r tags/$tagName
  else 
    if [ "$branchName" != "trunk" ]; then
      git checkout -b $branchName remotes/$branchName
    fi
    git checkout master
    git branch -D -r $branchName
  fi
done

Ok, was passiert in diesem Script?

  1. Zunächst werden alle Remote-Branches ermittelt
  2. Dann wird unterschieden, ob es sich um einen Tag oder eine echte Branch handelt
  3. Bei Tags wird temporär eine Branch (basierend auf dem Remote-Tag) angelegt und darauf ein entsprechender Tag erzeugt.
  4. Bei Branches wird einfach eine entsprechende Branch angelegt (außer für die Remote-Branch “remotes/trunk”)
  5. … und nebenbei werden alle Remote-Branches gelöscht, also das Repository vom SVN abgekoppelt.

Jetzt sollte man genau prüfen, ob irgendwelche Fehler aufgetreten sind. Falls etwas schief gegangen ist, hilft es meist nur,  das gesamte Repository frisch aus dem SVN zu clonen (oder man hat sich vorher ein Backup vom Verzeichnis gemacht). Ggf. sollte man den 5ten Schritt weglassen, wenn man sein SVN- und den Git-Server parallel laufen und Commits zwischen beiden syncronisieren lassen möchte.

Auf den Server übertragen

Nun ist es an der Zeit unser Repository auf den Server zu übertragen. Dazu müssen wir unserem lokalen Git-Repository erstmal ein neues Remote mitteilen und dann unsere Branches und Tags pushen.

git remote add gitblit http://localhost:8080/gitblit/git/svnGitTest.git
git push gitblit master work_test work_new work_experimental first_tag

Das kann natürlich wieder aufwändig werden, wenn man sehr viele Branches/Tags hat. Dafür kann man aber auch ein kleines Script (commit_all_branches_and_tags.sh) benutzen.

Wie man sieht, ermittelt das Script selbstständig alle Branches und Tags und puscht diese an das Remote mit dem Namen “gitblit”. Wenn ein anderer Name für den Remote verwendet wurde, dann kann man den Namen einfach als ersten Parameter an das Script übergeben. Hier noch das Script (Download weiter unten):

#!/bin/bash
remote="gitblit"
if [ -n "$1" ]; then
  remote=$1
fi
branches=$(git branch | awk -F: '{print substr($0, 3)}')
tags=$(git tag)
entries="${branches} ${tags}"
entries=${entries[*]}
echo "Committing: ${entries}" 
git push ${remote} ${entries}

Jetzt kann man sich auch das Ergebnis im Webfrontend anschauen oder sich das Repository auf einen anderen Rechner clonen.

Zusammenfassung

Auch wenn das Migrieren im ersten Moment doch etwas aufwändig erscheint, kann man mit wenigen Handgriffen oder durch die Verwendung von Scripts recht schnell zum Ziel gelangen. Grad der in die Scripte gesteckte Aufwand wird sich bei der Migration der weiteren Repositories auszahlen. Ob man bei der Migration gitblit oder eine andere Lösung aufbaut — in beiden Fällen kann ich hier wieder auf die Scripte und Vorgehensweise zurückgreifen.

Eine kleine Änderung an der Konfiguration von gitblit musste ich dann doch vornehmen. Bei Branches und Tags wurde im Webfrontend nur eine leere Seite angezeigt. Das Problem ist aber bekannt und kann (in des Dateien reference.properties und web.xml) durch das Setzen von “web.mountParameters” auf “false” beseitigt werden.

Die restlichen Funktionen von gitblit muss ich jetzt nach und nach ausprobieren. Aber mein SVN-Server wird wohl bald ausgediehnt haben.

Links
Gitblit-Homepage
SVN to Git Migration von Sven Goethel
Download der Scripte