Apache Pivot – Java GUIs Plattformübergreifend

Programmieren an sich ist ja nicht so schwer, sollen die Programme aber auf verschiedenen Plattformen laufen, muss man einige Dinge beachten. Auf der einen Seite muss die Programmiersprache auf allen gewünschten Plattformen unterstützt werden (sprich es muss einen Compiler/Interpreter geben) und es sollten keine Bibliotheken verwendet werden, welche auf “native code” (Code, welcher für ein spezifisches Betriebssystem/CPU programmiert/compiliert wurde) setzen.

Es gibt diverse solcher Sprachen (Python, Java, Ruby, Mono, etc) und jede hat Vor- und Nachteile. Insbesondere wenn man nicht nur Konsolenprogramme schreiben will wird es meistens kompliziert. Frameworks für GUIs arbeiten meist nur auf einem Betriebsystem, da viel betriebsystemspezifischer Code verwendet wird. Deshalb habe war ich schon seit längerer Zeit auf der Suche nach einem GUI Framework, welches dieses Problem löst. Vor ein paar Wochen entdeckte ich “Apache Pivot”.

Apache Pivot ist ein Framework um GUIs für Java zu implementieren, welche auf verschiedenen Plattformen funktionieren. Das GUI wird in einem XML-File definiert. Grundlegende Elemente können so eingefügt werden. Elemente können auch später mittels Java Code hinzugefügt werden. Das Framework funktioniert für normale Programme, Applets und es sollten sich sogar Web-Applikationen erstellen lassen (Die WebApps habe ich aber noch nicht ausprobiert).

Es gibt ausführliche Demos und einfache Beispiele zu allen Komponenten.

Die Java-Programme funktionieren auf Windows, Mac OS X und Linux (im Grunde überall wo eine grafische Oberfläche vorhanden ist und Java unterstützt wird). Die Performance ist sowohl auf Windows als auch auf Mac OS X gut (Linux habe ich nicht so ausführlich getestet). Wenn nicht so sauber programmiert wird reagieren die Programme speziell unter Windows nicht ganz so schnell. Insbesondere bei Buttons, wenn grössere Aktionen ausgeführt werden sollen, muss diese in einem neuen Thread gestartet werden. Wenn da Fehler passieren, reagiert das GUI träge.

Alles in allem gefällt mir das Framework, es ist schnell, einfach zu benutzen und man kann es in bestehende Programme Integrieren (und so langsam zum Beispiel ein SWING-Interface durch Apache Pivot ersetzen).

 

Studentenrabatt bei BRACK

BRACK – ein schweizer Onlineshop für Computer- und Elektronikartikel hat wieder einmal eine Aktion mit Studentenrabatt.
Einfach anmelden, ein Foto der Legi (oder Schülerausweis) hochladen und schon profitiert man vom Rabatt. Wie viel Rabatt man jeweils erhält kann von der Uni abhängen, welche man besucht. Ausserdem muss man in der Schweiz wohnhaft sein.

Buchtipp: JPOD von Douglas Coupland

Heute habe ich einen Artikel im Tagesanzeiger entdeckt (Das Universum der Nerds), in welchem das Buch JPod von Douglas Coupland beschrieben und empfohlen wird. Es heisst JPod sei das neuste Werk von Douglas Coupland und da wurde ich ein bisschen stutzig. Ich habe das Buch vor zwei oder drei Jahren während meinen Ferien gelesen und mir dannach die Vorgänger (zB. “Microserfs” und “Generation X“) und Nachfolger (“The Gum Thief“) gekauft. JPod erschien bereits 2006 und ist also weder neu noch das neueste Werk, Allerdings hat es bis jetzt gedauert das Buch zu übersetzen. Eigentlich schade, den das englische Original hat mir gefallen und ich hoffe ich bin da nicht der einzige. Zumindest in Amerika/Kanada muss das Buch ein Erfolg gewesen sein, denn es gibt sogar eine Fernsehserie.

Auf jeden Fall kam mir dank dem Artikel das Buch nochmals in den Sinn und ich werde mir heute wohl noch eines der neusten Bücher von Douglas Coupland kaufen.

