Categories
Independent Coursework

Flex SDK 4.1 (FP 10.1 + AIR 2)

Bereits seit April 2010 gibt es das Flex SDK in der Version 4.1. Darin enthalten sind der FlashPlayer 10.1 und AIR 2. Die Pakete stehen bei Adobe zum Download zur Verfügung: Flex 4 Downloads .

Mit dem kompletten Paket ("Adobe Flex SDK") kann man in FlashBuilder (aka FlexBuilder) die neuen Funktionen des FlashPlayers und AIR nutzen. Und man muss auch nicht mehr unschön Dateien überschreiben oder nachträglich hinzufügen. Einfach einen neuen SDK Eintrag bei FlashBuilder machen.


Update:

Seit dem 01.07.2010 gibt es auch ein Update-Paket für FlashBuilder und auch ein finales SDK-Update. Den FlashBuilder 4.0.1 gibt es hier und das Flex SDK 4.1 Update hier.

Categories
Independent Coursework

Cairngorm 3 & Maven

Was für ein Krampf - dieses Maven!

Eigentlich wollte ich ja das open-source Framework Cairngorm, von Adobe, nutzen. Cairngorm soll, so wie eigentlich fast jedes Framwork, ein Fundament für ein hoch qualitatives Flex-App bilden. Nach einigem Lesen, macht es echt einen sehr viel versprechenden Eindruck auf mich.

Nun habe ich schon die alte Version zwei aus dem Jahr 1997 gesehen (also die Webseiten dazu, nicht den Code) und irgendwie habe ich erwartet dass es auch bei der Version drei aus diesem Jahr so sein wird, dass man einfach die Bibliotheksdatei (.swc) runterladen kann. Denkste! Nun wird alles in einem Maven Repository "bereit gestellt". Maven ist ein Projektmanagement-Tool. An sich eine tolle Sache - nur entweder verstehe ich das ganze nicht richtig und es funktioniert einfach nicht.

Maven ist dazu da um sicher zu stellen, dass ein Projekt alle nötigen Abhängigkeiten zur Verfügung hat. Man definiert Konfigurationsdateien und Maven besorgt sich dann benötigte Bibliotheken und der gleichen von Repositories. Weiterhin kann sich Maven darum kümmern Unittests durchzuführen, Code zu komplilieren und zu packen.

Mein Ziel war es also an die Bibliotheksdatei der letzten Cairngorm Version zu kommen. Dazu muss man als erstes einen check-out vom Adobe SVN-Repository machen: http://opensource.adobe.com/svn/opensource/cairngorm3/ . Dann hat man eine Menge Zeug auf seiner Platte, den man nicht direkt nutzen kann. Jetzt kommt Maven ins Spiel (das an dieser Stelle natürlich bereits lokal installiert sein muss). Wenn ich das mit Maven richtig verstanden haben, muss man nur mvn install aufrufen. Das klappt beim ersten Versuch nicht, weil Adobe nicht alle nötigen Bibliotheken richtig verlinkt hat (warum noch mal nutzen wir Maven!?). Man muss diese zwei fehlenden Teile manuell in sein lokales Maven-Repository installieren (das witzige, die Dateien sind nach dem SVN-check-out lokal vorhanden!):

Nummer 1:
mvn install:install-file -DgroupId=com.adobe.lcds -DartifactId=fds_rb -Dversion=2.6.1 -Dclassifier=en_US -Dpackaging=rb.swc -Dfile="{Cairngorm3-SVN-checkout}\tags\cairngorm3-3.0.11\libraries\Integration\libs\fds_rb-2.6.1.rb.swc"

