Simple HTTP Server

Wer mal schnell einen HTTP Server unter Linux aufsetzen möchte, der sollte einfach in das entsprechende Verzeichnis gehen und dort:

python -m SimpleHTTPServer

ausführen. Anschließend ist dieses Verzeichnis per HTTP (standardmäßig unter Port 8000) erreichbar. Möchte man einen anderen Port benutzen so gibt man einfach die entsprechende Portnummer als letztes Argument mit an.

Weitere Informationen gibt es unter:
http://docs.python.org/library/simplehttpserver.html

Rebuild of Invertika

Nach einigen Monaten ist es Zeit den Zwischenstand für den neuen Invertika Server und den Client vorzustellen. Invertika soll somit auf einer neuen technischen Basis stehen. Diese neue technische Basis sieht so aus, das der Server in C# geschrieben wird und somit unter Mono und .NET läuft. Für den Client ist eine Implementation als Webapplikation angedacht. Das ganze hatte dabei mehrere Gründe:

  • die Produktivität ist in C# höher als in C/C++
  • es können keine Speicherlöcher entstehen
  • durch die automatische Speicherverwaltung wird der Entwickler entlastet
  • modernes und konsistentes Framework
  • Anpassung auf eigene Bedürfnisse
  • schnellere Entwicklung
  • IPv6 Unterstützung ist problemlos möglich
  • bessere Unterstützung von mobilen Geräten

Neben diesen Gründen sind es auch einige Dinge wie „typedefs“ welche nicht unbedingt zum Verständnis beitrugen oder mehrere Klassen und Strukturen in einer Datei, welche das ganze ziemlich unübersichtlich machen. Auch die Abhängigkeit von zu vielen Bibliotheken wurde verringert.

Der Invertika Code in der Entwicklung

Nach einer kurzen Planungphase ging es dann am 3. Januar los mit der Entwicklung. Zuerst wurde damit begonnen den Accountserver zu portierten. Dabei wurden im Gegensatz zum Original einige Dinge verändern:

  • das Netzwerk setzt nun statt auf der Bibliothek „enet“ direkt auf TCP auf
  • PhysFS wurde wegrationalisiert

Am 13. Januar (einem Freitag ;)) waren die größten Portierungprobleme beim Accountserver gelöst und es wurde begonnen den Gameserver zu portieren. Am Gameserver ist die einzige größere Änderung die Anpassung der Skriptschnittstelle, damit diese mit den CLR Sprachen kompatibel ist. Die Roadmap für die Portierung sah dabei so aus:

  • Januar 2012: Implementation des Invertika Server
  • Februar 2012 Implementation des Invertika Clients
  • März 2012: Test der Software

Wie sich das für eine ordentliche Roadmap gehört wurde sie nicht eingehalten. So ist einiges noch nicht fertig und auch am Client muss noch viel getan werden. Der Client sollte ursprünglich auch in C# geschrieben werden und es wurde damit auch begonnen. Theoretisch ließe sich diese Clientvariante auf die Plattformen Windows, Linux, Mac OS X, iOS und Android bringen, praktisch ist es mit kleineren und größeren Problemen verbunden.

Ein generelles Problem an einem solchen Client ist, das er auf der jeweiligen Zielplattform erst installiert (oder auch kompiliert) werden und außerdem vom Nutzer aktuell gehalten werden muss. Schöner wäre es, wenn man diese Hürde aus dem Weg geschafft wird. Mittlerweile ist es dank Techniken wie Websockets, Webworkern und Canvas möglich, den Client komplett als Webapplikation zu schreiben.

Die Anfänge des neuen Clients basieren dabei auf der Techdemo „mana.js“ welche unter https://github.com/bjorn/mana.js zu finden ist. Der Vorteil der webbasierten Lösung ist dabei die große Kompatibilität mit unterschiedlichsten Geräten solange sie über einen aktuellen Browser verfügen.

Die Techdemo des Clients auf einem iPad

Während der Entwicklung bekamen die einzelnen Teile auch Namen die wie folgt lauten:

  • invertika (Client)
  • invertika-account (Accountserver)
  • invertika-game (Gameserver)