Vor allem als Einstieg in die Bücher von Coupland kann ich JPod empfehlen. Es hat einen aussergewöhnlichen Erzählstil und es hat immer mal wieder ein bisschen “Spam” zwischen drin. Teilweise erinnert es an einen Email-Roman (ist aber nicht konsequent durchgezogen), daher passt der Spam recht gut. Es war für mich eine willkommene Abwechslung, da ich allgemein relativ wenig lese und wenn dann eher klassische Literatur oder Dan Brown und ähnliches. Der ungewohnte Stil und die Nähe zu Computer und IT (sowohl vom Stil als auch von der Geschichte) haben mir zugesagt. Ich kann das Buch jedem empfehlen.

Über die Story möchte ich nicht allzuviel verraten, aber es geht im Grossen und Ganzen geht es um einen Programmierer, welcher für eine Firma ein Spiel programmiert. Sein Bruder steigt im Verlaufe des Buchs in den Menschenhandel ein, seine Mutter pflanzt Hanf im Keller und sein Vater scheint ein gescheiterter Schauspieler zu sein. Seine Arbeit sieht allerdings kein bisschen besser aus, da ihr Manager unbedingt will, dass im Skateboardgame eine Schildkröte vorkommt (weil er selber gerade in eine Scheidung steckt und bei seinem Sohn besser ankommen will). Im Verlaufe des Buches wird alles immer wilder, Arbeit beginnt sich mit dem Privaten zu vermischen und neben Leichen die es zu verstecken gilt, laufen natürlich auch die Machenschaften des Bruders aus dem Ruder.

Und zwischen durch gibts immer wieder ein paar Nerd-Witze, so zum Beispiel die “Hug machine”, mit welcher sich Kontaktscheue Nerds umarmen lassen können (ohne menschlichen Kontakt haben zu müssen) oder das Spiel wo einer der Mitarbeiter 8000 Primzahlen ausdruckt, wobei eine der Zahlen gar keine Primzahl ist (und derjenige gewonnen hat, welcher die falsche zeurst entdeckt) und selbstverständlich sind alle Primzahlen im Buch abgedruckt.

Für diejenigen die das Buch auf englich lesen wollen empfehle ich die Taschenbuch Version:

Zm beispiel bei Amazon:

Oder die deutsche Ausgabe (als Hardcover):

Aufgrund des Stils ist es aber recht schwierig das Buch zu übersetzen. Ich empfehle also wenn möglich das Original zu lesen.

Viel Spass beim lesen.

Google+ und die Suchresultate

Google+ wirkt sich bereits auf die Suchergebnisse aus. In den “Google Webmastertools” gibt es einen neuen Abschnitt mit welchem man das Suchverhalten genauer analysieren kann und den Einfluss der +1’s auf die eigene Homepage erahnen kann.

Ausserdem erscheint es im Moment so, dass Pages welche meine Google+ Freunde “gut” finden (sprich den +1 Button klicken) bei mir eher angezeigt werden. Die Suche wird also mehr und mehr personalisiert. Was Google bisher über unsere Suchanfragen herauszufinden versuchte, servieren wir nun selber auf dem silbernen +1-Tablett. Wir geben unsere Vorlieben preis und kombiniert mit unseren Freundeskreisen/Circles werden wir für Google zunehmend durchschaubarer.

Der gläserne Surfer ist wieder ein Stück durchsichtiger geworden. Wo früher Hotmail, AltaVista und später StudiVZ/LinkedIn/Facebook Ihre Dienste angeboten haben, finden wir heute Google’s Gmail, Google’s Web/Bilder/Karten/… Suche und nun auch noch Google’s soziales Netzwerk Google+. Das Internet wird monopolisiert und wir können uns kaum dagegen wehren, denn Googles Dienst sind meist recht gut und die Konkurrenz kommt kaum an die Qualität und Funktionalität heran.

