Neues Spielzeug: Canon EOS 550D

Doof an einer neuen Kamera ist ja, dass man sie nicht mit ihr selbst fotografieren kann. Daher stattdessen ein grottenschlechtes wunderschönes Bild, geschossen mit meinem Handy.

Wie sich gestern ja bereits angekündigt hat, habe ich nun wirklich ein bisschen Geld in die Hand genommen und mir die Canon EOS 550D gekauft (inkl. 18-55mm Objektiv im Kit).

Meine Recherche zu allen möglichen Kameras hatte ich zwar abgeschlossen, wollte mir aber noch ein paar Tage zum “darüber Schlafen” nehmen und vor allem schauen, ob das technische Wunderwerk nicht günstiger als bei Amazon zu bekommen ist, ohne nur eine EU-Version oder ähnliches zu erhalten.

Um mir noch ein bisschen Objektivberatung geben zu lassen, habe ich mich dann heute in den kleinen Fotoladen meines Vertrauens begeben, wo die Kamera überraschenderweise günstiger als bei Amazon angeboten im Schaufenster stand. Also nicht lange gefackelt und das Maschinchen mit samt nötigem Mindestzubehör (Displayschutzfolie, 4GB SDHC-Karte, Kameratasche) erstanden.

Nach einem ersten Tag ausprobieren (tollste Gelegenheit hierzu bot heutiges Grillen im Stadtpark) kann ich sagen, dass die Kamera echt ein klasse Gerät ist! Der Mehrwert D-SLR ist bereits trotz nur primitiver Versuche deutlich spürbar. Allerdings bietet die 550D naturgemäß so viel Einstellungsmöglichkeiten, dass es einige Zeit dauern wird, bis ich vollkommen mit dem manuellen Modus zurechtkommen und damit gute Ergebnisse erzielen werde. Bis ich diese Mächtigkeit also voll ausreizen kann, werde ich erst einmal die zahlreichen automatischen Hilfestellungen in Anspruch nehmen und dann nach und nach die Schritte bis hin zum völligen Beherrschen des Werkzeugs nehmen.

Wer von euch fotografiert, vielleicht sogar mit einer D-SLR? Wie habt ihr die ersten Schritte gemacht?


Wieso ich mir kein iPad holen werde

Auch wenn viele stark daran zweifeln und es vielleicht einfach nicht einsehen möchten: Mit dem iPad ist Apple ein großer Wurf gelungen – zumindest für den Moment. Unabhängig davon, ob man für sich das Gerät haben möchte oder nicht – die Zahlen sprechen zur Zeit eine deutliche und für Apple erfreuliche Sprache.

Auch ich war versucht, endlich mal ein Early Adopter zu sein und die Tafel Ende des Monats direkt in den Händen halten zu können. Das iPad, ein meiner Meinung nach tolles Gerät, allerdings hauptsächlich für eine Sache: Konsumieren.

Mit 11 Stunden Akkulaufzeit stehen Nachmittagen im Bett, an denen gesurft, gelesen, gestöbert, gespielt, Video und Film geschaut wird, nichts mehr im Wege.

Aber das ist der Knackpunkt: Ich möchte statt zu konsumieren lieber in die andere Richtung aktiv werden. Content schaffen und pushen statt nur zu pullen. Kreativ produzieren statt passiv zu konsumieren.

Schreiben, Programmieren, Gestalten, Zeichnen, Filmen und Fotografieren. Alles Dinge, in denen ich meine Zeit wertvoller investiert sehe als im puren Aufsaugen von Informationen (und Nichtinformationen).

Was ich stattdessen viel lieber kaufen möchte ist eine digitalen Spiegelreflexkamera. Fotografie fasziniert. Die Möglichkeit, Geschichte und Ausdruck eines Augenblicks in einem Bild festzuhalten und das kreative Spiel mit der Technik begeistern mich. Statt meiner popligen Kompaktkamera wird demnächst also hoffentlich ein neuer digitaler Wunderling in meinen Händen liegen, zum Beispiel die Canon EOS 550D, die obendrein eine tolle HD-Videofunktionalität bietet.

Und deshalb werde ich mir kein iPad kaufen.


Meine erste Android App

Seit einigen Wochen bin ich stolzer Besitzer eines Android Phones (dem Motorola Milestone). Als programmierendes Spielkind wollte ich da natürlich sofort ausprobieren, wie man für das Gerät Software Apps schreiben kann.