Der Quelltext sollte in den nächsten Tagen im Repository (http://source.invertika.org) erscheinen und zur Mitarbeit einladen ;)

Weitere Informationen gibt es unter:
http://invertika.org

Eine Woche das „neue iPad“

Das neue iPad ist mein erstens iOS Gerät nach einer Reihe von Androidgeräten. Der Grund für den Kauf des neuen iPads war wohl der Biographie von Steve Jobs geschuldet, die mich veranlasste es mal auszuprobieren. Dabei ist mir bewusst das es sich bei dem iPad um ein ziemlich geschlossenes System handelt, aber der Mensch als solches ist ziemlich bequem, also wurde der Versuch gewagt.

Die Apps auf dem iPad haben ihren Charme so sind mir schon einige Schmuckstücke begegnet welche unheimlich Spaß machen. Im Gegensatz zu manchen Android Tablet Apps wird der Platz den das Display bietet ausgenutzt, ohne das man größere weiße Freiraume hat. Was mir auffiel ist das die Apps unter iOS doch teilweise ein gutes Stuck teurer sind als ihre Androidäquivalente. Das Display an sich ist Augenschmaus. Längere Texte lesen sich damit wirklich sehr bequem, bis zu dem Moment an welchem das Tablett beim halten zu schwer wird.

Natürlich hat jedes System bzw. Gerät auch seine Nachteile. So bekomme ich unter Linux meine Inhalte nicht auf das Tablet es sein denn es gelingt mir mit Hängen und Würgen iTunes unter WINE zum laufen zu bekommen. Bisher ist dies nicht der Fall. Auch die Fotos bekommt man anscheinend nur per Photostream vom Gerät herunter. Als Linux Nutzer schaut man da wieder in die Röhre.

Gedruckt oder nicht?

Passend zum iPad gab es auch noch ein Smartcover als einzige Hülle und ich muss sagen das ganze hat doch eine gewisse Eleganz. Cover auf und schon ist das Tablet an, danach kann man das Tablett dann z.B. aufstellen und somit bequem schreiben. Das Gerät an sich wird wie aus einem Guss und liegt gut in der Hand wobei das Gewicht nach einer Weile doch ziemlich auf die Arme geht. Es hat bei mir auch keinen Gelbstich und auch die Hitzeentwicklung ist so gering, das ich meinen Herd wohl doch behalten werde.

Ein Foto mit dem iPad

An einige Eigenarten muss man sich trotzdem gewöhnen wie z.b. die Integration von ReadItLater in Safari und Twitter, da dauerte es doch etwas bis ich raus hatte wie dies funktioniert. Auch ist es nervig das jede Anwendung z.B. für Dropbox nochmal die Zugangsdaten haben möchte. Bei Androidgeräten installiere ich Dropbox einmal und kann dann anschließend es von jeder App aus nutzen welche die „Share“ Funktionalität nutzt. Auch das Problem das Safari in der Standardeinstellung keine Passwörter speichert musste erst einmal angegangen und gelöst werden.

Noch ein Foto mit dem iPad

Der Akku wurde in den ersten Tagen relativ schnell leer was aber auch andere ganzen Spielerei lag. Im normalen Betrieb reicht eine Akkuladung etwa 2 – 3 Tage.

Richtig schön wird es dann mit Diensten wie iTunes Match so das man seine Musiksammlung immer dabei hat, wobei ich finde das 25000 Titel nicht reichen. Ich denke da gibt es einige Leute die ihre Sammlung in diesem Fall nicht mitgenommen bekommen. Hier darf Apple ruhig noch eine Null an die Anzahl dranhängen.

Auch das hinzufügen von Videodateien unter iTunes ist doch recht grausam, AVI Dateien mit bestimmten (nicht exotischen) Codecs nimmt iTunes einfach nicht an, was doch sehr ärgerlich ist. Auch die Synchronisation der Bücher zwischen iTunes und dem iPad geht nicht so leicht von der Hand wie man es gerne hätte.

Dateien welche man z.B. über den iA Writer in der iCloud speichert sind unter Windows (von Linux fangen wir erst gar nicht an) nicht erreichbar (es sei denn ich habe eine wichtige Einstellung übersehen). Eine schöne Funktionalität ist das man sein iPad über die Seite http://icloud.com orten kann und es so schnell wiederfindet wenn man es mal verloren hat. Über die gleiche Seite kann man es auch sperren und fern löschen.

Zusammenfassend kann man sagen das es an der Hardware nicht wirklich etwas zu meckern gibt, aber die Integration in die Betriebssysteme einige Macken hat und vor allem unter Linux sich endlich etwas tun sollte.

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

Das Invertika Update im März

Der letzte Sonntag des Monats März ist gekommen und das heißt, das es wieder eine neues Update für Invertika gibt. Bei Invertika handelt es sich um ein Open Source 2D-MMORPG für Linux und Windows. In diesem Update wurden einige Tilesets überarbeitet (unter anderem „castle_1“ und „indoor_3“). Der Client wurde um besseren Support für kleinere Maps erweitert und die interne Hilfe etwas umgearbeitet. Die Repositories wurden umorganisiert so das jetzt die Bibliotheken in einem extra Repository zu finden sind.

Das Vacare, Rostock, und der Nex wurden von Mappingfehlern befreit. Die neue Kirche in Burg Cedric hat einen neuen Fußboden bekommen, der Friedhof wurde überarbeitet und auch ein Lagerhaus gibt es nun. In Lauria wurden einige Map- und Skriptfehler behoben. Auch in Nelaro und Selphi Timlet gab es einige Skriptfehler welche nun der Vergangenheit angehören. Die Netheksäule wird jetzt auch im Spiel mit einem „ä“ anstatt mit „ae“ geschrieben. Auch ein paar neue Items sind hinzugekommen. Das Wegesystem wurde etwas ausgebaut und an einigen Stellen korrigiert. In Lauria muss/kann man nun einen Schlüssel suchen und bekommt dafür eine entsprechende Belohnung.

Wer jetzt neugierig geworden ist, der kann uns unter http://invertika.org besuchen und es ausprobieren.

Windows 7 und USB Festplatten

Windows 7 ist nun schon ein paar Tage auf dem Markt und hat doch teilweise noch haarsträubene Fehler. Um folgendes Problem nachzuvollziehen benötigt man nur folgende Komponenten:

  • Windows 7 (Professional / 64 Bit)
  • mind. 4 GiB RAM
  • eine Seagate (andere wurden nicht getestet) USB Festplatte

Nun möchte man eine 200 GiB große Datei vom Rechner auf die USB Festplatte verschieben. Dort bekommt man dann Datentransferraten von 1,5 MiB/s bis 3 MiB/s. Man kann sich also den Rest des Tages freinehmen und der Datei beim kopieren zuschauen.

Da die wenigsten Leute ewig Zeit haben folgte dann die Probe aufs Exempel. Aus der Schreibtischschublade wird eine Kubuntu Live CD (10.04) geholt und von dieser gebootet. Dann beginnt der Datentransfer, diesmal mit Datenraten von 25 MiB/s bis 30 MiB/s. Mit solchen Raten lässt sich leben. Warum es Microsoft nicht schafft einen solchen Fehler zu beheben ist mir allerdings schleierhaft…