Neben Google’s Diensten haben wir natürlich noch die Software (Picasa, Chrome, etc) und mittlerweilen sogar Betriebsysteme (ChromeOS für PCs und Android auf Smartphones). Es ist wirklich interessant zu sehen wie eine einzelne Firma so viele Dinge auf einmal hinbekommt. Die meisten anderen Firmen die sowas versucht haben, sind irgendwann an ihrer Grösse gescheitert.

Ich frage mich wann Google die erste Pizza ausliefern wird. Im Grunde müssten wir ja nicht einmal mehr den Belag auswählen oder die Adresse Angeben. Google sollte dies bereits wissen.

Für all diejenigen, welche einen Google Account haben und wissen möchten was den Google alles über sie gespeichert hat, kann dies Nachschauen unter: http://www.google.com/dashboard

Das Dashboard zeigt deutlich wie viele Informationen über uns gespeichert werden. Spannend und zugleich ein bisschen unheimlich.

Angry Birds und die Fortsetzungen, ein Rückblick auf das Spiel und ein paar Gedanken dazu

Angry Birds ist ein Spiel für Smartphones. Es geht um kleine niedliche Vögelchen, welchen die Eier gestohlen wurden. Bei den Dieben handelt es sich um grüne Schweinchen und die Vögel sind auf Rache aus. Es geht nun darum mittels einer Steinschleuder die Vögel in Richtung der Schweine los zuschiessen. Damit das Ganze nicht zu einfach wird verschanzen sich die Schweine hinter Holz- Stein- und Eisblöcken. Die Physik in Angry Birds wird mit der “Box2D”-Engine berechnet, welche quasi als Standard für physikalische Simulation bei Smartphone-Spielen betrachtet werden kann. Zumindest wird dies im Box2D-Forum so behauptet 😉

Hier ist der offizielle Trailer:

Man wundert sich nun vielleicht wieso ein so einfaches Spiel in diversen Länder zu den meist verkauften Apps in Apples AppStore gehört. Nicht nur die Original-Version, sondern auch Fortsetzungen und Versionen der Konkurrenz sind erfolgreich. Zuerst gab es ein paar Level, dann kamen neue Themen hinzu. Schliesslich gab es eine zweite App mit ein paar Halloween-Levels. Aus der Halloween-Spezial-Edition wurde dann “Angry Birds Seasons“, welche zu jeder “Jahreszeit” Passende neue Level-Sets veröffentlicht. Bestehende Spieler werden so bei der Stange gehalten, und es kommen immer wieder neue Benutzer dazu, sowohl durch Werbung, als auch durch “Mund zu Mund Propaganda”. Die meisten die einmal Angry Birds gespielt haben, installieren es früher oder später selber.

Der neuste Streich von Rovio ist “Angry Birds Rio“, hier wird nun zum ersten mal das Spielprinzip ein wenig abgeändert. Es müssen nun nicht mehr die Schweine gejagt werden, sondern je nach Level-Set gibt es andere Ziele, so werden zum Beispiel gefangene Vögel befreit, oder Affen gejagt. Rovio lässt sich immer wieder etwas neues einfallen, so dass die Spieler bei Laune gehalten werden. Damit weiter Geld fliesst, wurden weitere Marketing Massnahmen ergriffen, so kann man über die Apps nun auch Plüschtiere kaufen, oder einen “Super Adler” (als Erweiterung des originalen Spieles, um bei kniffligen Levels weiter zu kommen).

Um den Spielern noch ein bisschen mehr Geld aus der Tasche zu ziehen, gibt es für das iPad eine Spezialversion mit überarbeiteter Grafik. Neben Rovio versuchen auch immer wieder Andere Hersteller/Programmierer an den Erfolg von Angry Birds anzuknüpfen. Ein gutes Beispiel ist “Cat Physics“, wobei das Spielprinzip ein bisschen abgeändert wurde.

Bücherliste für das neue Semester

Das neue Semester hat angefangen und bietet für mich einiges an Lesestoff. Da die Bücher thematisch mehr oder weniger zum Blog passen, stelle ich sie hier vor.

