Warning: Constant ABSPATH already defined in /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-config.php on line 28 Development-Blog von Florian Oeser

Projekt: radioSiTY

6. Juni 2008 – 17:02

Einleitung

Projekt radioSiTY bezeichnet das 2. größere Projekt was von uns während des Studiums konzipiert und erstellt wurde. Dabei handelt es sich um eine Web-Stream-Plattform, die während des 4. Semesters in der Veranstaltung Multi-Media Engineering 2 entwickelt wurde.
Zunächst ersteinmal zwei Bilder, damit ihr eine Vorstellung von der GUI bekommt.

radio1

radio2

Die Anwendung

Mit dieser Anwendung ist es möglich AOL- und Shoutcastsstreams zu hören. Zu jedem Sender kann man sich aktuelle Informationen über den Sender selbst, den Song der gerade gespielt wird und noch viele andere Sachen anschauen. Es ist weiterhin möglich die Sender zu bewerten und zu kommentieren. Dies ist aber erst möglich sobald man sich erfolgreich registriert hat. Genauere Informationen und noch mehr Bilder findet ihr auf dem Blog meines Mitentwicklers Michael Palmer.

Die Applikation ist unter folgender URL zu finden: http://62.75.209.120/radio/#

Umsetzung/Probleme

Für unsere Entwicklung haben wir uns einen vServer gemietet, auf dem die aktuelle Version vorliegt. Leider muss man sagen das unsere Anwendung diesen sehr schnell in die Knie zwingt und keiner Dauerbelastung stand hält. Das liegt daran das wir gerade einmal 512MB Flex-Ram zu Verfügung haben und alleine der FDS-Tomcat uns davon beim Starten ~350MB ‚klaut'(JVM). Wir mussten uns eigentlich auch schon einem ‚Trick‘ (siehe Conclusion) bedienen um den Tomcat überhaupt starten zu können. Das heißt um unsere Applikation eigentlich vernünftig zu hosten wäre ein vServer/RootServer mit mindestens 1GB Ram erforderlich. Leider haben wir nicht das benötigte Kleingeld dafür! Bitte habt somit Verständniss dafür, dass die Applikation keiner Dauerbelastung standhält und es durchaus sein kann das der Server irgendwann nicht mehr antwortet 🙁

Weitere Probleme ergaben sich mit dem Auslesen der Streaminformation bzw. dem generellen Abspielen, der Arbeit mit Flex insbesonderen mit einem strukturierten Aufbau mit mehreren mxml’s, AS3 Klassen und Events. Ein größeres Problem ergab sich zunächst auch mit der Arbeit um Hibernate bei dem viel Zeit verloren gegangen ist. Schuld war hier ran das wir nicht auf dem Server direkt unsere Klassen kompilierten und es folglich immer zu unschönen ‚Can’t find destination‘ Fehlern kam. Die Lösung bemerkten wir erst als wir uns wieder dem Datenaustausch zwischen Frontend und Backend via RPC’s zuwanden, wo wir zunächst vor dem selben Problem standen. Eine genauere Beschreibung des Problemes und ein kleines HowTo zu der Arbeit mit Flex und Hibernate auf dem FDS-Tomcat werde ich in nächster Zeit bloggen.

In diesem Projekt haben wir Papervision 2.0 für die Slideshow und die BassBox verwendet. Die komplette GUI wurde mit Flex selbst gestaltet. Für die Datenhaltung haben wir MySQL und JDBC verwendet. Eigentlich wollten wir das komplette Datenmanagement mit Hibernate und dem Flex LiveCycle umsetzten. Bedingt durch die anfänglichen Probleme in der Richtung, haben wir aber angefangen ein Teil davon über Servlets zu lösen. Mittlerweile sind aber auch Elemente wie zum Beispiel die Kommentar- und Bewertungsfunktion über Hibernate und RPC umgesetzt.

Wir sind sehr froh dieses Projekt sogar relativ zeitig vor dem Zeitablauf beendet zu haben und konnten ausserdem wieder eine Menge dazugelernen. Insbesondere ich konnte, dadurch das ich mich um das Backend und den Webserver gekümmert hatte, wieder viel in einer Disziplin dazulernen in der ich nicht so erfahren bin!

