Quellcodeformatierung mit Artistic Style

Zu einem guten Codierstyleguide gehört immer auch eine Formatierungsansage. Es ist deutlich einfacher, fremde Quelltexte zu lesen, wenn diese gleichförmig formatiert sind. Unschön formatierte Sourcecodes gibt es zuhauf. Auch man selber ist nicht immer gefeit, die eigenen Stilvorgaben und Vorlieben auch einzuhalten. Auch wenn man in einem Team gemeinsam Sourcen bearbeitet, kann ein solcher Styleguide helfen. Beim Hatari Projekt ist das z.B. recht uneinheitlich.

Wie genau ein Quellcode nun einzurücken und zu formatieren ist, das bleibt immer eine persönliche Frage, z.B. wie geschweifte Klammern zu setzen sind. Hauptsache, der Stil ist einheitlich.

Dabei helfen natürlich kleine Tools, bessere IDEs wie Code::Blocks oder Eclipse bieten gleich entsprechende Plugins. Häufig rufen diese aber auch nur fertige Tools für die Kommandozeile auf.

Unter Linux kommen direkt 2 Kandidaten infrage:

Ich habe mich für Artistic Style entschieden, da es die von mir genutzten Optionen auf Anhieb anbietet. Ich habe nur ein wenig experimentiert und meine Vorlieben sehen wie folgt aus:


#
# astylerc for Matthias Arndt
#
# history:
# 2011-05-26 initial version
#

# main style:
style=bsd

# indentation with TABS (4 spaces per TAB):
indent=tab

# contents of switch case statements are indented, including the break:
indent-cases

# preprocessor statements that are split are indented:
indent-preprocessor

# loops and if statements are seperated by empty lines:
# (associated block comments are kept)
break-blocks

# parenthesis are padded with spaces:
pad-paren

# unnecessary empty lines are deleted:
delete-empty-lines

Das Ganze kann man nach $HOME/.astylerc speichern und schon braucht man das Tool nicht mehr mit Kommandozeilenparametern zu füttern.

Huawei E220 UMTS MINI USB Modem unter Ubuntu Lucid Lynx 10.04 LTS verwenden

Ich war heute mal neugierig und habe mein UMTS Modem mit dem neuen PC ausprobiert. Tatsächlich lief es unter GNOME ohne große Klimmzüge mit Ubuntu Lucid Lynx 10.04 LTS.

Hauptproblem war wieder, Linux dazu zu bewegen, ein Modem statt einem USB Stick zu erkennen. Mittlerweile gibt es dafür Tools. Man muss nur das Tool “USB ModeSwitch” installieren und in einer Konfigurationsdatei etwas anpassen.

Das ist unter http://wiki.ubuntuusers.de/USB_ModeSwitch sehr gut beschrieben und auf das E220 passen die dort beschriebenen Regeln 1:1. Selbst ohne Reboot erkannte der Kernel das Modem beim erneuten Einstecken danach als solches.

Danach erkennt der GNOME Netzwerkmanager das Modem, wenn man unter “Mobiles Breitband” eine neue Verbindung erstellt. Von Hand waren keine Einstellungen nötig, ich habe “E-Plus” als Provider ausgewählt. Danach fragte der Netzwerkmanager nur noch nach der PIN (keine Basteleien mehr nötig) und erstaunlicherweise war ich nach nur 2 Versuchen (ich erinnere mich mit Grausen an den Februar oder März) online.

Tatsächlich schreibe ich diesen Artikel gerade über die UMTS Verbindung, auch wenn ich auf Anhieb den Unterschied zum Breitband via Kabelanschluß merke. Aber immerhin online sein, wenn die Breitbandverbindung ausfällt oder z.B. schon in die neue Wohnung verlegt wurde.

Seit März übrigens das erste Mal wieder, daß ich die UMTS Verbindung insgesamt in Betrieb nehme.

Arnold für Linux: ein Schneider CPC Emulator

Längere Zeit habe ich MESS benutzt, um unter Linux den Schneider CPC zu emulieren. Leider funktionierte MESS irgendwie nicht mehr richtig, bzw. hatte Probleme mit der Videoemulation.

Arnold Emulator (Linux, GTK+SDL)
Arnold Emulator (Linux, GTK+SDL)