In “Software Architecture” behandeln wir die Planung und Durchführung von Software-Projekten. Folgendes Buch Buch behandelt vorallem die Implementierung grosser Projekte. Es treten immer wieder ähnliche Situationen auf in denen man Probleme ähnlich löst. Das Buch stellt nun diverse “Muster” vor, welche immer wieder verwendet werden. Es werden Vor- und Nachteile, sowie verschiedene Gefahren erklärt. Das Buch deckt in unserem Fall jedoch nicht den gesamten Stoff ab, da wir insbesondere auch Requirements, Planung und Testing behandeln.

Das zweite Buch ist für die Vorlesung über Computer Netzwerke. Das Buch dient als Einführung, insbesondere in die Verschiedenen Schichten eines Netzwerkes (von der Physikalischen Übertragung im Kabel/in der Glasfaser, bis zu den Programmen, welche Daten austauschen). Das Buch ergänzt die Vorlesungsunterlagen, insbesondere geht es in einigen Bereichen noch ein bisschen mehr in die Tiefe.

Das letzte Buch ist für die Datenbank-Vorlesung. Es geht in erster Linie um die Modellierung von Daten (einerseits mittels relationalen Datenbanken, andererseits auch allgemein, bzw. um die Darstellung mittels ER/UML). Das Buch ergänzt die Vorlesung mit weiteren Beispielen und mehr Erklärungen.

Viel Spass beim lesen.

Flickr

Seit einiger Zeit suche ich eine Alternative um meine Bilder zu veröffentlichen. Das Ganze sollte für mich einfach zu bedienen sein und leicht zugänglich, etc. Anstatt irgend eine eigene Sache zu basteln oder eine vorgefertige Gallery auf meinem Server einzurichten habe ich mich für Flickr entschieden. Bei Flickr kann jeder die Bilder anschauen und mit einem Account auch Kommentare hinterlassen, etc.

Auf dem Blog wird ein Ticker (siehe rechte Spalte) hinterlegt auf welchem die letzten Bilder meines Flickr-Streams zu sehen sind.

Falls jemand noch einen anderen Tipp als Flickr hat, bitte melden. Ich probiere gerne mal wieder was neues aus.

Let’s bake a cake – Entwickeln eines Webprojektes mit CakePHP

Seit einiger Zeit suche ich eine brauchbare Alternative zu PHP um Webseiten zu erstellen. Neben ASP.NET, Ruby und Python habe ich auch ein bisschen JSP angeschaut. Alle Lösungen waren mir jedoch in irgend einem Punkt unsympathisch. Da ich einzelne PHP-Basierte Anwendungen weiter verwenden möchte kann ich nicht ohne weiteres auf Tomcat/Jetty, etc umsteigen, ansonsten wäre JSP mit Velocity eine annehmbare Lösung gewesen. Zusammen mit Apache und mod_proxy oder mod_jk ist die Lösung jedoch nicht optimal. Insbesondere wenn mehrere Projekte zusammen laufen sollen wird es unter Umständen mühsam. Aus diesem Grund habe ich mich dazu entschieden ein PHP-Framework auszuprobieren. Meine Wahl fiel schlussendlich auf CakePHP.

CakePHP ist ein relativ kleiens PHP-Framework (ca. 5 MB) und funktioniert mehr oder weniger eigenständig. Man muss ein Zipfile in das Webverzeichnis des neuen Projektes entpacken und CakePHP ist mehr oder weniger bereit. Das Framework konzentriert sich auf Datenbankanwendungen, die Idee dabei ist, dass möglichst viel Arbeit vom Framework übernommen wird, so können zum Beispiel die Datenbanken von Hand generiert werden, und dann automatisch die “Models” und “Controler” sowie “Views” welche die Daten aus der Datenbank holen, verarbeiten, anzeigen und schliesslich wieder zurück speichern. Validierungen können direkt aus der Datenbank übernommen werden (zb. die Prüfung ob eine Variable nicht Null sein darf oder ob bei einem INTEGER-Feld wirklich eine Zahl eingegeben wurde, usw).