Irgendwo hatte ich gehört, dass Python und andere Skriptsprachen auf dem Gerät laufen. Hierfür stellt Google das Android Scripting Environment (ASE) bereit. Eine tolle Sache, mit der man in Python direkt auf dem Gerät die API des Phones und die komplette Python-Standard-Library ansteuern kann. Enorm klasse wenn einem in der Bahn mal langweilig ist und man die tolle Hardwaretastatur des Phones ausreizen möchte. Zur ASE folgt aber vielleicht demnächst ein Beitrag.

Alles was man braucht um eine richtige App zu schreiben sind Java-Kenntnisse sowie ein bisschen XML-Wissen. Also nahm ich mir letztes Wochenende vor, statt des sonst obligatorischen “Hello World” mal ein kleines “Tic Tac Toe”-Spiel vom GUI-Bauen über die Implementierung der Funktionalität bis zum Installieren auf dem Phone komplett durchzugehen. Erstaunlich schnell war ich damit auch fertig, trotz einiger schusseliger Fehler, denen ich mit dem Debugger auf die Schliche kommen musste habe ich insgesamt keine 4 Stunden da hinein gesteckt. Der Debugger ist übrigens hervorragend: Man kann interaktiv über Eclipse in den auf dem Emulator (oder sogar auf dem echten Handy!) laufenden Code debuggen. Großartig.

In gewohnter Google-Manier zeigt sich für potenzielle Android-App-Entwickler ganz deutlich, dass Google mitgedacht hat: Aktuelle Handyplattformen sind nur so viel wert, wie sie Möglichkeiten bieten, die Funktionalität der Grundsoftware beliebig zu erweitern.

Alle zur Entwicklung nötigen und hilfreichen Softwareprodukte sind Open-Source und plattformunabhängig: Der Emulator für den PC, die mitgelieferten Android Development Tools (ADT) und das super ADT-Plugin für Eclipse. Wer eine App schreiben möchte findet eine vorbildliche Doku von Google selbst, sowie unzählige Tutorials von Leuten, die genau die gleichen Software-/Hardware-Konstellationen wie man selbst haben (bei mir das Motorola mit Android 2.0 und einem Ubuntu 9.10 als Entwicklungsplattform).

Für Interessierte habe ich das Projekt mal hochgeladen, Dokumentation braucht ihr erst gar nicht zu suchen und wer Bugs findet darf sie behalten. TicTacToe Android (Java Source als ZIP)


GUI Programmierung in Prolog

Es passiert immer wieder: Man stößt auf eine Programmiersprache die “irgendwie cool” ist, und mit der es Spaß macht, kleine Sachen zu schreiben. Spätestens nach ein paar ersten Gehversuchen möchte man dann aber mehr, am liebsten natürlich etwas Grafisches (oft gibt man es ungern zu, aber insgeheim wissen wir doch alle dass EyeCandy rockt). So ist mir mit Prolog ergangen.

Mittlerweile bin ich aber so weit, auch erste GUI-Erfahrungen zu haben. Damit es anderen vielleicht leichter fällt, werde ich hier eine kleine Einführung in GUI-Programmierung mit Prolog geben.

Zuerst einmal wäre es praktisch, wenn du ein wenig Erfahrung mit Prolog hättest. Dennoch funktionieren die folgenden Beispiele auch ohne weitergehende Kenntnisse in logischer Programmierung.

Getting things up and running

Im Folgenden arbeiten wir mit XPCE, Windows- und Mac-User laden sich ein Stable-Release herunter , unter Ubuntu landet alles was du benötigst mit einer Zeile auf deinem System

sudo aptitude install swi-prolog swi-prolog-xpce

Per Aufruf von “xpce” startest du die interaktive Prolog-Shell. Die folgenden Befehle kannst du einfach der Reihe nach in die Shell eingeben, Pro-Tipp ist das Anlegen einer .pl Datei die in der Shell geladen wird. Dazu aber erst im nächsten Beispiel.

Das erste Beispiel

new(@dialog, dialog('Hello World')).
new(@button,button('Moin!',message(@prolog,write_ln,'Hello World') ) ).
send(@dialog,append(@button)).
send(@dialog,open).

Ausprobieren. Klappt? Gut. Klappt nicht? Nicht gut, melde dich mal in den Kommentaren. Oder schau erstmal, dass du alles richtig abgetippt hast (Punkte am Ende jeder Zeile nicht vergessen!).