Ersatzweise habe ich nun mal den Arnold-Port von nurgle ausprobiert. Arnold scheint damit unter Linux gut zu laufen, einige Spiele habe ich ausprobiert, und diese laufen gut bis anständig. Der Port bietet ein einfaches GTK-Gui, Joystickunterstützung und Soundemulation. Insgesamt kann er also schonmal mindestens soviel wie MESS.

Mit Shift+Ü bei QWERTZ Tastaturmapping kann man sogar das | eingeben und damit über das |cpm Kommando dann CP/M booten.

Feine Sache, endlich kann ich wieder ab und an CPC Software anschauen und ausprobieren!

URL zum Port: http://arnold.berlios.de/

Danke an nurgle für den Port! :)

Joystickkalibrierung unter Linux automatisieren

Seit Jahren habe ich Joysticks und Joypads wenn nötig unter Linux immer von Hand kalibriert, aber nie die Einstellung dauerhaft fixiert.

Tatsächlich bringt das Kommandozeilentool jscal alles nötige mit. Ich las unter http://www.averyjparker.com/2005/12/29/joystick-calibration-under-linux/ einen schönen Artikel darüber und möchte ihn hiermit verkürzt eindeutschen.

Das Vorgehen ist wie folgt:

  1. Joystick oder Joypad mit jscal kalibrieren: jscal -c /dev/input/js0
    Das Devicefile sollte natürlich jeweils angepasst werden.
  2. Die Kalibrierung prüfen, z.B. mit MAME oder MESS
  3. Die Kalibrierungsdaten abspeichern: jscal -p /dev/input/js0 >calibrate-joystick.sh
    Dieses Kommando erzeugt einen Aufruf von jscal, der die Daten wiederherstellt.
  4. Im Prinzip reicht es, dieses Shellskript ausführbar zu machen, also #!/bin/sh Header davor und chmod +x
  5. Zum Schluss das Skript in die eigene Autostarsequenz einhängen, entweder system global oder so wie ich ganz banal in den GNOME Autostart rein.

Danach sollte bei jedem Start das Pad oder der Joystick ordentlich kalibriert sein.

Frohes Daddeln :)

Quadromania v0.4 release

Heute gibt es von meinem Brettspiel Quadromania eine neue Version.

Quadromania v0.4 (Highscore tabelle)
Quadromania v0.4 (Highscore tabelle)

Die Version v0.4 verwaltet jetzt eine Highscoretabelle und diese wird auch auf Disk gesichert und wieder geladen. Ferner wurde die Grafik bezüglich des Programmcopyrights angepasst.

Natürlich gibt es auch wieder eine Version für den GP2X. Einfach die Binärdistribution für den Wiz auf SD-Karte oder den NAND Speicher entpacken. Dann sollte eigentlich ein entsprechendes Icon erscheinen.

Links zum Download gibt es auf der Quadromania Seite.

Frohes Daddeln!

Und Feedback ist natürlich immer willkommen, auch ein simples Danke schön oder dergleichen.

Linux auf dem ACER AS X1301-3 : ein erstes Fazit

Meinen neuen Rechner habe ich ja mittlerweile eine knappe Woche. Beginnend am Sonntag habe ich auch Linux installiert und eingerichtet.Die Linuxtauglichkeit des ACER AS X1301-3 will schließlich betrachtet werden.

Nach einem anfänglichen Versuch mit Kubuntu und KDE4, habe ich mich dann ganz fix für Gnome umentschieden. KDE4 hat zuviel geändert, das ganze Bedienkonzept ist anders, die Optik zu bunt und verspielt, vorallem aber habe ich sovieles vermisst. Ergo nach langen Jahren mit KDE mal wieder Gnome :)

Rein technisch ist es jetzt ein Ubuntu LTS 10.04 Lucid Lynx mit 64Bit geworden.

Ansonsten ist alles ganz erfreulich, Skype läuft endlich, komplett mit Video und Ton unter Linux bei mir. Die Webcam lief ohne Treiber von Hand bauen zu müssen, in den USB Port eingesteckt und lief.

Die Datenrettung ging sehr leicht. Die alte Platte habe ich in ein externes Gehäuse gesteckt und einfach angeschlossen. Ubuntu erkannte auf Anhieb alle Partionen darauf und der Rest war eigentlich nur noch runterkopieren. NTFS wird mittlerweile mit einem modernen Treiber eingebunden, auch mit Schreibzugriff. Truecrypt liess sich ebenfalls installieren und bietet auch unter Linux nun ein GUI, welches dem GUI unter Windows sehr ähnlich ist.