Ausgabe:

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'install'.
[INFO] org.apache.maven.plugins: checking for updates from local
[INFO] org.apache.maven.plugins: checking for updates from central
[INFO] org.codehaus.mojo: checking for updates from local
[INFO] org.codehaus.mojo: checking for updates from central
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]    task-segment: [install:install-file] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [install:install-file {execution: default-cli}]
[INFO] Installing {Cairngorm3-SVN-checkout}\tags\cairngorm3-3.0.1\libraries
\Integration\libs\fds_rb-2.6.1.rb.swc to {user}\.m2\repositor\com\adobe\lcds
\fds_rb\2.6.1\fds_rb-2.6.1-en_US.rb.swc
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Tue Jun 01 15:55:38 CEST 2010
[INFO] Final Memory: 5M/59M
[INFO] ------------------------------------------------------------------------

Nummer 2:
mvn install:install-file -DgroupId=com.adobe.lcds -DartifactId=fds -Dversion=2.6.1 -Dpackaging=swc -Dfile="{Cairngorm3-SVN-checkout}\tags\cairngorm3-3.0.11\libraries\Integration\libs\fds-2.6.1.swc"

Ausgabe:

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'install'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]    task-segment: [install:install-file] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [install:install-file {execution: default-cli}]
[INFO] Installing {Cairngorm3-SVN-checkout}\tags\cairngorm3-3.0.11
\libraries\Integration\libs\fds-2.6.1.swc to {user}\.m2\repository\com\a
dobe\lcds\fds\2.6.1\fds-2.6.1.swc
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Tue Jun 01 15:56:18 CEST 2010
[INFO] Final Memory: 6M/74M
[INFO] ------------------------------------------------------------------------

So und nun kann man theoretisch mvn install ausführen. Das Ergebnis sollte sein, dass alle Bibliotheken kompiliert und gepackt werden. Nur leider werden ausschließlich die Cairngorm-Zusatz-Bibliotheken gebaut, aber nicht Cairngorm selbst. Ich habe das in so gut wie jedem Ordner ausprobiert: "\tags\cairngorm3-3.0.11", "\build-parent\", "\trunk" und noch viele andere. Es ist immer das Selbe, ich bekomme nicht meine erhoffte cairngorm-3.0.11.swc .

Und nun?!


Update

Enterprise Development with Flex: Best Practices for RIA Developers

Sämtliche Aufregung war umsonst! Das was bei Cairngorm 2 in einer Bibliothek organisiert war, ist bei Cairngorm 3 in mehrere Teil-Bibliotheken organisiert. Wäre schon nett gewesen, wenn das irgendwo bei Adobe stehen würde!

Also das oben genannte Vorgehen führt zum Erfolg! 🙂

Categories
Independent Coursework

FlexUnit - Terminologie

Anders als bei alten Versionen von FlexUnit, oder bei dem Vorbild JUnit, müssen Testklassen nicht von FelxUnits Klassen explizit erweitert werden. Alles wird über Meta-Tag Angaben gergelt.

Testmethoden

Testmethoden sind die kleinste Instanz des Testframeworks. In diesen Methoden werde die Test ausgeführt und Ergebnisse ausgewertet. Dabei müssen die Methodennamen keinen Konventionen entsprechen. Man kann sie also nennen wie man will. Wobei ich glaube dass es mehr als angebracht ist gewisse Konventionen beizubehalten, aus dem einfachen Grund nicht den Überblick zu verlieren.

TestCase

Ein TestCase ist eine Sammlung von Testmethoden - also eine Klasse die entsprechende Methoden beinhaltet. Dabei können wieder über Metatag-Angaben Konfigurationen vorgenommen werden. Die von JUnit bekannten Methoden tearDown() und setUp() werden z.B. mit den Tags [Before] oder [After] ersetzt. Mit denen und einigen weiteren Tags kann man bestimmen was vor und nach einem Test gemacht werden muss und auch in welcher Reihenfolge Testmethoden ausgeführt werden.

TestSuite

Eine TestSuite ist eine einfache Klasse die als Einstiegspunkt für die Test dient. Sie kann mehrere TestCases und andere TestSuites instantiieren.

Categories
Semantic Modelling

