Die Stadt (Hörspiel)

Im vergangenen Semester habe ich versucht ein wenig über den Tellerrand eines Informatikstudiums zu schauen und mich in einer kleinen Projektarbeit mit Sounddesign beschäftigt. Meine Kommilitonin Raphaela Butz und ich, haben uns daran versucht als Klausurleistung eine Kurzgeschichte als Hörspiel zu vertonen.

Als Vorlage diente uns die Geschichte “die Stadt“, der Autorin Selita Telli. Sie wurde im Jahre 2006 veröffentlicht und ist unter anderem in der Sammlung “der Mann, der vergewaltigt wurde” (ISBN: 3980933687) des Dr. Ronald Henss Verlags, abgedruckt.

Als Sprecher für das Hörspiel konnten wir Mario Pitz von der Musikhochschule Stuttgart gewinnen. Bei der musikalischen Untermalung half uns Andreas Brandt, der Klavier und Streicher für das Projekt beisteuerte. Alle Aufnahmen entstanden in den Produktionsstudios des Hochschulradio Stuttgarts (horads) in der HdM. An dieser Stelle, noch einmal vielen Dank an alle Beteiligten.

Die Entstehung der Produktion, unsere Überlegungen und die einzelnen Arbeitsschritt, sind in der angehängten Präsentation zu finden. Außerdem sind dort auch verschiedene Soundbeispiele, mit zahlreichen AB-Vergleichen (vorher/ nachher) zu hören.

Download: die Stadt (ca. 9 MB, mp3)

Download: die Stadt – Präsentation (ca. 17 MB, Flash)

Beste Grüße, Thomas Uhrig.

Reflections in Java: “private” umgehen

Eine angemessene und gesunde Selbstreflexion ist ja von Zeit zu Zeit eine schöne Sache. Man sollte sich schließlich selbst kennen und einschätzen können. Ähnlich sieht es bei Code aus. Und auch wenn Java nur sehr eingeschränkte Mittel für Reflections beinhaltet – z.B. im Verglich mit Smalltalk – hat mich der Vortrag zweier Kommilitonen doch ein wenig zum experimentieren gebracht. Anbei ein paar Zeilen Code, mit denen man sehr schnell und einfach das Sicherheitskonzept hinter Java und dem Schlüsselwort private umgehen kann:

Unsere Beispielklasse, aus der wir ein privates Attribut auslesen wollen, welches in einem privaten Konstruktor initialisiert wird:
package inspector;
public class Geheimnis{
private String geheimnis;
private Geheimnis(){
geheimnis = "Ich heiße Rumpelstilzchen!";
}
}

Als erstes holen wir uns ein Objekt der Klasse (keine Instanz!). Die Klasse einer Klasse, ist die Klasse “Class” (Meta-Klasse). Somit haben wir ein Objekt an der Hand, welches die Klasse repräsentiert:
Class c = Class.forName("inspector.Geheimnis");

Nun können wir relativ einfach Attribute, Methoden und Konstruktoren auslesen, auch private:
Constructor[] constructors = c.getDeclaredConstructors();
Field[] fields = c.getDeclaredFields();
Method[] methods = c.getMethods();

Wenn wir die Arrays auf der Console ausgeben, sehen wir die qualifizierten Namen der einzelnen Methoden und Attribute.Wir sehen auch den privaten Konstruktor und das private Attribut welches wir auslesen wollen.  Als nächstes schalten wir das Schlüsselwort “private” aus:
constructors[0].setAccessible(true);
fields[0].setAccessible(true);

Damit haben wir es eigentlich schon geschafft. Wir halten ein Objekt in der Hand, dass unsere Klasse repräsentiert. Darin haben wir das Schlüsselwort “private” ausgeschaltet und können uns nun Instanzen erzeugen und mit dem eigentlich geheimen Attribut tun und lassen was wir wollen:
//Wir können nun Objekte erzeugen...
Geheimnis g = (Geheimnis) constructors[0].newInstance(null);
//...das private Attribut auslesen...
String unbekannt = (String) fields[0].get( g );
//...und ändern:
fields[0].set(g, "Ich heiße König Käse!");