Die meisten Emulatoren habe ich entweder compiliert oder aus Paketen installiert, läuft soweit ganz gut. DVD und Filme lief auch mit der Hilfe der Ubuntu Wikis.

Die Onboardgrafik mit NVIDIA Chipsatz wird auch vom NVIDIA Treiber erkannt und liefert unter Linux OpenGL. Nexuiz läuft recht glatt, ebenso OpenGL beschleunigte Emulatoren.

Booten tut die Kiste erfreulich flott, auch Eclipse ist nicht mehr so träge wie auf älterer Hardware. Als einziges fehlt mir noch RS232 und der Test wie es mit meinen Mikrocontrollerbasteleien aussieht.

Insgesamt lief eigentlich alles out of the box und ohne Klimmzüge.

Mein Fazit: Der ACER AS X1301-3 is voll Linux tauglich und ein selbstgemachter Kernel ist heutzutage für die meisten Ansprüche nicht mehr nötig.

Datei-Anhang WINMAIL.DAT entschlüsseln – aber wie?

Im geschäftlichen Kontext bekam ich mal wieder ein tolles Dokument zugeschickt, welches ich ausfüllen musste.

Problem: die Datei war mir MS Outlook verschickt und bekanntlich kümmert sich Microsoft ja wenig bis garnicht um anerkannte Standards.

Der Dateianhang entspricht keinem offiziellen Standard und mit jedem anderen Emailprogramm bekommt man nur eine Containerdatei namens “winmail.dat” zu sehen. Ansich schon mal der perfekte Grund, das als Virus oder zumindest Bulkmail anzusehen. Aber in diesem Fall weiß ich ja genau, ich brauche den Inhalt.

Stellt sich die Frage, wie komme ich da ran? Wie kann ich diese ominöse winmail.dat entpacken oder entschlüsseln, damit ich das Worddokument oder was immer darin verborgen liegt, bearbeiten kann?

Also erstmal auf der Shell geprüft, ob das Format gänzlich murks ist oder es vielleicht eine Chance gibt. Die winmail.dat also im $HOME abgelegt und mit Bordmitteln unter Linux  geprüft.

$ file winmail.dat
winmail.dat: Transport Neutral Encapsulation Format

Transport Neutral Encapsulation Format“, wäre es kein proprietäres Format von Microsoft, dann klänge das ja ansich gut. Immerhin gibt es wohl auch durchaus offizielle Entpacker dafür. (Mehr dazu bei Wikipedia)

Ich habe allerdings quick’n’dirty ein GUI-basiertes Tool namens Fentun ausprobiert, weil das als statisches Binary daherkam (keine Zeit für lange Compilier- und Installierorgien) Kurz, Fentun zeigt einen einfachen Selektor und man kann die Datei im winmail.dat einfach auspacken.

Ich habe sie dann Openoffice gefüttert – und siehe da es war eine Exceltabelle.

URL zu Fentun (Windows, Linux und Mac OS): http://www.fentun.com/

Online Extraktor: http://tud.at/php/tnef/index.php (kurz probiert, klappt!)

PS: wie ich gerade bei Wikipedia lese, gibt es wohl für Thunderbird und andere Plugins.  Im Zweifelsfall also etwas googlen.

Quadromania v0.3 Release

Heute ist es soweit. Von Quadromania gibt es den 0.3 Release. Ich habe bei der Gelegenheit auch gleich eine eigene Seite für das Spiel angelegt (Link).

Quadromania v0.3 (GNU/Linux version)
Quadromania v0.3 (GNU/Linux version)

Das Spiel läuft offiziell auch auf dem GP2X Wiz und ich stelle natürlich eine Binärversion für den Wiz zur Verfügung. Einfach auf die SD Karte entpacken und im Wiz Menu au den Quadromania Eintrag klicken.

Das Tearing ist offiziell noch nicht unter Kontrolle. Aber bevor es keine eindeutige Rückmeldung bzgl. der gefixten liBSDL mit neuer Firmware gibt, überlasse ich es dem Benutzer, eine libSDL mit Tearingfix zu installieren.

Download Quadromania v0.3

  • v0.3 (380 K) Source code for all platforms
  • v0.3 (133 K) Binary version for GP2X Wiz

