Startup mit dem Play Framework

Flattr this!

Wie einige vielleicht ja schon wissen beschäftige ich mich jetzt schon seit einige Zeit mit dem recht neuen, aber mittlerweile immer bekannterem, Java-basiertem Web-Framework Play!. Anders als bei vielen neueren Frameworks wird nicht durch die Mittel einer dynamischen Sprache, sondern durch die Vereinfachung der bestehenden Sprachmittel von java versucht die Entwicklung einer Web-Anwendung zu beschleunigen und zu vereinfachen. Das bedeuten unter anderem das konsequente Weglassen der bisherigen Package-Struktur. Auf der anderen Seite werden altbewährte Bibliotheken aus der Java-Welt verwendet (z.B. JPA, Hibernate, Lucene, usw.). Da es eine ganze Menge an englischsprachigen Tutorials gibt und ich mir schon länger vorgenommen habe in einem kleinen Tutorial die grundlegenden Züge einer Play!-Anwendung zu beschreiben, wird dieser Text mal wieder in Deutsch sein :-).

Play verwendet – wie fast alle aktuellen Web-Frameworks ein MVC-Pattern,

So sollte es einem Entwickler (egal ob Ruby, Java oder Python), der mit der aktuellen Techniken vertraut ist, relativ leicht fallen, sich mit dem typischen Aufbaue einer Play-Anwendung zurecht zu finden.

Die Installation des Frameworks ist auf der Seite des Projektes gut erklärt. Neben einer aktuellen JVM sind keine weiteren Vorausetzungen zu erfüllen. Wichtig ist nur, dass das “play” Script im aktuellen Pfad erreichbar ist.

Nachfolgend möchte ich eine kleine Bookmark-Verwaltung erstellen.

Mit einem

# play new bookmarks

Wird die Grundstruktur einer Play-Anwendung erstellt.

Folder Structure

Das oberste Verzeichnis enthält alle Modelle, Controller und Views der Anwendung (dazu später mehr). Unter “conf” befinden sich folgende Dateien:

– application.conf: Konfiguration der Anwendung – Art der DB, Caching, Konfiguration der Module
– dependencies.yml: Play unterstützt Module, die verschiedene Funktionen kapseln können. Seit Version 1.2 werden die Abhängigkeiten einer Anwendung durch Einträge in dieser Datei gesetzt.
– messages: Diese Datei wird für die Internationalisierung einer Anwendung benötigt (amerikanische Strings). Um eine neue Sprache hinzu zu fügen legt man eine neue Datei mit dem entsprechenden Ländercode an – z.B. messages.de für deutsch.
– routes: Play ermöglicht es, durch Einträge in dieser Datei, das Routing der Anwendung zu beeinflussen. Es erfolgt ein Mapping von URL auf Controller-Actions (dazu später mehr).

Das lib Verzeichnis kann verwendet werden um Java Libs zu verwenden, die nicht als Modul für Play! zur Verfügung stehen. Alle Jars im libs-Verzeichnis werden automatisch in den Classpath der Anwendung aufgenommen.

Das test Verzeichnis enthält die die Testdateien (Junit-/Selenium-Tests sowie ew. Fixures mit Testdaten).

Nach dem ersten Start der Anwendung werden noch zwei weitere Verzeichnisse erstellt:
Ein tmp-Verzeichnis (welches die kompilierten Klassen, sowie Caching Dateien enthält) und ein
db-Verzeichnis, welches bei der Wahl einer h2 Datenbank, die entsprechende Datenkbankdatei enthält (auch dazu später mehr).

Dies soll für die ersten 5 Minuten genügen :-).

Praktika und die 20%

Flattr this!

Für alle, die es mal immer wissen wollten, hatte ich vor einiger Zeit mal angefragt (letztendlich wurde die Frage bei http://www.wikia.com gestellt):

Sehr geehrter Herr H.,

hiermit kommen wir auf Ihre Email vom 18.02.09 zurück.

Ihre Frage, warum wir gerade Tiernahrung von unserer 20% Aktion ausschließen, ist durchaus berechtigt. Dies kommt dadurch zu Stande, dass es zum damaligen Zeitpunkt, als wir diese Aktion erstmals beworben haben, rechtliche Probleme bei der Rabattierung dieser Produkte gab. Diese wurden zwar zwischenzeitlich überwunden, tatsächlich verhält es sich jedoch so, dass sich unser Werbeslogan nunmehr genau mit diesem Wortlaut in den Köpfen unserer Kunden eingeprägt hat und mittlerweile zum Kult wurde, so dass wir diesen nach wie vor beibehalten.

Wir hoffen Ihnen mit dieser Erklärung die gewünschte Begründung geliefert zu haben und verbleiben

mit freundlichen Grüßen / best regards

i. A. T. K.
Marketing
Servicebuero

Praktiker Bau- und Heimwerkermärkte AG
Am Tannenwald 2
D-66459 Kirkel

Good to know 🙂.

patch File for compiling storeGPU on Macos with CUDA 2.0

Flattr this!

I am currently working with a middleware-App Demonstration using Nvidia’s CUDA.
After some time i make the example to work on MacOS 10.5.

You will need:

CUDA SDK and Toolkit for MacOS (you need to add the kext driver manually when installing the Toolkit)

the StoreCPU Sources

 

If you try to compile the source you will get some errors like this:

 

    ./storeGPU.h:41:19: error: cutil.h: No such file or directory
        (you need to include your inc path)

    

    ld: library not found for -lcutil
        (you need to include your lib path)

 

    storeGPU.cu:491:19: error: macro “CUT_DEVICE_INIT” requires 2 arguments, but only 1 given

        (with version 2.0 of CUDA there is another CUT_DEVICE_INIT-Method)

    

    Undefined symbols:

    “sg_init()”, referenced from:

    run_md5_overlap_test()     in main.o

    run_sha1_overlap_test()     in main.o

        (here you need to add parameter to match with the new CUT_DEVICE_INIT-Call)

 

All Settings are done with the following Patch.

If your CUDE-SDK is installed in /Developer/CUDA  (normal setup path)

You may use the following patches to make the storeGPU-Demo to run:

storegpu-diff

WSC: our Team in Australia

Flattr this!

Here are some Links about our Solar car racing team that is currently taking part at the 20th world solar challenge from Darwin to Adlaide!
More infos about SolarWorld No1. The official Blog and the webblog of Ralf Zweering with some additional pictures.

And there is even a headline at heise.de!
I wish our team all the best. It is an incredible piece of technology. We are now at the 5th place!