<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>agimatec &#187; Flex</title>
	<atom:link href="http://www.agimatec.de/blog/tag/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agimatec.de/blog</link>
	<description>Clash of realities</description>
	<lastBuildDate>Tue, 22 Dec 2009 16:50:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Ajax vs. Flex revisited</title>
		<link>http://www.agimatec.de/blog/2009/01/ajax-vs-flex-revisited/</link>
		<comments>http://www.agimatec.de/blog/2009/01/ajax-vs-flex-revisited/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 22:13:11 +0000</pubDate>
		<dc:creator>Simon Tiffert</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.agimatec.de/blog/?p=444</guid>
		<description><![CDATA[Eight month ago I posted this entry in german. After a comment that this post is needed in English, I will translate it and rethink if I would confirm my pro and con. Could you compare Ajax and Flex? Sure! Both are technologies in the web frontend, which cover the same domain. Should you compare [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.agimatec.de/blog/wp-content/uploads/2008/04/istock_000005334677xsmall.jpg" alt="Äpfel und Birnen" width="424" height="283" /></p>
<p>Eight month ago I posted <a href="http://www.agimatec.de/blog/2008/04/ajax-vs-flex/">this entry in german</a>. After a <a href="http://www.agimatec.de/blog/2008/04/ajax-vs-flex/#comment-355">comment</a> that this post is needed in English, I will translate it and rethink if I would confirm my pro and con.</p>
<p>Could you compare Ajax and Flex? Sure! Both are technologies in the web frontend, which cover the same domain.</p>
<p>Should you compare Ajax and Flex? Sure! To learn more about the strengths and weaknesses and pull the right technology for the use case out of the hat.</p>
<p><span id="more-444"></span></p>
<p><strong>What are the pros of Ajax?</strong></p>
<ul>
<li>HTML, CSS and Javascript are widely known and there are a lot of people who have programmed with this languages</li>
<li>The end user is very familiar with it. He knows the browser very well and knows how things are working, what buttons look like and where he could click, &#8230;</li>
<li>There is no need for a plugin, because everything is supported natively in the browser (plugins could be a huge problem in controlled enterprise environments)</li>
<li>Client and server side patterns are very mature and you get clobbered over the head with frameworks (in a positive way). Webwork, Struts (1 and 2), Spring, Turbine, Tapestry, JavaServer Faces, &#8230; in the Java world, YUI, Prototype, JQuery, Dojo, Ext, &#8230; in the Javascript world (to name just a few).</li>
</ul>
<p><strong>What are the cons of Ajax?</strong></p>
<ul>
<li>It still is HTML with all its weaknesses. Rounded corners, small effects, browser incompatibilities, &#8230; &#8230; nearly everything is possible, but it is often laborious and not really straightforward</li>
<li>Ajax is based on Javascript. At the beginning everything seams to be great. But then you realize, that you are just scratching on the surface and you are falling in a deep hole. When you are back at the top, you can see the strengths of the language</li>
<li>The Javascript/Ajax frameworks are getting better and better. Two years ago there also exist a lot of frameworks, but they weren&#8217;t very mature or well documented in some parts</li>
<li>The performance can suffer a lot of from the use of DOM manipulations. Sortable tables or other complex operations are working at limit of the practiable</li>
<li>Browser and their technologies have evolved in the last years, but HTML wasn&#8217;t created to be dynamic.</li>
</ul>
<p><strong>What are the pros of Flex?</strong></p>
<ul>
<li>Steep learning cureve at the beginning. After a few days you can create applications, which would take longer with HTML, CSS, and Javascript even after some years of training</li>
<li>Sexy interfaces. A Flex application looks better at the first sight. Rounded and transparent layers, gradients just as you like them without complex scaling background images. Small effects just working after two lines of code and doesn&#8217;t have an impact at the browser performance</li>
<li>Integration of multimedia data. A video player or a control to play MP3s, just a few lines of code. Clean and straightforward</li>
</ul>
<p><strong>What are the cons of Flex</strong></p>
<ul>
<li>A Flex application looks like a Flex application. Not a big downside, but a designer needs to learn how to style it. Else you just got a 08/15 application, what can be a problem when Flex is spread wider</li>
<li>Small application can be developed really fast, but if an application gets larger, you are loosing yourself in Flex. Frameworks like Cairngorm solving the problem but the learning curve is getting flatter and flatter</li>
<li>I18N, automatic builds and code generation are possible but a lot of enterprise features are hidden very well. The community around Flex is growing but in a lot of areas you are alone with just a hand full of google hits</li>
<li>Flex is generating Flash and the language MXML is in the opposite to pure Actionscript the strength, to get faster to your goals. But Flex is just on top of Flash and the separation of MXML and Actionscript is often to fluent, to be very homogeneous</li>
<li>The FlexBuilder is no IntelliJ and the tools are still very unpolished. The development of applications is possible but it could be a lot better in some parts</li>
</ul>
<ul></ul>
<p><strong>Conclusion:</strong></p>
<p>If you need a multimedia application with some content which should look very nice, then Flex fits very well. But if you want to manage data and you want a wide support for your application, then Ajax is still the better choice. Flash still feels like a foreign object in the web. Deep links, copy of content, loading time and the existing knowlege and usability of HTML are arguments against Flex. But if the web application should feel as close as possible like a desktop application, then Flex is a good way and maybe the AIR technology is the goal. When developing a touchscreen application we also had the decision between Flex and HTML. I think it was a good choise to try Flex because of the interface speed (no page rendering) and the missing page reloads. It feels more natural for this kind of product.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agimatec.de/blog/2009/01/ajax-vs-flex-revisited/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selenium-Flex-Tests with Maven</title>
		<link>http://www.agimatec.de/blog/2008/11/selenium-flex-tests-with-maven/</link>
		<comments>http://www.agimatec.de/blog/2008/11/selenium-flex-tests-with-maven/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 19:05:05 +0000</pubDate>
		<dc:creator>Simon Tiffert</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[TeamCity]]></category>

		<guid isPermaLink="false">http://www.agimatec.de/blog/?p=385</guid>
		<description><![CDATA[I wanted to integrate our Flex application with tests into our Maven build. A few days ago I moved the app to Flex 3 and changed the Maven Plugin from the Maven2 Flex Plugin to Flex-mojos. Now the artifacts are in the repository and you don&#8217;t need to install the Flex SDK to build the [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.agimatec.de/blog/wp-content/uploads/2008/11/img_2340.jpg" alt="" title="london" width="300" height="225" class="alignleft size-medium wp-image-390" />I wanted to integrate our Flex application with tests into our Maven build. A few days ago I moved the app to Flex 3 and changed the Maven Plugin from the <a href="http://www.israfil.net/projects/mojo/maven-flex2-plugin/">Maven2 Flex Plugin</a> to <a href="http://blog.flex-mojos.info">Flex-mojos</a>. Now the artifacts are in the repository and you don&#8217;t need to install the Flex SDK to build the application.</p>
<p>We have written the application as a demo in the first place and now wanting to test it in the wild. Because we use Cairngorm the application is well structured and contains as view layer only minimal parts of logic. Yes, we could include unit tests, but integration tests are far more interesting (from my point of view). In a large code base it could happen, that because of refactoring some things are broken. No deal, if you have tests and a CI system. But in the Flex app there are just tiny parts which I could test in a normal unit test.</p>
<p>Okay, so it should be integration test. Sounds good and not too complicated. There should exist a lot of frameworks because a lot of people start to use BlazeDS and other stuff in Java environments. Just something to start the app, run some tests and get the result back in the CI system.</p>
<p>I started to search on google and was surprised. Most of the blog posts I have found on that topic are just two month old. And there are not so many posts about that topic. With the combination of those posts I figured out, how to solve that problem. What problem?</p>
<ul>
<li>Integration tests of our Flex app</li>
<li>Integrated in Maven</li>
<li>Should work together with Cairngorm (would be more complicated with some unit tests frameworks)</li>
<li>Could be Selenium (to start the app and run tests)</li>
<li>Should be integrated in our continuous integration server TeamCity</li>
<li>Could be written in Java</li>
</ul>
<p><span id="more-385"></span></p>
<p>First thanks to the <a href="http://www.blackpepper.co.uk/black-pepper-blog/Flex-acceptance-testing-and-continuous-integration.html">blog post of Julia at Blackpepper</a>. She opened my eyes how to work with Java and Flex in combination. It is the combination of the SeleniumFlexAPI, which integrates as Flex to Javascript bridge in your Flex application and FlashSelenium.</p>
<p><a href="http://sourceforge.net/projects/seleniumflexapi/">SeleniumFlexApi</a> is in one part a Flex library which needs to be included in your app and on the other part an extension to the Selenium IDE. I like the Flex part, because it makes it easy to dive over Javascript into the details of your Flex app. What I don&#8217;t really like is the Javascript extension. Yes, it is not only a Selenium IDE part and you can include it into the start of the Selenium Server, but it is far away from Java and Maven.</p>
<p><a href="http://code.google.com/p/flash-selenium/">FlashSelenium</a> is a piece of code which let&#8217;s you talk from Java over Selenium with your Flex app. The Java part is very handy, but you need to code into Flex, which methods you could call over your bridge. So I need to write special code, which opens the bridge. The SeleniumFlexAPI is much better in this part.</p>
<p>I liked the solution of the blog post and started to implement it.</p>
<p>First the pom.xml where you need to include the SeleniumFlexAPI (the scope cost me some time):</p>
<pre class="xml" name="code">&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&gt;

   &lt;parent&gt;
        &lt;groupId&gt;agimatec&lt;/groupId&gt;
        &lt;artifactId&gt;assessor&lt;/artifactId&gt;
        &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
        &lt;relativePath&gt;../pom.xml&lt;/relativePath&gt;
    &lt;/parent&gt;

  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;agimatec&lt;/groupId&gt;
  &lt;artifactId&gt;assessor-flexapp&lt;/artifactId&gt;
  &lt;packaging&gt;swf&lt;/packaging&gt;
  &lt;version&gt;${agimatec-assessor-version}&lt;/version&gt;
  &lt;name&gt;Assessor Flex Application&lt;/name&gt;
  &lt;url&gt;http://www.agimatec.de&lt;/url&gt;

  &lt;dependencies&gt;
    		 &lt;!--Flex SDK dependencies--&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;com.adobe.flex.sdk&lt;/groupId&gt;
			&lt;artifactId&gt;playerglobal&lt;/artifactId&gt;
			&lt;version&gt;3.0.0.477&lt;/version&gt;
			&lt;type&gt;swc&lt;/type&gt;
		&lt;/dependency&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;com.adobe.flex.sdk&lt;/groupId&gt;
			&lt;artifactId&gt;flex&lt;/artifactId&gt;
			&lt;version&gt;3.0.0.477&lt;/version&gt;
			&lt;type&gt;swc&lt;/type&gt;
		&lt;/dependency&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;com.adobe.flex.sdk&lt;/groupId&gt;
			&lt;artifactId&gt;framework&lt;/artifactId&gt;
			&lt;version&gt;3.0.0.477&lt;/version&gt;
			&lt;type&gt;swc&lt;/type&gt;
		&lt;/dependency&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;com.adobe.flex.sdk&lt;/groupId&gt;
			&lt;artifactId&gt;framework&lt;/artifactId&gt;
			&lt;version&gt;3.0.0.477&lt;/version&gt;
			&lt;type&gt;resource-bundle&lt;/type&gt;
			&lt;classifier&gt;en_US&lt;/classifier&gt;
		&lt;/dependency&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;com.adobe.flex.sdk&lt;/groupId&gt;
			&lt;artifactId&gt;rpc&lt;/artifactId&gt;
			&lt;version&gt;3.0.0.477&lt;/version&gt;
			&lt;type&gt;swc&lt;/type&gt;
		&lt;/dependency&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;com.adobe.flex.sdk&lt;/groupId&gt;
			&lt;artifactId&gt;rpc&lt;/artifactId&gt;
			&lt;version&gt;3.0.0.477&lt;/version&gt;
			&lt;type&gt;resource-bundle&lt;/type&gt;
			&lt;classifier&gt;en_US&lt;/classifier&gt;
		&lt;/dependency&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;com.adobe.flex.sdk&lt;/groupId&gt;
			&lt;artifactId&gt;utilities&lt;/artifactId&gt;
			&lt;version&gt;3.0.0.477&lt;/version&gt;
			&lt;type&gt;swc&lt;/type&gt;
		&lt;/dependency&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;com.adobe.cairngorm&lt;/groupId&gt;
      &lt;artifactId&gt;cairngorm-bin&lt;/artifactId&gt;
      &lt;version&gt;2.2.1&lt;/version&gt;
      &lt;type&gt;swc&lt;/type&gt;
    &lt;/dependency&gt;

      &lt;dependency&gt;
        &lt;groupId&gt;org.openqa.selenium&lt;/groupId&gt;
        &lt;artifactId&gt;flex-api&lt;/artifactId&gt;
        &lt;version&gt;0.22&lt;/version&gt;
        &lt;type&gt;swc&lt;/type&gt;
          &lt;scope&gt;internal&lt;/scope&gt;
      &lt;/dependency&gt;

		 &lt;!--FlexUnit dependencies--&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;flexunit&lt;/groupId&gt;
			&lt;artifactId&gt;flexunit&lt;/artifactId&gt;
			&lt;version&gt;0.85&lt;/version&gt;
			&lt;type&gt;swc&lt;/type&gt;
			&lt;scope&gt;test&lt;/scope&gt;
		&lt;/dependency&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;flexunit.junit&lt;/groupId&gt;
			&lt;artifactId&gt;flexunit-optional&lt;/artifactId&gt;
			&lt;version&gt;0.85&lt;/version&gt;
			&lt;type&gt;swc&lt;/type&gt;
			&lt;scope&gt;test&lt;/scope&gt;
		&lt;/dependency&gt;
  &lt;/dependencies&gt;

  &lt;build&gt;
    &lt;sourceDirectory&gt;src/main/flex&lt;/sourceDirectory&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;info.rvin.mojo&lt;/groupId&gt;
        &lt;artifactId&gt;flex-compiler-mojo&lt;/artifactId&gt;
        &lt;extensions&gt;true&lt;/extensions&gt;
        &lt;configuration&gt;
          &lt;includeSources&gt;
            &lt;param&gt;${project.build.sourceDirectory}&lt;/param&gt;
          &lt;/includeSources&gt;
          &lt;locales&gt;
            &lt;param&gt;en_US&lt;/param&gt;
            &lt;param&gt;de_DE&lt;/param&gt;
          &lt;/locales&gt;
          &lt;debug&gt;true&lt;/debug&gt;
        &lt;/configuration&gt;
      &lt;/plugin&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;info.rvin.mojo&lt;/groupId&gt;
        &lt;artifactId&gt;asdoc&lt;/artifactId&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;
&lt;/project&gt;</pre>
<p>To get the Flex application compile with Maven you need to download the SeleniumFlexAPI and include the swc-file into your Maven repository, because it is (not yet) available on public repositories.</p>
<p>After compiling you can start the Selenium IDE and load the extension or go directly to FireBug and try to call the methods. Be aware, that the args-parameter is normally optional, but needs to be filled for the Javascript-Flex bridge (also cost me some time).</p>
<p>To call a method of your running application in Firefox fire up in FireBug&#8217;s console:</p>
<pre class="html" name="code">window.document['AppName'].getFlexExists('NameOfAnElement','');</pre>
<p>To test your application you need to know, what the name of your application is (can be found in the HTML calling the Flash file) and you need to give ids to your elements, because there is just an id locator at the moment.</p>
<p>If you are at this point we can now switch to the Java part with Selenium. Selenium is just Javascript when you are in the browser. So all you do is to call the Javascript function which you called before over Firebug. FlashSelenium is a good wrapper for that call which means that you don&#8217;t have to write normal strings into your Selenium commands. I like a little bit more comfort and wanted to wrap the SeleniumFlexAPI a little bit closer. Also there are some methods in the FlashSelenium you don&#8217;t need with this solution. So I started to implement my own little wrapper. Maybe it is also interesting for the SeleniumFlexAPI (if completed with all methods).</p>
<p>Here is the beginning of the code:</p>
<pre class="java" name="code">package com.agimatec.assessor.selenium;

import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;

public class FlexSelenium {
    Selenium selenium;
    String flexApp;

    public FlexSelenium(String ip, int port, String browser, String url, String flexApp) {
        selenium = new DefaultSelenium(ip, port, browser, url);
        this.flexApp = flexApp;
    }

    public void start() {
        selenium.start();
    }

    public void open(String url) {
        selenium.open(url);
    }

    public void stop() {
        selenium.stop();
    }

    public String doFlexClick(String id) {
        return callFlexBridge("doFlexClick",id);
    }

    public boolean getFlexExists(String id) {
        return callFlexBridge("getFlexExists",id).equals("true");
    }

    private String callFlexBridge(String method, String id) {
        return callFlexBridge(method, id, null);
    }

    private String callFlexBridge(String method, String id, String args) {
        if(args == null || args.trim().equals("")) {
            args = "''";
        }
        return selenium.getEval("window.document['"+flexApp+"']."+method+"('"+id+"',"+args+");");
    }
}</pre>
<p>And now the test case is the only thing which is missing. I used TestNG because it can be easier configured in a Selenium environment (when it started to become more complicated with several browsers, plattforms, test suites, test groups &#8230;):</p>
<pre class="java" name="code">package com.agimatec.assessor.selenium;

import org.testng.annotations.Test;

public class AssessorTest {
    private final static String URL = "http://192.168.1.175:8080/assessor-webapp";
    FlexSelenium selenium;

    @Test
    public void setUp() throws InterruptedException {
        selenium = new FlexSelenium("192.168.1.254", 4444, "*firefox", URL, "Terminal");
        selenium.start();
        selenium.open(URL);
        while(!selenium.getFlexExists("videoPlayer")) {
            Thread.sleep(1000);
        }

        selenium.doFlexClick("videoPlayer");
        Thread.sleep(300);
        selenium.doFlexClick("enterUserModeButton");
        selenium.stop();
    }
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.agimatec.de/blog/2008/11/selenium-flex-tests-with-maven/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Extended BlazeDS and JMS example</title>
		<link>http://www.agimatec.de/blog/2008/08/extended-blazeds-and-jms-example/</link>
		<comments>http://www.agimatec.de/blog/2008/08/extended-blazeds-and-jms-example/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 08:25:04 +0000</pubDate>
		<dc:creator>roman.stumm</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.agimatec.de/blog/?p=262</guid>
		<description><![CDATA[We extended the example from the absolutly helpful Blog entry from Michael about BlazeDS and JMS. It demonstrates a flex app using BlazeDS with a message-destination from a JMS Topic using ActiveMQ (separate process). Installation: 1. Download and install BlazeDS (bundles with Tomcat): blazeds_turnkey from http://opensource.adobe.com/wiki/display/blazeds/Release+Builds 2. Download and install ActiveMQ (4.1.1) from: http://activemq.apache.org/download.html 3. [...]]]></description>
			<content:encoded><![CDATA[<p>We extended the example from the absolutly <a href="http://mmartinsoftware.blogspot.com/2008/05/simplified-blazeds-and-jms.html" target="_blank">helpful Blog entry from Michael about BlazeDS and JMS</a>. It demonstrates a flex app using BlazeDS with a message-destination from a JMS Topic using ActiveMQ (separate process).<span id="more-262"></span></p>
<p><strong>Installation:</strong></p>
<p>1. Download and install BlazeDS (bundles with Tomcat): blazeds_turnkey from <a title="OpenSource Adobe.com" href="http://opensource.adobe.com/wiki/display/blazeds/Release+Builds">http://opensource.adobe.com/wiki/display/blazeds/Release+Builds</a></p>
<p>2. Download and install ActiveMQ (4.1.1) from: <a href="http://activemq.apache.org/download.html">http://activemq.apache.org/download.html</a></p>
<p>3. Download the extended example <a href="http://www.agimatec.de/blog/wp-content/uploads/2008/08/blazetest-extended.zip">blazetest-extended</a> and extract into your BlazeDS-Turnkey directory.</p>
<p>The interesting BlazeDS configuration files are services-config.xml and messaging-config.xml in tomcat/webapps/BlazeTest/WEB-INF/flex.  Also look into the tomcat JNDI resource file BlazeTest.xml in tomcat/conf/Cataline/localhost and in the flex-app itself (test.mxml or test2.mxml, whose only difference is the value of the message selector)</p>
<p><strong>Run example:</strong></p>
<p>1. Start ActiveMQ</p>
<p>2. Start BlazeDS-Tomcat</p>
<p>3. Browse to <a href="http://localhost:8400/BlazeTest/">http://localhost:8400/BlazeTest/</a></p>
<p>[<a href="http://www.agimatec.de/blog/wp-content/uploads/2008/08/blazetest_screenshot2.jpg"><img class="alignnone size-full wp-image-270" title="blazetest_screenshot2" src="http://www.agimatec.de/blog/wp-content/uploads/2008/08/blazetest_screenshot2.jpg" alt="" width="470" height="340" /></a>]<br />
<em>Screen shot of the example application running in Firefox</em></p>
<p><strong>What it shows:</strong></p>
<p>It is a simple chat-application that consists of one HTML-page and two Flex-applications. The first Flex-app in the upper part of the window is added twice to the page. The second Flex-app in the lower part also appears twice.</p>
<p>You see, that the browser (tested with FireFox3) does not allow enough HTTP-connections to be opened simoultanously so that most of the Flex-apps need to poll instead of streaming.</p>
<p>A single JMS topic is used to distinguish the chat-messages for both Flex-apps. Message filtering is done with JMS-Message Selectors, a String-property named &#8220;RType&#8221; in the example, with the value &#8220;one&#8221; or &#8220;two&#8221;.</p>
<p><strong>test.mxml</strong></p>
<p>To send a message with a message selector from flex, refer to function sendMessage() in test.mxml (or test2.mxml):</p>
<p><img src="file:///C:/DOKUME~1/ROMANS~1.FEL/LOKALE~1/Temp/moz-screenshot-3.jpg" alt="" /></p>
<p><em>private function sendMessage():void {<br />
var message:AsyncMessage = new AsyncMessage();<br />
message.body = sendTextArea.text;<br />
<strong> message.headers = new Array();<br />
message.headers["RType"] = &#8220;one&#8221;;</strong><br />
producer.send(message);<br />
sendTextArea.text=&#8221;";<br />
}</em></p>
<p>To filter messages received with a message selector, set &#8220;selector&#8221; attribute in the &lt;mx:Consumer&gt; element:</p>
<p><em>&lt;mx:Consumer id=&#8221;consumer&#8221;<br />
destination=&#8221;message-destination&#8221;<br />
message=&#8221;messageHandler(event)&#8221;<br />
<strong> selector=&#8221;RType=&#8217;one&#8217;&#8221;</strong><br />
acknowledge=&#8221;acknowledgeHandler(event);&#8221;<br />
fault=&#8221; faultHandler(event)&#8221;/&gt;</em></p>
<p><strong>Java application using JMS</strong></p>
<p>A Java application (e.g. servlet or EJB) can easily communicate with the same JMS Topic, so that you can send messages to the client applications or listen to messages. The Java application does not need any Blaze-DS library, just plain JMS (and the activemq-libs). There a two simple Java-main() apps: JMSTopicSender and JMSTopicListener.</p>
<p><strong>JMSTopicListener.java</strong></p>
<p>It prints all messages and their properties to the console, that you send to the JMS topic.</p>
<p><strong>JMSTopicSender.java</strong></p>
<p>It sends 100 messages in 200 seconds to the JMS Topic with the message selector set to &#8220;one&#8221; or &#8220;two&#8221;. You can see the messages appear in the open flex-apps.</p>
<p>I hope, this example helps you with your own BlazeDS experiments.</p>
<p><strong>TO DO: Tomcat resource for JMS Topic with SonicMQ instead of ActiveMQ<br />
</strong></p>
<p>I did not find a way to configure the tomcat JMS-resource (file tomcat/conf/Catalina/localhost/BlazeTest.xml) so that the same example runs with SonicMQ (7.6) instead of ActiveMQ (4.11).</p>
<p>Something alike is included in the BlazeTest.xml file, but it does not work yet. If you have a hint, please send me&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agimatec.de/blog/2008/08/extended-blazeds-and-jms-example/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Adobe Flex 3 Roadshow</title>
		<link>http://www.agimatec.de/blog/2008/04/adobe-flex-3-roadshow/</link>
		<comments>http://www.agimatec.de/blog/2008/04/adobe-flex-3-roadshow/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 07:18:01 +0000</pubDate>
		<dc:creator>Simon Tiffert</dc:creator>
				<category><![CDATA[Deutsch]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.agimatec.de/blog/?p=71</guid>
		<description><![CDATA[Die Adobe Flex 3 Roadshow machte heute Halt in Köln, was ich mir nicht entgehen lassen wollte. Immerhin liegt es fast um die Ecke und Informationen und Fragen aus erster Hand können Stunden in Google ersetzen. Veranstaltet wurde das Event von Adobe und Herrlich &#38; Ramuschkat. Der Tagesplan sah wie folgt aus: Kunden-Engagement durch Flex [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.agimatec.de/blog/wp-content/uploads/2008/04/istock_000005544549xsmall.jpg"><img class="alignnone size-medium wp-image-72" title="istock_000005544549xsmall" src="http://www.agimatec.de/blog/wp-content/uploads/2008/04/istock_000005544549xsmall.jpg" alt="" width="300" height="201" /></a></p>
<p>Die Adobe Flex 3 Roadshow machte heute Halt in Köln, was ich mir nicht entgehen lassen wollte. Immerhin liegt es fast um die Ecke und Informationen und Fragen aus erster Hand können Stunden in Google ersetzen. Veranstaltet wurde das Event von Adobe und Herrlich &amp; Ramuschkat. Der Tagesplan sah wie folgt aus:</p>
<ul>
<li>Kunden-<em><a href="http://www.adobe.com/engagement/">Engagement</a> </em>durch Flex</li>
<li>Vorstellung von Kundenlösungen basierend auf Flex</li>
<li>Adobe Flexbuilder 3</li>
<li>Adobe AIR</li>
<li>Serverseite mit BlazeDS und Lifecycle Data Services</li>
</ul>
<p><span id="more-71"></span></p>
<p><strong>Kunden-Engagement durch Flex</strong></p>
<p>Andreas Helios stellte aus Sicht von Adobe dar, warum es sinnvoll ist auf Adobe (Flex) Produkte zu setzen. Eigentlich eine gelungene Einleitung, wäre das Wort PDF nicht so oft gefallen. Warum sollte man Flex einsetzen? Weil es ein deutlich besseres Benutzerinterface bei kürzerer Entwicklungszeit bietet. Das kann man je nach Einsatzzweck voll unterschreiben und es war sehr positiv anzumerken, dass Adobe sich selber auch auf Einsatzzwecke beschränkt. Es ist eben nicht immer sinnvoll auf Flash zu setzen. Aber Anwendungsfälle wie Produktfinder, wo es um den Eindruck beim Kunden geht oder komplexe Webanwendungen sind damit sehr gut zu realisieren. Webseiten mit Flash sind möglich, aber unterbrechen die Surfgewohnheiten des Nutzers und sind mittlerweile als Spielerei von Grafikern geächtet.</p>
<p><strong>Vorstellung von Kundenlösungen basierend auf Flex</strong></p>
<p>Vorgestellt wurden verschiedene Projekte die den Einsatzzweck von Flex sehr gut umrissen. Eine Anwendung für Köche, die komplex war, aber wohl ohne Schulung und Fachkenntnisse keine Glücksgefühle bei mir hervor rief. Ein weiteres Projekt war ein internes Addressbuch einer niederländischen Firma, die sehr viel Wert auf das Benutzerinterface legte, was der Anwendung wirklich zugute kam. Hinzu kam Adobe Photoshop Express, welches auch auf Flex beruht und zeigt, dass Adobe seine eigenen Produkte nutzt.</p>
<p><strong>Adobe Flexbuilder 3</strong></p>
<p>Mit dem Flexbuilder 3 ging es einmal durch die Basics von Flex, wobei man nicht sehr viel Neues sah, wenn man sich schon einmal mit Flex beschäftigt hatte. Hello World, Komponenten und Container hat wohl jeder schon mal gesehen, der sein erstes Tutorial durchgearbeitet hat. Mit dem Styling per CSS hatte ich mich bisher selber nicht beschäftigt und somit konnte ich in diesem Punkt auch dem ersten Abschnitt des Vortrags etwas entnehmen. Flexbuilder 3 soll gegenüber der 2er Version einige Verbesserungen mit sich bringen. Bitter nötig meiner Meinung nach, denn die vorherige Version war definitiv nicht so rund, wie man es sich wünschen würde. Ich selber habe zwar Flexbuilder 3 schon heruntergeladen, ihn aber noch nicht ausprobiert. Meine letzten Arbeiten an Flex habe ich mit IntelliJ 7.0.3 vollzogen, welches eine heute ungenannte Alternative zum Flexbuilder bietet. Mit der Version 8 wird dann auch Debugging integriert, was im Moment neben dem visuellen Editor am meisten fehlt. Für Syntaxhighlighting und Vervollständigung in MXML und Actionscript aber vollkommen ausreichend.</p>
<p>Im zweiten Teil des Vortrags ging es dann um den Zugriff über Services, wobei gezeigt wurde, wie schön einfach es ist, strukturierte Daten die als XML reinkommen in Anzeigeelemente zu verwandeln. Über Databindings kann man wirklich sehr einfach und zielgerichtet programmieren. Auch ein Punkt, den ich bisher an Flex schätze, es funktioniert so, wie man denkt, dass es funktionieren sollte. Schwer konkret zu beschreiben, aber man kommt schnell vorwärts.</p>
<p>Dann wurde noch eine eigene Komponente erstellt, wobei der Datenaustausch zwischen Komponenten wohlwissend ausgelassen wurde. Da wird es nämlich erst interessant: Wie erstellt man entkoppelte und wiederverwendbare Komponenten mit Flex. Der Hinweis auf das Caingorm-Framework hat nicht gefehlt und ist meiner Meinung nach auch sehr nötig. Denn der einfache Einstieg wird schnell zu Spaghetti-Code, wenn man nicht aufpasst. Eigene Pattern zu entwickeln, während man Flex noch lernt ist schwer und somit ist Cairngorm bei größeren Anwendungen eine gute Wahl (bei kleineren nicht wirklich).</p>
<p><strong>Adobe AIR</strong></p>
<p>Nach der Mittagspause gab es dann eine Einführung in Adobe AIR, der Adobe Integrated Runtime. Adobe Air wird auf dem Rechner installiert und bietet ein Framework für Webanwendungen auf dem Desktop. Es ermöglicht leichtgewichtige Desktop Applikationen, die im Gegensatz zu reinen Web-Anwendungen auf Resourcen des Client-Rechners zugreifen dürfen. Dazu zählt das Dateisystem, das Clipboard und eine mitgelieferte SQLite Datenbank wodurch auch Offline-Anwendungen möglich sind. Vorgestellt wurde hier eine Flexanwendung innerhalb der AIR-Umgebung. In AIR ist aber auch ein Webkit-Browser integriert, weswegen auch eine Programmierung in HTML und Javascript/AJAX möglich ist. Eine AIR-Applikation verhält sich dabei wie ein gewöhnliches Programm auf dem Rechner. Man lädt eine .air-Datei herunter, wonach sich AIR meldet und fragt, ob wir diese wirklich installieren wollen. Danach wird diese z.B. unter C:/Programme abgelegt und ist über das Startmenü zu erreichen, sowie laufend in der Start-Leiste zu finden. Ein sicherlich interessanter Ansatz, wobei zu oft die Offline-Fähigkeit erwähnt wird. Sicherlich ist diese Interessant, wenn man eine Adreßapplikation auf einem Notebook hat, aber der normale Desktop-Nutzer ist dauerhaft online. Ich selber nutze <a href="http://labs.mozilla.com/2007/10/prism/">Mozilla Prism</a>, wodurch meine Google Apps auch sehr nativ ins System integriert sind. Prism basiert auf dem Firefox und hinterlegt Desktopicons, Startmenüeinträge und lässt die Webanwendung dann in einem eigenen Container laufen. Somit wird der Firefox nach 8h Google Mail nicht noch zusätzlich ausgebremst.</p>
<p>Was aber ist dann der Kick? Ich denke es ist die schnelle Erstellung von Desktop-Applikationen und die Realisierung mit bekannten Technologien wie Flex, HTML und AJAX. Hinzu kommt die Nähe zum Internet, wodurch Videos, und Informationen eher den Weg in Desktop-Anwendungen finden. Die These, dass Adobe AIR in einem Jahr genauso verbreitet ist, wie der Flashplayer halte ich dagegen genauso falsch, wie die enorme Verbreitung von Silverlight in kurzer Zeit. Es sind sicherlich interessante Technologien, werden aber ihre Zeit benötigen, um ihre Position zu finden.</p>
<p><strong>Serverseite mit BlazeDS und Lifecycle Data Services</strong></p>
<p>Auch wenn man Flex mit simplen Webservices sehr einfach füttern kann, so bietet Adobe mit BlazeDS und Lifecycle Data Services noch eigene Lösungen an. Interessant sind hierbei die Konnektoren zu Java-Objekten, JMS, Hibernate und Co.</p>
<p>BlazeDS ist das neueste Open-Source Produkt von Adobe und deckt einen weiten Bereich der gewünschten Serverfunktionalität hin zu Java ab. Wir werden wohl in den nächsten Googledays das Messaging über JMS weiter unter die Lupe nehmen, da dies eine andere Art der Anwendungssteuerung ermöglicht (Push anstatt Polling).</p>
<p>Lifecycle Data Services sind die kostenpflichtigen Produkte von Adobe, die mehr Performance versprechen und eine ganze Menge zusätzlicher Features mit sich bringen (<a href="http://sujitreddyg.wordpress.com/2008/01/31/blazeds-and-lcds-feature-difference/">ein Vergleich</a>). Der Vortrag zielte dabei etwas an BlazeDS vorbei und hob den Mehrwert der Lösung hervor. Über ein eigenes Messaging-System werden die Daten bis hin zum Client synchronisiert. Eine Änderung der Daten in einem Browser, kann sofort auch bei anderen Anwendern erscheinen. Konflikte beim gleichzeitigen Bearbeiten von Daten können aufgelöst werden und das alles transparent bis hin zur Datenbank. Klingt gut und viele Probleme haben wir in unserer AJAX-Entwicklung auch schon gehabt. Es wirkt aber so, als würde man sich mit einem Schwenk in diese Richtung sehr in die weichen Betten von Adobe fallen lassen. Probleme gibt es keine und die Realisierung ist in 5min fertig. Nur die Geldbörse muss für die Lösung entsprechend dimensioniert sein. Klingt zu schön um wahr zu sein und hält wohl noch viele Probleme in den Details und fehlenden Schichten versteckt.</p>
<p><strong>Fazit:</strong></p>
<p>Für Einsteiger, die bisher nur den Namen Flex gelesen haben, wäre die Veranstaltung Gold wert gewesen. Für jeden der sich schon etwas mit Flex beschäftigt hatte, blieb zumindest etwas hängen und die Veranstaltung war insgesamt professionell gemacht und organisiert. Aufgrund der mangelnden Informationsflut für Semi-Anfänger hat mich Fabian dann ab der Mittagspause alleine zurück gelassen, mit der Aufgabe über die ausstehenden Dinge zu berichten. Das werde ich dann zusätzlich zum Blogeintrag morgen noch einmal in der Stand-Up-Runde tun.</p>
<p>Irgendwie ist der Eintrag länger geworden als gedacht, aber so war der Termin heute trotz der eigentlich wenigen Stunden auch. Das lag aber primär an der Luft im Raum.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agimatec.de/blog/2008/04/adobe-flex-3-roadshow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax vs. Flex</title>
		<link>http://www.agimatec.de/blog/2008/04/ajax-vs-flex/</link>
		<comments>http://www.agimatec.de/blog/2008/04/ajax-vs-flex/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 18:59:46 +0000</pubDate>
		<dc:creator>Simon Tiffert</dc:creator>
				<category><![CDATA[Deutsch]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.agimatec.de/wordpress/?p=45</guid>
		<description><![CDATA[Kann man Ajax und Flex vergleichen? Klar, beides sind Technologien im Web-Frontend, die den gleichen Bereich abdecken. Sollte man Ajax und Flex vergleichen? Klar, um die Stärken und Schwächen kennen zu lernen und für jeden Anwendungsfall die richtige Technologie aus dem Hut zu zaubern. Was sind die Vorteile von Ajax? HTML, CSS und Javascript sind [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.agimatec.de/blog/wp-content/uploads/2008/04/istock_000005334677xsmall.jpg" alt="Äpfel und Birnen" width="424" height="283" /></p>
<p>Kann man Ajax und Flex vergleichen? Klar, beides sind Technologien im Web-Frontend, die den gleichen Bereich abdecken.</p>
<p>Sollte man Ajax und Flex vergleichen? Klar, um die Stärken und Schwächen kennen zu lernen und für jeden Anwendungsfall die richtige Technologie aus dem Hut zu zaubern.</p>
<p><span id="more-45"></span></p>
<p><strong>Was sind die Vorteile von Ajax?</strong></p>
<ul>
<li>HTML, CSS und Javascript sind weit bekannt und viele Leute haben schon damit programmiert</li>
<li>Der Endnutzer fühlt sich heimisch. Er kennt den Browser, weiß wie die Dinge funktionieren, wie die Buttons aussehen, wo er hinklicken kann, &#8230;</li>
<li>Es wird kein Plugin benötigt, denn alles ist nativ im Browser (Plugins können in kontrollierten Firmenumgebungen ein Problem darstellen)</li>
<li>Client- und serverseitige Pattern sind weit entwickelt und man wird von der Menge Frameworks (positiv) erschlagen. Webwork, Struts (1 und 2), Spring, Turbine, Tapestry, JavaServer Faces, um nur ein paar zu nennen</li>
</ul>
<p><strong>Was sind die Nachteile von Ajax?</strong></p>
<ul>
<li>Es ist und bleibt HTML mit all seinen Schwächen. Runde Ecken, kleine Effekte, Browserinkompatibilitäten, &#8230;  &#8230; alles machbar, aber es ist aufwendig und nicht straightforward</li>
<li>Ajax beruht auf Javascript. Zuerst wirkt es toll. Dann merkt man, dass man nur an der Oberfläche kratzt und fällt in ein tiefes Loch. Ist man wieder oben, erkennt man die Stärken der Sprache.</li>
<li>So langsam haben die verfügbaren Javascript-/Ajax-Frameworks einen Reifegrad erreicht, der einem Arbeit abnimmt. Dies war nicht immer so.</li>
<li>Die Performance im Browser kann unter den DOM-Manipulationen leiden. Sortierbare Tabellen oder andere aufwendige Operationen arbeiten an der Grenze des Machbaren</li>
<li>Browser und deren Technologien haben sich in den letzten Jahren weiterentwickelt, aber HTML wurde nicht dafür geschaffen, dynamisch zu sein.</li>
</ul>
<p><strong>Was sind die Vorteile von Flex?</strong></p>
<ul>
<li>Schnelle Einarbeitung. Schon nach wenigen Tagen hat man Anwendungen erstellt, die selbst nach mehrjähriger Erfahrung mit HTML, CSS und Javascript länger gedauert hätten</li>
<li>Sexy Oberflächen. Eine Flex-Anwendung macht auf den ersten Blick einfach mehr her. Abgerundete und transparente Layer, Gradienten nach Wunsch ohne kompliziert skalierende Hintergrundgrafiken. Kleine Effekte, die mit zwei Zeilen Code eingefügt sind und nicht auf die Performance des Browsers drücken</li>
<li>Integration von Multimediainhalten. Ein Videoplayer, Musik gesteuert abspielen, alles eine Frage von wenigen Zeilen Code. Sauber und einfach klar in der Denkweise</li>
</ul>
<p><strong>Was sind die Nachteile von Flex?</strong></p>
<ul>
<li>Eine Flexanwendung sieht aus wie eine Flexanwendung. Kein echter Nachteil, aber ein Grafiker muss sich auch erst mal in das Skinning einarbeiten. Ansonsten hat man eine 08/15-Anwendung, was bei weiterer Verbreitung von Flex negativ ins Auge fallen wird</li>
<li>Kleine Anwendungen sind schnell realisiert, aber wird es etwas größer, so verliert man sich erst einmal wieder in Flex. Frameworks wie Cairngorm lösen diese Probleme, aber die Lernkurve ist plötzlich doch steiler als angenommen</li>
<li>Internationalisierung, automatisierte Builds und Codegenerierung sind möglich, aber viele Enterprise-Features verstecken sich doch sehr gut. Es macht oft den Anschein, als wäre manches zu kurz gesprungen</li>
<li>Flex generiert Flash und die Sprache MXML ist im Gegensatz zu purem Actionscript die Stärke, um schnell an ein Ziel zu kommen. Allerdings ist Flex ein Aufsatz auf Flash und die Trennung von MXML und Actionscript ist zu fließend, als das alles homogen wirkt.</li>
<li>Der Flexbuilder ist nunmal kein IntelliJ und die Tools wirken alle noch sehr roh. Die Erstellung von Anwendungen ist möglich, aber an vielen Enden könnte es besser laufen. Auch der Flex-Support in IntelliJ ist sehr weit von Java entfernt</li>
</ul>
<p><strong>Fazit:</strong></p>
<p>Benötigt man eine Multimedia-Anwendung, die viel Inhalte darstellt und schick herüberkommen soll, ist Flex sehr gut geeignet. Will man dagegen Daten pflegen und möglichst breiten Support für die Anwendung haben, so ist Ajax immer noch die bessere Wahl. Flash wirkt in der Welt des Webs immer noch als Fremdkörper. Deeplinks, kopieren von Inhalten, Ladezeit und die schon erlernte HTML-Usability sind Punkte, die gegen Flash sprechen. Wenn es aber darum geht, möglichst nah an Desktop-Anwendungen zu kommen, so ist Flex ein guter Weg und Air schon ein Ziel. Bei der Umsetzung einer Touchscreen-Anwendung standen wir auch vor der Überlegung auf Ajax zu setzen. Zum Glück haben wir an dieser Stelle auf Flex gesetzt, da seine Reaktionsgeschwindkeit ohne Page Reloads wesentlich natürlicher bei dem Anwendungsfall ist.</p>
<p>Alles was mit Flex geht, ist auch mit Ajax möglich. Aber der Aufwand kann enorm werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agimatec.de/blog/2008/04/ajax-vs-flex/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flex oder wie ich lernte, den Feind zu lieben</title>
		<link>http://www.agimatec.de/blog/2008/04/flex-oder-wie-ich-lernte-den-feind-zu-lieben/</link>
		<comments>http://www.agimatec.de/blog/2008/04/flex-oder-wie-ich-lernte-den-feind-zu-lieben/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 17:08:16 +0000</pubDate>
		<dc:creator>Fabian Crabus</dc:creator>
				<category><![CDATA[Deutsch]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Wochenendprojekte]]></category>

		<guid isPermaLink="false">http://www.agimatec.de/wordpress/?p=43</guid>
		<description><![CDATA[Ich mag Flash nicht. Also mag ich Flex nicht. Bisher. Aber wenn man nach vier Stunden Herumspielen an einem Samstagnachmittag ein Frontend entwickeln kann, dann heißt das: a) ich sollte mir ein vernünftiges Hobby suchen b) Flex ist schon cool Was habe ich bisher: einen Kalender mit Detailansicht und der Möglichkeit, per Drag&#38;Drop über Terminvorschläge [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-44" style="float: left;" title="kalender" src="http://www.agimatec.de/blog/wp-content/uploads/2008/04/kalender-300x188.png" alt="" width="300" height="188" />Ich mag Flash nicht. Also mag ich Flex nicht. Bisher. Aber wenn man nach vier Stunden Herumspielen an einem Samstagnachmittag ein Frontend entwickeln kann, dann heißt das:</p>
<p>a) ich sollte mir ein vernünftiges Hobby suchen</p>
<p>b) Flex ist schon cool</p>
<p>Was habe ich bisher: einen Kalender mit Detailansicht und der Möglichkeit, per Drag&amp;Drop über Terminvorschläge abzustimmen. Jetzt muss ich nur noch mit <a href="http://www.grails.org">Grails</a> einen Server dahinter packen und fertig.</p>
<p>Tja, wenn ich&#8217;s nicht hassen würde, mich selbst zu korrigieren, dann könnte ich noch zu einem Flex-Fan werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agimatec.de/blog/2008/04/flex-oder-wie-ich-lernte-den-feind-zu-lieben/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