Beste Grüße, Thomas Uhrig.

Decorator & Fassade (Desing Patterns)

Zu Beginn dieses Semesters habe ich in der Vorlesung “Design Patterns” (Professor Walter Kriha), die Entwurfsmuster Deocrator und Fassade vorgestellt.

Decorater & FassadeDecorator und Fassade sind zwei Strukturmuster der sogenannten “Gang of Four“, den Vätern der Design-Patterns.

Der Decorator beschreibt einen Lösungsweg, dynamisch zur Laufzeit Eigenschaften zu einem Objekt hinzuzufügen. Dies wird über ein einheitliches Interface realisiert, welches jede Komponente und jeder Dekorierer implementiert. Außerdem hält ein jeder Dekorierer einen Verweis auf eine konkrete Komponente bzw. einen weiteren Dekorierer. So können beliebige Ketten von Eigenschaften und Methoden erstellt werden.

Die Fassade stellt eine Möglichkeit vor, den Zugriff auf ein komplexes Subsystem von Objekten zu kapseln. Ähnlich dem Eingang eines Gebäudes, stellt sie einen zentralen Zugang zu dem Subsystem bereit. Dabei können bei Bedarf auch Sicherheitskontrollen oder ähnliches, in der Fassade implementiert werden (vgl. Proxy-Pattern).

Download: Decorator & Fassade

Beste Grüße, Thomas Uhrig.

Gelesen: Oracle 9i für Einsteiger

Oracle ist eines der weltweit größten Softwareunternehmen und Marktführer im Bereich der Datenbanken. In den meisten Informatikstudiengängen kommt daher einmal der Zeitpunkt, sich mit der Oracle Datenbank näher auseinander zu setzen.

Oracle 9i für Einsteiger - BuchcoverWelche Prozesse laufen im Datenbankenbetrieb ab? Was ist ein Redo-Log? Wie geht Oracle mit Transaktionen um? Was ist PL/SQL?
All diesen Fragen versucht “Oracle 9i für Einsteiger” (Hanser Verlage 2002, ISBN 3-446-21921-8) auf den Grund zugehen. Das handliche Einsteigerwerk von M. Abbey, M. Corey und I. Abramson erscheint dabei als autorisierte deutsche Ausgabe der Oracle Press.

Anfangen bei der Geschichte der Datenbank, über typische “Objekte” und Terminologien, bis hin zu Datawarehousing, deckt dieses Buch auf knapp 500 Seiten ein breites Basiswissen ab. Für eine Datenbanken 1, 2 oder sogar 3 Vorlesung allemal genügen Stoff. Das Buch ist dabei relativ verständlich Geschrieben und liest sich fast durchweg angenehm. Es werden Code-Beispiele gegeben, sowie Kontrollfragen zu jedem Kapitel. Ein zuerst guter Eindruck also.

Das Problem an dieser “deutschen Exklusivausgabe” – wie es auf dem Buchdeckel zu lesen ist – ist die mehr als nachlässige Übersetzung:

Seite 219:

Wie viele Zeilen besitzt die Dual-Tabelle?

A. Keine

B. Keine

C. …

Seite 339:

Die DAzugehörige Antwort findet sich in Anhang A.

Seite 368:

Bei Oracle 9i versteht man unter einer Fat Table unserer Meinung nach eine Tabelle mit mehr als zwei Dutzend Zeilen. Derzeit kann eine Tabelle maximal 1000 Spalten enthalten…

Solche Fehler sind zwar verzeihlich (kaum einer wird an eine Fat Table denken, wenn er eine Tabelle mit 24 Einträgen vor sich hat), aber spätestens beim vierten, fünften oder sechsten stören sie erheblich. Ähnlich verhält es sich mit den zahlreichen Formatierungsfehlern der Code-Beispiele (falsches Highlighting, verwirrendes Einrücken und wahllose Klammern). Wenn dann noch Kapitel 2 bevorsteht, in dem über mehrere Seiten hinweg erklärt wird was eine Newsgroup, ein Forum oder eine Kundenhotline ist, steigt langsam Ärger auf:

Stellen Sie sicher, dass der Support Service die korrekten Kontaktinformationen der Person erhält […]. Falls Sie zeitweise unter einer anderen Telefonnummer oder E-Mail-Adresse zu erreichen sind, brauchen Sie sich hinterher nicht beschweren, dass Sie nicht kontaktiert wurden.

[…] Also – bleiben Sie mit Ihren Erwartungen auf dem Boden und haben sie einfach Geduld.

Bedenkt man, dass dieses Buch als Neuerscheinung rund 70 € gekostet hat (ich habe günstig bei eBay erworben), ist es eine Frechheit. Zumal auf dem Buchcover groß und viel versprechend das Oracle Logo und die Worte “Official Authorized” prangen.

Fazit: Hat man die Möglichkeit dieses Buch günstig (vielleicht gebraucht bei eBay oder Amazon) zu erstehen, ist es eine lohnende Investition. Es gibt eine schnelle und Angenehme Einführung in das Thema Oracle – vielleicht gerade wegen den zahlreichen Tipp- und Schreibfehlern. Für den enormen Originalpreis aber, ist dieses Buch mehr als ärgerlich.

Beste Grüße, Thomas Uhrig.

Einführung in Smalltalk

Im Laufe des vergangenen Semesters (WS09/10), habe ich eine Einführung in die Programmiersprache Smalltalk gegeben. Die Präsentation war im Rahmen einer Vorlesung “Aktuelle Programmiersprachen” – wobei das “aktuelle” nicht unbedingt wörtlich zunehmen ist.

Die Grundidee war dabei, dass die Studenten im laufe eines Semesters einen groben Einblick, in den Markt der Programmiersprachen bekommen. Wöchentlich wurden so ein bis zwei Sprachen, Frameworks oder Programmierparadigmen von Studenten aus unterschiedlichen Semestern präsentiert. So entstand auch dieses, ca. 30 minütige Rundumschlag, in Sachen Smalltalk-Basics.

Die Präsentation rollt dabei die Geschichte, die Idee hinter der Sprache (in erster Linie!) und Ausschnitte aus der Syntax auf. In Anbetracht der engen Zeitvorgabe, ist dies jedoch nicht mehr als ein Kratzen an der Oberfläche. Wer jedoch Objektorientierung von Grund auf verstehen möchte, sollte diese Präsentation vielleicht als Anstoß nehmen, sich mit Smalltalk näher auseinander zu setzen.

Download: Smalltalk – Geschichte, Idee und Syntax

Beste Grüße, Thomas Uhrig.

Hello world!

Hello World!” – das habe ich in den vergangenen zwei Jahren nun schon des öfteren gehört. Meistens zu Beginn eines neuen Semesters und versehen mit verschiedensten Vorzeichen:
printf("Hello World!n");
System.out.println("Hello World!");
Transcript show: 'Hello World!'.
print "Hello World!"

Nun also auch von WordPress. Danke schön. Informatikerkrankheit. Nächster bitte. Dabei wollte ich vom “Bloggen” eigentlich tunlichst die Finger lassen. Blogs sind meistens banal, unübersichtlich und langweilig. Dieser macht da sicherlich keine Ausnahme – warum sollte er auch.

Was ich mit dieser kleinen Seite will, ist relativ einfach. Ich möchte einen kleinen Zugang in Sachen “Webentwicklung” finden, einmal versuchen “Medien zu machen” anstatt nur Medien zu studieren und von Zeit zu Zeit kleiner Projekte veröffentlichen. Und zu guter Letzt, wohl noch der ehrbarste Grund: Ich möchte die EDV-Beratung Uhrig im Google-Page-Rank überholen.

Beste Grüße, Thomas Uhrig.