Frohes Daddeln!

Google Desktop: ein kleiner Erfahrungsbericht

Google Desktop – was ist das?

Im Sommer habe ich mal testweise Google Desktop installiert, eine Desktopsuchmaschine.

Im Prinzip stellt es eine erweiterte Suchfunktion für den eigenen Rechner bereit, eine sogenannte Desktopsuche. Im Hintergrund werden laufend die vorhandenen Dateien indiziert und katalogisiert. Über ein entsprechendes Utility kann man dann im eigenen Datenbestand suchen. Das ist zum Beispiel sinnvoll, wenn man gerade mal wieder vergessen hat, in welchem Verzeichnis man welche  Information gelassen hat. Indiziert werden alle sinnvollen Dateiformate, über OpenOffice und Textdateien bis hin zu PDF wird alles sinnvolle durchsucht. Auch lokal abgelegte Emailarchive, z.B. MBOX Dateien von Evolution und co werden erfasst.

Google Desktop im Einsatz

Ich habe die Linuxversion für AMD64 ausprobiert, unter Windows  hat das Programm vermutlich noch sehr viel mehr Features als die im folgenden beschriebenen Punkte.

Das DEB File lies sich auch unter meiner etwas veralteten Ubuntu Linux LTS 6.06 Installation verwenden. Nach der Installation hatte ich im KDE Startmenü einen neuen Eintrag, Google Desktop.  Nach dem Start hat man ein Icon im Tasktray, vermutlich analog unter GNOME, ich benutze jedenfalls KDE.

Google Desktop im KDE Icontray
Google Desktop im KDE Icontray

Der Indexmechanismus wird automatisch gestartet und ist erstaunlich freundlich mit der CPU Last. Während ich früher mal Beagle ausprobiert hatte, war damit 3D Spielen, z.B. Nexuiz, nicht möglich. Beagle frass im Hintergrund CPU Zeit weg. Google Desktop dagegen scheint das Problem nicht zu haben. Pluspunkt für Google Desktop.

Das Indizieren der Dateien nimmt allerdings Zeit in Anspruch, mehrere Tage um genau zu sein. Es empfiehlt sich daher, erst Google Desktop zu installieren und dann nach und nach Dateien hinzuzufügen oder zu erzeugen. Google Desktop scheint alles was direkt geöffnet wird, mit Priorität zu indizieren. Neueste Dateien sind daher potentiell eher in der Datenbank enthalten. Bis bei mir 2 Gigabyte gesammeletr Daten vol lerfasst waren hat es jedenfalls seine Zeit gedauert.

Durch Drücken von beiden STRG (oder auch Control) Tasten öffnet sich ein kleines Eingabefenster. Hier kann man seine Suchbegriffe eingeben und anschließend kann Google Desktop die Suchergebnisse gesammelt anzeigen. Dazu verwendet es den im System konfigurierten Webbrowser, unter KDE wie bei mir den Konqueror.

Beispielsuchergebnis mit Google Desktop unter KDE
Beispielsuchergebnis mit Google Desktop unter KDE

Die Konfiguration von Google Desktop erfolgt ebenfalls im Browserfenster. Scheinbar installiert Google Desktop einen eigenen HTTP Dämon (Webserver), der die Abfragen alle managed.

Ein kleines Fazit

  1. Es funktoniert und erfüllt seinen Zweck – :)
  2. Binärpaket läuft zumindest hier unter Linux ohne Mucken :)
  3. Keine unnötige CPU Last :)
  4. Die Indexdatenbank kann sehr groß werden, z.B. hier akut über 500MB. Das liegt aber an der Menge der indizeirten Dateien.
  5. Einbindung in die Desktopumgebung :)
  6. Verzeichnisse können gezielt von der Suche ausgenommen :)
  7. Defaultbrowser nur indirekt konfigurierbar :(
  8. Ob es eine versteckte Ausspähfunktion gibt, konnte ich bislang nicht feststellen. Zumindest für die Windowsversion will ich eine solche nicht völlig ausschließen. Sensibele Daten sollten man damit nicht unbedingt durchsuchen lassen.

Insgesamt bin ich durchaus zufrieden, jedenfalls mehr als mit dem freien Beagle. Und wenn man über die Jahre (Seit Clausthal) Unmengen Dateien gesammelt hat, ist eine ordentliche Suchfunktion schon viel Wert!