Was XPCE zusätzlich zur logischen Programmierung liefert, sind Objekte. Diese werden mit new() erzeugt, wobei sie einen von uns gewählten Namen bekommen (@dialog). Der zweite Parameter von new() enthält den Konstruktor-Aufruf, welcher weitere Parameter enthalten kann. Bei button(‘Moin!’,message(@prolog,write_ln,’Hello World’) zum Beispiel zuerst eine Beschriftung (“Moin!”), sowie ein XPCE-Codefragment, das bei Klicken des Buttons ausgeführt werden soll. In unserem Fall ist dies das Senden einer Nachricht an das @prolog-Objekt. Dieses Objekt ist vordefiniert, und erlaubt uns, aus XPCE wieder Prolog-Code aufrufen zu können. In usnerem Beispiel soll write_ln mit dem Parameter “Hello World” aufgerufen werden.

Was man wissen muss

Prolog ist eine Sprache, die das Paradigma der Logischen Programmierung verfolgt. Anders als in imperativen Sprachen wie Java, C, Php oder Konsorten schreibt man keine Anweisungen, sondern definiert Fakten und Regeln, über die der Interpreter dann Schlüsse ziehen kann. Hierdurch lassen sich mit wenig Aufwand komplexe logische Zusammenhänge beschreiben. Gerade in Bereichen wie der künstlichen Intelligenz oder regelbasierten Spielsystemen (wie Schach und andere Brettspiele) zeigen sich die Stärken von Prolog.

Die Kehrseite der Medaille ist, dass existierende Systembibliotheken (GUI wäre da nur ein Beispiel) imperativ und funktional arbeiten. Um solche Funktionalitäten zu nutzen muss man sich daher für einen Mittelweg entscheiden.

XPCE stellt dafür Objekte bereit, mit denen man in Prolog-Syntax kommunizieren kann. Flexibilität wie zum Beispiel Richtungsunabhängigkeit geht hierbei leider verloren. Dafür laufen mit XPCE entwickelte GUIs plattformunabhängig und mit wählbaren Look&Feels.

Die wichtigsten XPCE Befehle sind new() zum Erzeugen eines Objektes, send() zum Senden von Nachrichten an Objekte, get() zum Abfragen des Objektzustandes und free() zum Entfernen von Objekten.

Ein komplexeres Formular

Lege die folgende Datei an, nenne sie meinetwegen formular.pl

newgame:-
    new(D,dialog('New Game')),
    send_list(D,append,
    [
    new(Name,text_item('Player Name')),
    new(Race,menu(race,cycle)),
    new(NumberOfPlayers,int_item('Number of players',low:=1,high:=10)),
    new(Ok,button('OK'))
   ]),
   send_list(Race, append, [wizard,warrior,elb]),
   send(D,open).

In deiner XPCE-Shell lädst du das externe Skript über “consult(formular.pl).” oder über “[formular].” (ohne Dateiendung .pl!) und startest dein Programm über den Prädikatsaufruf “newgame.” Was hier jetzt neu sind, sind noch ein paar Formularelemente (text_item, menu, int_item) sowie das praktische send_list Prädikat, das ermöglicht, viele Argumente zu einer Liste zusammenzufassen wenn diese zum Beispiel an das gleiche Objekt gesendet werden sollen.

Lasst uns malen

Natürlich kann man mit XPCE auch Grafiken erstellen. Simple zweidimensionale Objekte wie Kreise und Rechtecke sind ebenso machbar wie Bezierkurven oder das Einbinden von Grafiken.

gfx:-
 new(P,picture('Bunte Formen')),
 new(Box,box(100,100)),
 new(Circle,circle(100)),
 send(Box,fill_pattern,orange),
 send(Circle,fill_pattern,red),
 send(P,display(Box,point(10,10))),
 send(P,display(Circle,point(150,10))),
 send(P,open).

Wo lerne ich mehr?

Zugegebenermaßen gewöhnungsbedürftig ist die XPCE-Dokumentation (auch erreichbar mit “manpce.” aus der interaktiven Shell). Besser zu lesen, zu verstehen und auch mit vielen Beispielen versehen ist der XPCE Userguide (PDF 2MB).

Mit den Möglichkeiten von XPCE stößt man aber auch schnell an die Grenzen, vergleichbar mit modernen GUI-Bibliotheken wie Qt und ähnlichen kann XPCE bei weitem nicht mithalten. Dennoch ist es toll, mit wenig Aufwand einfach Oberflächen für die eigenen Prolog-Programme erstellen zu können. Ich wünsche euch viel Spaß dabei!


Hallo ich bin der Neue

Was ist denn hier los? Ein Blog, neu, und nur ganz blöd auf worpress.com gehostet?

Ein bisschen Erklärung findet sich auf der About-Seite. Lest mit oder lasst es. Ich empfehlen allen Nerds ersteres, dem Rest sei vor Konsum der Einträge das Zurateziehen der Packungsbeilage oder eines Arztes empfohlen.

Page 24 of 24« First...10...2021222324