Ontologies

> reading: Chapter 4 "Incorporating Semantics", Semantic Web Programming, J. Hebeler et al.

Open World and Closed World Assumption

Open world assumption (OWA) means that information that is not present in a certain domain is not considered to be false. Just because it's not there, does not mean it's wrong.
Closed world assumption (CWA) is obviously the opposite. When there is a piece of information missing, it means it is wrong.

For example: "John works with Paul".
With CWA we couldn't say whether John and Paul know each other. We would have to assume that they don't. There are just working together. We would have to answer "no" to the question, whether they know each other.
With OWA the information about whether they know each other or not is not stated. So we just can not say anything about it, whether it's true that they're working together or not. But we couldn't say it is false either.

No unique Names Assumption

In the WWW we can not assume that information is always identified by an unique name. When two web sites referencing to a single information, we can not assume both are using the same URIs to reference to this information. Unless the two are explicitly stating that the information they are talking about are the same (by adding additional attributes) ....... wait something is confusing! need to think about that again

Ontology Elements

  • Header
    • represents the ontology itself
    • contains comments, labels, version and other imported ontologies
  • Class
    • special kind of resource that represents a set of resources
  • Individual
    • member of a class
    • can be member directly or indirectly
  • Property
    • predicate to describe individuals
    • object properties link individuals to other individuals
    • data properties link individuals to literal values
  • Annotation
    • basically like a Property
    • has no associated semantics
    • commonly used for label or comment
  • Datatype
    • well data type
Categories
Semantic Modelling

Modelling RDF

> reading: Chapter 3 "Modelling Information", Semantic Web Programming, J. Hebeler et al.

Very briefly: there are three ways of writing information in RDF-style. Most likely there are much more ways of writing, or better representing, infortmation with RDF. But the following three are the most popular ones. The first one is RDF/XML, which is a XML presentation of RDF. Second is the Terse RDF Triple Language (aka Turtle ... why Turtle!?). And the third on is N-Tripel.

The XML notation is obvious. It's specialised XML for RDF. In the entry to the RDF Primer are some little examples. A snippet from a full RDF/XML could look like this:

<rdf:RDF
     xmlns:rdf="http://www.w3.org/rdf"
     xmlns:ext="http://example.org/ext"
     xmlns:foaf="http://xmlns.com/foaf/"
     xmlns:people="http://example.org/people">
  <rdf:Description rdf:about="http://.../people#Paul">
     <ext:worksWith rdf:resource="http://.../people#John/>
  </rdf:Description>
<!-- More -->
</rdf:RDF>

Well, it's XML. Not pretty, but it's interpretable for software.

The second one, Turtle, is supposed to be more human-friendly:

@prefix rdf:    <http://www.w3.org/rdf>
@prefix ext:    <http://example.org/ext>
@prefix foaf:   <http://xmlns.com/foaf>
@prefix people: <http://example.org/people> 

people:Paul ext:worksWith people:John .
people:Matt foaf:knows people:John .
people:Andrew
     foaf:knows people:Matt ;
     foaf:surname "Lopez" .

But I must say it is not that easier to read. Maybe a bit, because it has less brackets, obviously. The biggest benefit from this one is I think, that it has much less overhead (well the bracket-stuff). So file sizes would be much smaller, especially because with RDF you  can produce incredibly huge files.

And thirdly the N-Triples, which is a "simplified version of Turtle":

<urn:http://example.com/peoples:Paul> <urn:http://xmlns.com/foaf:worksWith> <urn:http://example.com/peoples:John>

So N-Triples are expressed in one line. Each entry is filled up with one line. There is no such thing as @prefix as in Turtle, which is stupid I think. Imagine: There is the full URL to a certain namespace for each subject, predicate and object. Of course this can be considered a "simplified version of Turtle", but I don't see this as practicable. If there would be a possibility to define QNames for the namespaces, this would be great. It would be so compact.