Ziel dieser Automatisierung ist es jeweils möglichst schnell auf funktionieren CRUD (Create, Read, Update Delete) Anwendungen zu kommen, da heisst Daten können erstellt, ausgelesen, bearbeitet und gelöscht werden. Standardmässig können zwei Benutzerlevel benutzt werden (‘normal’ und ‘admin’). Mit Hilfe einer Rechteverwaltung kann das Konzept jedoch beliebig fein eingestellt werden, so können einzelne Benutzer erstellt werden, Gruppen mit mehren Benutzer sowie Rollen welche den Benutzer oder Gruppen zugewiesen werden können und Rechte welche den Rollen verteilt werden. Mit den Rechten lässt sich dann steuern wer auf welche Funktionen zugreifen darf, also wer welche Daten lesen, schreiben, und löschen darf. Zusätzlich gibt es diverse Hilfsklassen, welche lästige aber notwendige Aufgaben übernehmen. Bilder, Links, etc. können so einfach eingefügt werden, so wird korrekter HTML-Code generiert und alle Links und Bilder haben eine korrekt relative URL egal an welcher stelle man verlinkt. Mit dem URL-Rewriting wäre dies von Hand oftmals gar nicht so einfach. Andere Hilfsklassen ermöglichen die automatische Generierung eines RSS-Feeds oder stellen einfach und zuverlässig Ajax-Funktionen und Elemente bereit und füttern diese mit den Daten aus der Datenbank.

Trotz den vielen Features ist das Framework recht gut aufgeräumt. Der Code welche ein Programmierer in seinem Projekt verwendet ist vollständig in einem Verzeichnis enthalten, so kann Cake aktualisiert werden, ohne dass Dateien aus dem eigenen Projekt überschrieben werden. Zu fast jedem Problem findet man jemanden der dafür eine Lösung gefunden hat, sei es eine Hilfsklasse die schon vorhanden ist oder eine selber geschriebene die man hinzufügen kann, etc. Zu CakePHP gibt es eine recht ausführliche Dokumentation, welche treffender weise Cookbook heisst: http://book.cakephp.org/ und zwei brauchbare Tutorials, welche eine schnelle und einfach Einführung bieten: Getting Started

Die Dokumentation wird auch in andere Sprachen übersetzt, jedoch empfehle ich die englische Version, da die Übersetzungen teilweise maschinell und daher nicht sonderlich gut übersetzt sind.

Für Webprojekte mit Datenbanken kann ich CakePHP empfehlen. Design, Content und Daten können einfach getrennt werden. Ein Webdesigner kann am Design rumbasteln ohne dass er gross mit dem Code dahinter in Berührung kommt.

Falls ihr noch nicht von CakePHP überzeugt sind, könnt ihr ja noch ein paar andere Frameworks anschauen. Hier gibt es eine kleine Übersicht: http://www.phpframeworks.com/

Viel Spass beim ausprobieren!

Programmierst du noch oder backst du schon 😉

hMailserver & AWStats

Für all diejenigen, welche sich ab und zu wundern was den ihr Mail- oder Webserver den ganzen Tag so macht, gibt es diverse Tools, welche die Logfiles analysieren und mehr oder weniger detaillierte Übersichten erstellen. Für meinen Webserver (Apache) setze ich seit längerem “Webalizer” ein. Webalizer ist klein und effizient. Für meinen Mailserver habe ich mich nun für “AWStats” entschieden, da mein “hMailserver” (die Software welche ich für den Mailserver verwende) für AWStats ein kompatibles Logfile anbietet. Die Konfiguration geschieht über ein Config-File und ist mit den verfügbaren Vorlagen recht einfach, vorallem da die Logfiles bereits in einem geeigneten Format vorliegen.

AWStats ist vielseitig und kann eben den Mail-Logs auch die Logfiles von Web- und FTP-Server analysieren und grafisch aufbereiten. Für den Mailserver finde ich die Statistiken gut, für den Webserver ist es in meinem Fall beinahe ein bisschen zu viel. Ich habe eher wenig Traffic und bin mit der Darstellung von Webalizer zufrieden.

Sowohl AWStats als auch Webalizer sind Plattform unabhängig und laufen auf Windows, Linux und MacOSX.