Da es sich um Studienprojekt handelt möchte ich euch noch das Pflichtenheft zur Verfügung stellen. Es wurde nach den Richtlinien von Heide Balzert erstellt und enthält auch eine OO-Analyse des Projektes. Dies soll lediglich als Anregung dienen und es gibt logischerweise kein Anspruch auf Richtigkeit/Vollständigkeit!

Pflichtenheft + OO-Analyse (.pdf, 373KB)

Techniken:

  • Flex/AS3
  • FDS-Tomcat (Webserver)
  • MySQL über JDBC
  • Papervision 3D 2.0
  • RPC Dienst des Adobe Live Cycle Data Services (LCDS)
    • HTTP Service (Servlets)
    • RemoteObjects (Hibernate)
  • persitente Datenhaltung via Hibernate (Java)
  • Verwendung des MVC-Modell 2 Frameworks

Flash CS3 / fscommand / UNC Paths

6. Juni 2008 – 01:33

Bei der Entwicklung an Projekt RingRong kam es zu einem spezifischem Problem beim Laden einer externen Anwendung(*.exe/*.bat). Ich blogge das in der Hoffung das mehr Leute, die das selbe Problem haben, schneller die Lösung finden, da die Problemlösung zumindest damals sehr schwer zu finden war.

Seit Flash CS3 ist es nicht mehr Möglich unter Win2k/XP/Vista *.exe Dateien zu starten. Grund dafür ist das intern nicht mehr mit DOS-Pfaden, sondern mit UNC-Pfaden gearbeitet wird.
Ich brauche auch gar nicht mehr dazu sagen, da alles in folgenden Link beschrieben ist. Und die passende Lösung dazu gibt es hier!

Viel Erfolg!

Projekt: RingRong

5. Juni 2008 – 23:52

Einleitung

Das Projekt RingRong war für uns das erste große Projekt während des Studiums. Konzipiert und entwickelt wurde es während des 3. Semesters im Fach Multimedia Engineering I. Das Team bestand aus zwei Programmieren(Michael Palmer und ich), einem Grafiker(Martin Schmidt) und einem Modeller(Thomas Vogel), welcher ebenfalls für das zauberhafte Intro zuständig war. Insgesamt hatten wir rund vier Monate Zeit eine Multimediaanwendung zu entwickeln. Wir haben die Zeit komplett ausgereizt und haben eine sehr schönes Projekt abgeliefert, was jedem von uns viel abverlangt hat. Es ist komplett mit Flash CS3/AS3 und Papervision3D 1.5 realisiert.

Zunächst erst einmal ein paar Bilder und der Download damit das hier nicht alles so trocken wird 😀

ringrong_1

ringrong_tutorial

Die Anwendung

Das Projekt hat einen rein fiktiven Inhalt. Es dient der Vermarktung von Robotern, die so natürlich nicht existieren. Hauptteil ist der Baukasten, indem man sich nach Lust und Laune einen eigenen Roboter zusammen bauen kann. Weiterhin kann man den Roboter mit Upgrades ausstatten wie beispielsweise dem SecuritySystem. Aber schaut lieber selbst und entdeckt alle Features im Alleingang. Ihr werdet es nicht bereuen. Selbst ich schau es mir hin und wieder noch an und werd schon beim Intro schwach 😀

Umsetzung/Probleme

Meine konkrete Aufgabe war die Erstellung der ‚Tutorialapplikation‘ und einige Nebenläufigkeiten wie die Bildergalerien.

Es gab viele mehr oder minder große Probleme. Das größte war sicherlich unser massives Speicherproblem und die Performance. Ersteres konnte zum Glück gelöst werden. Die Perfomanceprobleme haben einfache Ursachen. Zum einen wird AS3 interpretiert und nicht kompiliert. Ausserdem greift Flash auch nicht auf die Grafikkarte zum Rendern zurück(in Flash10 soll dies jetzt möglich werden :-)). Desweiteren steckte pv3D noch fast in den Kinderschuhen mit der Version 1.5. Nunmehr ist pv3D v2.0 errschienen was durch verbesserte Renderarchitektur und Sachen wie Frustrum Culling auch einiges an Performance wieder gutmacht. Leider was es zu spät noch auf diese Version umzusteigen. Man brauchte also schon ein DualCore um bei der Tutorialapplikation auf rund 20 FPS zu kommen 😀

Trotzdem sind wir alle sehr froh dieses Projekt so gut umgesetzt zu haben. Wir haben viele Nächte zum Tag gemacht aber es hat sich gelohnt. Mal vom Lerneffekt und der Erfahrung mal ganz abgesehn 😀

Weitere Informationen und den Download findet ihr im Blog von Michael Palmer!

Techniken:

  • Flash CS3 mit AS3
  • Papervision3D 1.5
  • Maya
  • AfterEffects
  • Photoshop 😉

HowTo: BlazeDS/FDS-Tomcat Installation auf Linux

5. Juni 2008 – 17:46

Einleitung

In diesem HowTo möchte ich euch zeigen wie man den BlazeDS/FDS-Tomcat auf einem Linuxsystem installiert. Für unser Projekt radioSiTY haben diese Server auf einem SuSE Linux 9.3 aufgesetzt, jedoch dürften fast alle Schritte auch auf einer anderen Distribution laufen.

Was brauchen wir:

Installation und Systemanpassungen

Ich habe mich bei dem JDK für das *.rpm.bin Package entschieden. Um das JDK zu installieren sind zwei Schritte notwendig. Zuerst mit ’sh‘ das Skript ausführen.

sh jdk1.6.0_06-rpm.bin

Den Lizenztext mit ‚yes‘ bestätigen.

Danach einfach mit dem Programm ‚rpm‘ das Packgage installieren.

rpm -i jdk1.6.0_06-linux.rpm

Das JDK wurde nun in /usr/java/j2sdk1.4.0/ installiert.

Beide Server brauchen noch die Angabe wo das JDK und die JRE liegt(Classpath). Diese Angaben macht man mit ‚export‘. Da standartmäßig diese Variablen nach einem Neustart wieder auf default zurückgesetzt werden, ist es ganz praktisch diese in der ‚profile.local‘ anzulegen. Diese Datei wird beim Anmelden am System aufgerufen. Weiterhin ist zu erwähnen das die beiden Server nicht parallel mit einem anderen Webserver laufen. Da bei vielen Servern der Apache vorinstalliert ist muss dieser natürlich auch vorher noch gestoppt werden. Dies erledigen wir ebenfalls gleich mit in der ‚profile.local‘. Die Datei könnte dann so aussehen:

### CHANGES TO RUN FDS-TOMCAT/BLAZEDS  ###
echo
echo Changes made to run fds-tomcat. view conf under /etc/profile.local

export JRE_HOME=/usr/java/jdk1.6.0_06/jre
echo JRE_HOME now @ $JRE_HOME
export JAVA_HOME=/usr/java/jdk1.6.0_06/
echo JAVA_HOME now @ $JAVA_HOME
echo
echo must shutdown the apache otherwise fds-tomcat/blazeds would not run!
rcapache2 stop
echo

Hier muss ich sagen das der Befehl ‚rcapache2 stop‘ und alle anderen rc’s nur unter SuSE funktionieren. Unter anderen Distributionen kann man dies aber wie folgt tun:

/etc/init.d/apache2 stop

Alternativ hat man natürlich eh die Möglichkeit Apache beim Systemstart gar nicht erst zu starten indem man die runlevel-confs bearbeitet. Dort könnte man auch einstellen das der BlazeDS/FDS-Tomcat beim Booten gestartet wird.

Installation und Konfiguration der Server

Nun den BlazeDS/FDS-Tomcat in ein beliebiges Verzeichnis mit ‚unzip‘ entpacken. Zum Beispiel so:

unzip fds-tomcat.zip /home/fds

Jetzt sind wir schon fast am Ziel. Was noch fehlt ist, das wir die Skripte die die Server starten/stoppen, mit ‚chmod‘ ausführbar machen. Bei BlazeDS muss ausserdem das Skript was die Datenbank startet ausführbar gemacht werden.

BlazeDS:

chmod + x blazeds/sampledb/startdb.sh

chmod + x blazeds/tomcat/bin/catalina.sh

chmod + x blazeds/tomcat/bin/shutdown.sh

FDS-Tomcat:

chmod + x fds-tomcat/bin/catalina.sh

chmod + x fds-tomcat/tomcat/bin/shutdown.sh

Jetzt kommt der große Moment 😀

Zum Starten des FDS-Tomcat’s ruft ihr folgenden Befehl auf:

sh catalina.sh run

Das Starten des BlazeDS erfolgt analog dazu, jedoch muss man erst die Datenbank starten:

sh startdb.sh

Ob alles geklappt seht ihr am Ende der Ausgabe wenn angezeigt wird, wie lange der Server zum booten gebraucht hat. Ausserdem könnt ihr jetzt im Browser die jeweilige Startseite betrachten. http://localhost:8600/ für den FDS-Tomcat und http://localhost:8400/ für den BlazeDS.

fds_start

Für die Arbeit mit den beiden Server haben wir noch auf das praktische ’screen‘ Tool zurückgegriffen. Das ermöglicht zum Einen das der Prozess in den Hindergrund geschoben wird. Somit kann man die Putty-Sitzung beenden und der Server bleibt gestarten. Zum Anderen kann man mit [STRG+A]+C einen neuen Screen erzeugen indem man dann andere Sachen machen kann. Mit STRG+A kann man dann zwischen den einzelnen Fenstern wechseln.

Conclusion

Da beim Starten der Output relativ schnell von statten geht und die Server zu meist auch starten wenn es zu einer Exception kam, ist es ganz sinnvoll bei Problemen sich die Logfiles anzuschauen. Diese findet man im Ordner /logs. Entscheident ist dort die catalina.*.log und die localhost.*.log Datei.

Falls ihr beim Starten einen Fehler bekommt das die VM nicht genug Speicher allozieren konnte, habt ihr ein mehr oder minder großes Problem :-/. Dieses Problem hatten wir ebenfalls, da wir lediglich einen vServer mit 512MB FlexRam hatten. Das Problem mit dem Starten ansich lässt sich leicht umgehen. Dazu müsste ihr einfach in der ‚catalina.sh‘ relativ am Anfang den Wert von 512MB auf zum Beispiel 128MB setzten. Das eigentliche Problem ist aber damit nicht gelöst, da zum einem der Server langsamer läuft und auch keiner Dauerbelastung stand hält. Wir können da ein Lied von singen 😀

Das heißt als einzige Alternative würde nur ein vServer/RootServer mit mindestens 1GB Ram in Frage kommen. Zumindest haben wir keine andere Lösung gefunden.

Bei Fragen, Kritik und Anregungen könnt ihr mir gerne eine Mail oder ein Kommentar schreiben. Auch an distributionsspezifischen Änderungen wäre ich interessiert 😉

Papervision3D Workshop/Referat

5. Juni 2008 – 17:23

Im Rahmen unseres Projektes radioSiTY haben wir ein Referat mit anschließendem Workshop halten müssen. Das Thema war Papervision3D 2.0 und sollte einen groben Überblick über die Möglichkeiten von pv3D 2.0 und die Unterschiede/Vorteile zu pv3D 1.5 eröttern. Der Workshop gab den Teilnehmern die Chance ein kleines Basiswissen im Umgang mit pv3D zu erlernen. Es wurde gezeigt wie man pv3D in Flash und auch in Flex einbindet und damit arbeitet. Hervorheben möchte ich hier noch einmal die Canvas von meinem Mitentwickler Michael Palmer die zum Arbeiten mit Flex und pv3D benötigt wird.

Das Referat und den Workshop an sich möchte ich nun hier zur freien Nutzung veröffentlichen. Macht das beste draus ;-)

handout_workshop (.pdf, 63KB)

pv3d_2.0_referat (.pdf, 226KB)

flashpv3d_dateien (.zip, 3,7MB)

flexpv3d_dateien (.zip, 858KB)

Keine Garantie auf Richtigkeit/Vollständigkeit!