<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>technisch &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/technisch/</link>
	<description>Feed of posts on WordPress.com tagged "technisch"</description>
	<pubDate>Sun, 27 Dec 2009 17:23:53 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Konstruierte Typo-Illustrationen von Stephan Walther]]></title>
<link>http://christianjakob.wordpress.com/2009/11/16/konstruierte-typo-illustrationen-von-stephan-walther/</link>
<pubDate>Mon, 16 Nov 2009 15:49:52 +0000</pubDate>
<dc:creator>Christian</dc:creator>
<guid>http://christianjakob.wordpress.com/2009/11/16/konstruierte-typo-illustrationen-von-stephan-walther/</guid>
<description><![CDATA[Der Schweizer Art Director Stephan Walther baut sich die passende Typo einfach selber. Die Buchstabe]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Der Schweizer Art Director Stephan Walther baut sich die passende Typo einfach selber. Die Buchstaben verkörpern das jeweilige Motiv und reichen vom protzigen Bling-Bling bis zum lautstarken Rock (mir gefällt ganz klar die Tonleiter am Besten).</p>
<p><img src="http://christianjakob.wordpress.com/files/2009/11/sw-1.jpg?w=425" alt="sw-1" title="sw-1" width="425" height="506" class="aligncenter size-medium wp-image-941" /></p>
<p><img src="http://christianjakob.wordpress.com/files/2009/11/sw-2.jpg" alt="sw-2" title="sw-2" width="425" height="591" class="aligncenter size-full wp-image-942" /></p>
<p>Danke <a href="http://muddisbeste.wordpress.com/">Nicole</a>!<br />
Mehr auf<a href="http://lookslikegooddesign.com/illustrations-stephan-walter/"> lookslikegooddesign.com</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Bilder aus der Zukunft aus Warnemünde]]></title>
<link>http://frankkoebsch.wordpress.com/2009/11/03/bilder-aus-der-zukunft-aus-warnemunde/</link>
<pubDate>Tue, 03 Nov 2009 03:08:55 +0000</pubDate>
<dc:creator>frank8233</dc:creator>
<guid>http://frankkoebsch.wordpress.com/2009/11/03/bilder-aus-der-zukunft-aus-warnemunde/</guid>
<description><![CDATA[Ich habe in der Vergangenheit schon einige Bilder aus Warnemünde in meinem Blog gezeigt. Warnemünde ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ich habe in der Vergangenheit schon einige Bilder aus Warnemünde in meinem Blog gezeigt.</p>
<ul>
<li><a href="http://frankkoebsch.wordpress.com/2009/06/13/warnemunde/">Warnemünde bei Sturm</a></li>
<li><a href="http://frankkoebsch.wordpress.com/2009/06/14/mowen-in-warnemunde/">Möwen in Warnemünde </a></li>
<li><a href="http://frankkoebsch.wordpress.com/2009/06/28/malen-in-warnemunde/">Malen in Warnemünde</a></li>
<li><a href="http://frankkoebsch.wordpress.com/2009/07/22/sommertag-am-alten-strom/">Sommertag am Alten Strom</a></li>
<li><a href="http://frankkoebsch.wordpress.com/2009/07/24/noch-mal-der-alte-strom/">Der Alte Strom mit seinen Kapitänshäusern</a></li>
</ul>
<p>Heute möchte in Ihnen Bilder der Zukunft aus Warnemünde zeigen <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Am 30. und 31.10.2009 war der <strong>&#8220;Expedition Zukunft&#8221;  SCIENC=XPRESS</strong> in Warnemünde. Die Fotos in meinem Blog zeigen Ihnen ein paar Schnappschüsse aus dem Zug. Für mich war das Gesamtkonzept des Zuges interessant, es spannt einen Bogen vom von der Entwicklung des Wissens der Menschheit, dem Bevölkerungswachstum, den Anforderungen und Fortschritten in der Medizintechnik, der Entwicklung des Internets, der Chemie und und &#8230;.</p>
<p>Auf der Suche nach meinem Platz in der Zukunft habe ich mir gemeinsam mit meinem Sohn die Ausstellung angesehen. Witerhin war ich gespannt, ob etwas über den Beitrag von Kultur und Kunst in der Zukunft gesagt wird, mit welchem Design und Darstellungsmöglichkeiten gearbeitet wurde.<br />
Klar viele Dinge kannte ich, aus den LABs, der Zusammenarbeit mit dem Fraunhofer Institut, dem Netz, dem TV &#8230;. Aber der Zusammenhang zwischen den Themengebieten macht die Ausstellung interessant, neben den einzelnen Exponaten. Nur leider zum Thema Kunst und Kultur wenig zu finden, es war mehr ein Rückblick als ein Blick in die Zukunft. Aber es war auch nicht verwunderlich, denn die Kosten werden durch große Unternehmen, Forschungseinrichtungen getragen. So bleibt die Frage, wer hätte das Thema Kunst und Kultur sponsern können <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> , denn es wurden sogar die Nobelpreisträger im Bereich der Kunst und Kultur ausgeblendet.</p>

<p>Wenn Sie mehr über den Zug und das Ausstellungskonzept wissen wollen, nutzen Sie den <strong><a href="http://www.expedition-zukunft.org/science_express/virtuelle_tour/">virtuellen Rundgang</a></strong> oder / und den Informationen auf <strong><a href="http://www.expedition-zukunft.org/alias/Idee_Konzept/984489">dieser Web Seite</a></strong>. Wenn Sie die Chance habenden Zug zu besichtigen, nehmen Sie sich die Zeit. Es lohnt sich. <strong><a href="http://www.expedition-zukunft.org/alias/Tour/976109">Hier</a> </strong>finden Sie die entsprechenden Etappen.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apache Maven Beispiel]]></title>
<link>http://myminutes.wordpress.com/2009/10/30/apache-maven-beispiel/</link>
<pubDate>Fri, 30 Oct 2009 16:26:08 +0000</pubDate>
<dc:creator>dedeibel</dc:creator>
<guid>http://myminutes.wordpress.com/2009/10/30/apache-maven-beispiel/</guid>
<description><![CDATA[Maven ist ein build Tool und Framework für java, welches es sich zum Ziel gemacht hat dem Anwender m]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Maven ist ein build Tool und Framework für java, welches es sich zum Ziel gemacht hat dem Anwender möglichst viele Schritte abzunehmen. In der allmächtigen pom.xml werden alle relevanten Optionen konfiguriert und ansonsten mit Konventionen in Form von Verzeichnissturktur und Dateinamen gearbeitet.</p>
<p>Das Framework erhält durch seine Pluginfähigkeit eine gute Flexiblität und ermöglicht viele Aufgaben durch ein wenig Konfiguration zu lösen.</p>
<p>Ich will hier eine maven Version meines vorherigen <a href="http://myminutes.wordpress.com/2009/10/30/apache-ant-beispiel/">Apache ant Beispiels</a> zeigen, die zum gleichen Ergebnis führt. Zudem gibt es einen kleinen Unit-Test, da das Framework deren Einbindung direkt mitbringt.</p>
<p>(Die resource files und merge Datei liegen bewusst in einem Verzeichnis um herauszufinden wie man die Filter verwendet.)</p>
<h2>Code</h2>
<h3>Verzeichnisstruktur</h3>
<p>Die Grundstruktur von Maven ist dabei standardmäßig wie folgt:</p>
<pre class="brush: plain;">
pom.xml
src/main
src/resources
src/test
src/test/resources
</pre>
<p>Im Beispiel:</p>
<pre class="brush: plain;">
./pom.xml

./src
./src/main
./src/main/java
./src/main/java/de
./src/main/java/de/benjaminpeter
./src/main/java/de/benjaminpeter/print
./src/main/java/de/benjaminpeter/print/LoadFile.java
./src/main/java/de/benjaminpeter/print/Print.java

./src/main/resources
./src/main/resources/resources
./src/main/resources/resources/inputA
./src/main/resources/resources/inputB
./src/main/resources/resources/merge
./src/main/resources/resources/file

./src/test
./src/test/java
./src/test/java/de
./src/test/java/de/benjaminpeter
./src/test/java/de/benjaminpeter/print
./src/test/java/de/benjaminpeter/print/LoadFileTest.java

./src/test/resources
./src/test/resources/resources
./src/test/resources/resources/file
</pre>
<h3>Java src (analog zum ant Beispiel)</h3>
<pre class="brush: java;">
import java.io.*;
import java.lang.*;

public class LoadFile {
  public String load() throws FileNotFoundException, UnsupportedEncodingException, IOException {
    // File file = new File(&#34;resources/file&#34;);
    // FileInputStream fis = new FileInputStream(file);
    // Datei ist nun im jar, also muss sie anders geladen werden
    ClassLoader cl  = this.getClass().getClassLoader();
    InputStream fis = cl.getResourceAsStream(&#34;resources/file&#34;);
    // import groovy ... file.text ... :-/
    BufferedReader in = new BufferedReader(new InputStreamReader(fis));
    String str = &#34;&#34;;
    String ret = &#34;&#34;;
    while ((str = in.readLine()) != null) ret += str + '\n';
    return ret.substring(0, ret.length() - 1);
  }
}

import java.lang.*;

public class Print {
  public static void main(String[] args) {
    System.out.println(&#34;Hello.&#34;);
    try {
      System.out.println(&#34;Content:\n&#34;+
        new LoadFile().load());
    }
    catch (Exception e) {
      System.err.println(&#34;Error: &#34;+ e.getMessage());
    }
  }
}
</pre>
<h3>Ressourcen</h3>
<pre class="brush: plain;">
File: resources/file

A: Build @buildNumber@
If the writeList method doesn't
catch the checked exceptions
that can occur within it, the
writeList method must specify
that it can throw these
exceptions. Let's modify the
B:
original writeList method to
specify the exceptions it can
throw instead of catching
them. To remind you, here's
the original version of the
writeList method that won't
compile.
File: resources/inputA

A: Build @buildNumber@
If the writeList method doesn't
catch the checked exceptions
that can occur within it, the
writeList method must specify
that it can throw these
exceptions. Let's modify the
File: resources/inputB

B:
original writeList method to
specify the exceptions it can
throw instead of catching
them. To remind you, here's
the original version of the
writeList method that won't
compile.
File: resources/merge

#!/bin/sh
cat $1 $2 &#62; $3
</pre>
<p>Hierbei musste ich @date@ zu @buildNumber@ ändern, da es <em>ohne größeren Aufwand</em> nicht möglich properties in anderen properties zu verwenden. <em>(Falls es jemand besser weiß immer her damit, finde das durchaus wichtig)</em></p>
<h3>pom.xml</h3>
<pre class="brush: xml;">
&#60;project
   xmlns=&#34;http://maven.apache.org/POM/4.0.0&#34;
   xmlns:xsi=&#34;http://www.w3.org/2001/XMLSchema-instance&#34;
   xsi:schemaLocation=&#34;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&#34;&#62;
  &#60;!-- Basisinformationen zum Projekt --&#62;
  &#60;modelVersion&#62;4.0.0&#60;/modelVersion&#62;
  &#60;groupId&#62;de.benjaminpeter.print&#60;/groupId&#62;
  &#60;artifactId&#62;Print&#60;/artifactId&#62;
  &#60;packaging&#62;jar&#60;/packaging&#62;
  &#60;!-- Version des Projekts in maven, der Name des
       Jars kann noch einmal extra definiert werden! --&#62;
  &#60;version&#62;0.0.1&#60;/version&#62;
  &#60;name&#62;Print&#60;/name&#62;
  &#60;url&#62;http://maven.apache.org&#60;/url&#62;
  &#60;!-- Default dependency fuer Unit-Tests, bibliothek
     wird automatisch herunter geladen --&#62;
  &#60;dependencies&#62;
    &#60;dependency&#62;
      &#60;groupId&#62;junit&#60;/groupId&#62;
      &#60;artifactId&#62;junit&#60;/artifactId&#62;
      &#60;version&#62;3.8.1&#60;/version&#62;
      &#60;!-- scope:
           Gibt an, dass diese Abhaengigkeit nur
           zum Testen benötigt wird. Das heißt sie wird
           auch nur beim Ausführen der Tests
           heruntergeladen und ist im
           finalen jar/war nicht enthalten. --&#62;
      &#60;scope&#62;test&#60;/scope&#62;
    &#60;/dependency&#62;
  &#60;/dependencies&#62;
  &#60;build&#62;
    &#60;!-- Binde die resource &#34;resources/file&#34; ein, dies
         wird dynamisch erzeugt wie wir später sehen. --&#62;
    &#60;resources&#62;
      &#60;resource&#62;
        &#60;directory&#62;src/main/resources&#60;/directory&#62;
        &#60;includes&#62;
          &#60;include&#62;resources/file&#60;/include&#62;
        &#60;/includes&#62;
         &#60;!-- Zudem soll hier das
          Filtering aktiviert werden,
         das heißt wir lassen maven einen
         Platzhalter @buildNumber@ in der
         Datei ersetzen. --&#62;
        &#60;filtering&#62;true&#60;/filtering&#62;
      &#60;/resource&#62;
    &#60;/resources&#62;
    &#60;plugins&#62;
      &#60;!--
        Binde ein Plugin ein um die Build Nummer
        variabler erstellen zu können. Hiermit machen
        wir die Variable buildNumber vom aktuellen
        Datum abhängig.
        Auch das Plugin wird von maven bei Bedarf
        dynamisch herunter geladen. --&#62;
      &#60;plugin&#62;
        &#60;groupId&#62;org.codehaus.mojo&#60;/groupId&#62;
        &#60;artifactId&#62;buildnumber-maven-plugin&#60;/artifactId&#62;
        &#60;configuration&#62;
          &#60;format&#62;{0,date,yyyyMMdd}&#60;/format&#62;
          &#60;items&#62;
            &#60;item&#62;timestamp&#60;/item&#62;
          &#60;/items&#62;
        &#60;/configuration&#62;
        &#60;!-- Diese Block besagt, dass das Plugin in
             der validierungsphase (ganz am Anfang)
             ausgeführt werden soll. create ist dabei
             eine von mehreren Funktionen des Plugins
             die dabei aufgerufen werden soll. --&#62;
        &#60;executions&#62;
          &#60;execution&#62;
            &#60;phase&#62;validate&#60;/phase&#62;
            &#60;goals&#62;
              &#60;goal&#62;create&#60;/goal&#62;
            &#60;/goals&#62;
          &#60;/execution&#62;
        &#60;/executions&#62;
       &#60;/plugin&#62;
       &#60;!-- Mit dem jar Plugin können wir
          die Erzeugung des jar Files etwas
          anpassen. So setzen wir hier die
          MainClass fest um ein einfach
         ausführbares jar zu bekommen. --&#62;
       &#60;plugin&#62;
         &#60;groupId&#62;org.apache.maven.plugins&#60;/groupId&#62;
         &#60;artifactId&#62;maven-jar-plugin&#60;/artifactId&#62;
         &#60;configuration&#62;
           &#60;archive&#62;
            &#60;manifest&#62;
              &#60;mainClass&#62;Print&#60;/mainClass&#62;
              &#60;packageName&#62;&#60;/packageName&#62;
            &#60;/manifest&#62;
            &#60;manifestEntries&#62;
              &#60;mode&#62;development&#60;/mode&#62;
              &#60;url&#62;${pom.url}&#60;/url&#62;
            &#60;/manifestEntries&#62;
          &#60;/archive&#62;
        &#60;/configuration&#62;
      &#60;/plugin&#62;
      &#60;!-- exec Plugin, dies ermöglicht es alle
           Schweinereien zu machen die man
           sonst nicht hinbekommt.
           Wird hier auch zur Verfizierungsphase
           ausgeführt und ruft den Befehl &#34;merge&#34;
           aus dem resources Verzeichnis auf
          um die Datei &#34;file&#34; zu erzeugen.

           An dieser Stelle könnte man sicher auch
           ein Ant Plugin einbinden um komplexere
           Abläufe zu realisieren und Abhängigkeiten
           sowie bereits angelegte Dateien erkennen
           zu können. --&#62;
      &#60;plugin&#62;
        &#60;groupId&#62;org.codehaus.mojo&#60;/groupId&#62;
        &#60;artifactId&#62;exec-maven-plugin&#60;/artifactId&#62;
        &#60;version&#62;1.1&#60;/version&#62;
        &#60;executions&#62;
          &#60;execution&#62;
            &#60;phase&#62;verify&#60;/phase&#62;
            &#60;goals&#62;
              &#60;goal&#62;exec&#60;/goal&#62;
            &#60;/goals&#62;
          &#60;/execution&#62;
        &#60;/executions&#62;
        &#60;configuration&#62;
          &#60;executable&#62;./merge&#60;/executable&#62;
          &#60;workingDirectory&#62;${basedir}/src/main/resources/resources&#60;/workingDirectory&#62;
          &#60;arguments&#62;
            &#60;argument&#62;inputA&#60;/argument&#62;
            &#60;argument&#62;inputB&#60;/argument&#62;
            &#60;argument&#62;file&#60;/argument&#62;
          &#60;/arguments&#62;
        &#60;/configuration&#62;
      &#60;/plugin&#62;
    &#60;/plugins&#62;
    &#60;!-- Setze den Namen der jar Datei so, dass
         auch unsere im Plugin
         erzeugte buildNumber eingesetzt wird. --&#62;
    &#60;finalName&#62;${project.artifactId}-${buildNumber}&#60;/finalName&#62;
  &#60;/build&#62;
  &#60;properties&#62;
    &#60;!-- Funktioniert leider nicht :-/ --&#62;
    &#60;date&#62;${buildNumber}&#60;/date&#62;
  &#60;/properties&#62;
&#60;/project&#62;
</pre>
<h2>Ausführung</h2>
<h3>Build</h3>
<pre class="brush: plain;">
$ mvn install
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Print
[INFO]    task-segment: [install]
[INFO] ------------------------------------------------------------------------
Downloading: http://repo1.maven.org/maven2/net/java/dev/jna/jna/3.0.5/jna-3.0.5.pom
Downloading: http://repo1.maven.org/maven2/net/java/dev/jna/jna/3.0.5/jna-3.0.5.pom
[INFO] [buildnumber:create {execution: default}]
[INFO] Storing buildNumber: 20091030 at timestamp: 1256918122611
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Compiling 2 source files to /home/dedeibel/proggn/java/test/mvn-example/Print/target/classes
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] Compiling 1 source file to /home/dedeibel/proggn/java/test/mvn-example/Print/target/test-classes
[INFO] [surefire:test]
[INFO] Surefire report directory: /home/dedeibel/proggn/java/test/mvn-example/Print/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running LoadFileTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] [jar:jar]
[INFO] Building jar: /home/dedeibel/proggn/java/test/mvn-example/Print/target/Print-20091030.jar
[INFO] [exec:exec {execution: default}]
[INFO] [install:install]
[INFO] Installing /home/dedeibel/proggn/java/test/mvn-example/Print/target/Print-20091030.jar to /home/dedeibel/.m2/repository/de/benjaminpeter/print/Print/0.0.1/Print-0.0.1.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7 seconds
[INFO] Finished at: Fri Oct 30 16:55:26 CET 2009
[INFO] Final Memory: 31M/290M
[INFO] ------------------------------------------------------------------------
</pre>
<h3>Programm</h3>
<pre class="brush: plain;">
$ java -jar target/Print-20091030.jar
Hello.
Content:
A: Build 20091030
If the writeList method doesn't
catch the checked exceptions
that can occur within it, the
writeList method must specify
that it can throw these
exceptions. Let's modify the
B:
original writeList method to
specify the exceptions it can
throw instead of catching
them. To remind you, here's
the original version of the
writeList method that won't
compile.
</pre>
<h2>Fazit</h2>
<p>Den direkten Vergleich zwischen ant und maven fand ich sehr interessant. Im kleinen Beispiel kann man die Stärken von maven jedoch nur erahnen. So hätte es bei ant wieder einer extra Einbindung der Unit-Tests bedurft, die aber im Grunde für jedes Projekt gleich ist wenn man sich an die Konventionen hält. Weiterhin musste kein Finger krum gemacht werden um eine aktuelle Version der junit Abhängigkeit zu bekommen; ein großer Vorteil bei einem Umzug auf ein anderes System, sofort werden die benötigten Abhängigkeiten ohne Aufwand nachgezogen.</p>
<p>Der Teufel steckt im Detail, während das Anpassen des Dateinamens und Ausführen des merge Skripts bei ant ein Kinderspiel sind, da man hier direkt auf die Abhängigkeiten und jar Erstellung Einfluss hat, scheint der Weg bei Maven für alles ein Plugin installieren zu müssen doch etwas umständlich. Letztendlich ist es aber eine Gute Sache, da es Plugins für die Unterschiedlichsten Aufgaben gibt und diese einem wie maven selbst möglichst viel Arbeit abnehmen. Allgemein sollte man sich vielleicht weniger mit Details aufhalten und gerade bei Verwendung von Frameworks Kompromisse eingehen und sich an die Gegebenheiten gewöhnen. Bei großen Projekten ist es auch so schwer genug die Übersicht zu behalten.</p>
<h2>Quellen</h2>
<p><a href="http://maven.apache.org/">Apache maven</a><br />
<a href="http://maven.apache.org/guides/getting-started/">Maven getting started</a></p>
<p><em>Die Vernachlässigung von tollen Namespaces für meine Klassen sie mir verziehen.</em></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apache Ant Beispiel]]></title>
<link>http://myminutes.wordpress.com/2009/10/30/apache-ant-beispiel/</link>
<pubDate>Fri, 30 Oct 2009 11:47:43 +0000</pubDate>
<dc:creator>dedeibel</dc:creator>
<guid>http://myminutes.wordpress.com/2009/10/30/apache-ant-beispiel/</guid>
<description><![CDATA[Apache ant ist ein build Tool, hauptsächlich für Java, was XML Dateien als Konfiguration verwendet. ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Apache ant ist ein build Tool, hauptsächlich für Java, was XML Dateien als Konfiguration verwendet.</p>
<p>Ant war früher sehr populär und ist nun z.B. durch maven erweitert oder ivy ersetzt, da diese über automatische Abhängigkeitsauflösung verfügen. Beim Umgang mit maven können einige Ant Grundlagen nicht schaden.</p>
<p>Das folgende Beispiel baut zwei Klassen und packt diese dann mit den Resource files in ein gemeinsames Jar. Die Resource Dateien werden zuvor noch mit einem Zeitstempel versehen und zusammengeführt um die Möglichkeiten von ant zu demonstrieren.</p>
<p>In einem zweiten Beitrag zeiche ich die Umsetzung des gleichen Projektes mit maven. <a href="http://myminutes.wordpress.com/2009/10/30/apache-maven-beispiel/">Apache Maven Beispiel</a></p>
<h2>Code</h2>
<h3>Dateien</h3>
<pre class="brush: plain;">
./build.xml
./resources
./resources/inputA
./resources/inputB
./resources/merge
./src
./src/LoadFile.java
./src/Print.java
</pre>
<h3>Java Source</h3>
<pre class="brush: java;">
import java.io.*;
public class LoadFile {
  public String load() throws FileNotFoundException, UnsupportedEncodingException, IOException {
    char[] buff = new char[10240];
    // File file = new File(&#34;resources/file&#34;);
    // FileInputStream fis = new FileInputStream(file);
    // Datei ist nun im jar, also muss sie anders geladen werden
    ClassLoader cl  = this.getClass().getClassLoader();
    InputStream fis = cl.getResourceAsStream(&#34;resources/file&#34;);
    InputStreamReader in = new InputStreamReader(fis, &#34;UTF-8&#34;);
    in.read(buff, 0, 10240);
    return new String(buff);
  }
}

import java.lang.*;

public class Print {
  public static void main(String[] args) {
    System.out.println(&#34;Hello.&#34;);
    try {
      System.out.println(&#34;Content:\n&#34;+ new LoadFile().load());
    }
    catch (Exception e) {
      System.err.println(&#34;Error: &#34;+ e.getMessage());
    }
  }
}
</pre>
<h3>Ressourcen</h3>
<pre class="brush: plain;">
File: resources/inputA
A: Build @date@
If the writeList method doesn't
catch the checked exceptions
that can occur within it, the
writeList method must specify
that it can throw these
exceptions. Let's modify the

File: resources/inputB
B:
original writeList method to
specify the exceptions it can
throw instead of catching
them. To remind you, here's
the original version of the
writeList method that won't
compile. 

File: resources/merge
#!/bin/sh
cat $1 $2 &#38;gt; $3
</pre>
<h3>Ant build.xml</h3>
<pre class="brush: xml;">
&#60;project name=&#34;Print&#34; default=&#34;build&#34; basedir=&#34;.&#34;&#62;
    &#60;description&#62;
        Print example build file
    &#60;/description&#62;
  &#60;!-- set global properties for this build --&#62;
  &#60;property name=&#34;src&#34; location=&#34;src&#34;/&#62;
  &#60;property name=&#34;build&#34; location=&#34;build&#34;/&#62;
  &#60;property name=&#34;dist&#34;  location=&#34;.&#34;/&#62;
  &#60;property name=&#34;resources&#34; location=&#34;resources&#34;/&#62;

  &#60;!-- Vorbereitung der Resourcen --&#62;
  &#60;target name=&#34;prep&#34; depends=&#34;init&#34;&#62;
    &#60;!-- Aufruf des Merge Befehls mit den Dateipfaden als Argumenten --&#62;
    &#60;exec executable=&#34;${resources}/merge&#34;&#62;
      &#60;arg value=&#34;${resources}/inputA&#34;/&#62;
      &#60;arg value=&#34;${resources}/inputB&#34;/&#62;
      &#60;arg value=&#34;${build}/resources/file.in&#34;/&#62;
    &#60;/exec&#62;
    &#60;!-- Setze einen Filter, dieser kann das Vorkommen von @token@
         in Dateien während Kopierbefehlen durch einen Wert ersetzen.
         Dazu muss bei copy zum Beispiel filterting=&#34;true&#34; angegeben werden.

         Hier wird ein Vorkommen von @date@ durch einen Timestamp ersetzt.
         Die property DSTAMP kommt dabei vom Befehl mkstamp, welcher im
         target init ausgefuehrt wurde.  --&#62;
    &#60;filter token=&#34;date&#34; value=&#34;${DSTAMP}&#34;/&#62;
    &#60;!-- Kopiere die Datei um und wende dabei die Filter an --&#62;
    &#60;copy tofile=&#34;${build}/resources/file&#34; file=&#34;${build}/resources/file.in&#34; filtering=&#34;true&#34;/&#62;
    &#60;delete file=&#34;${build}/resources/file.in&#34;/&#62;
  &#60;/target&#62;

  &#60;target name=&#34;init&#34;&#62;
    &#60;!-- Create the time stamp, verfügbar als ${DSTAMP} --&#62;
    &#60;tstamp/&#62;
    &#60;property name=&#34;outjar&#34; value=&#34;${dist}/${ant.project.name}-${DSTAMP}.jar&#34;/&#62;
    &#60;!-- Create the build directory structure used by compile --&#62;
    &#60;mkdir dir=&#34;${build}&#34;/&#62;
    &#60;mkdir dir=&#34;${build}/resources&#34;/&#62;
  &#60;/target&#62;

  &#60;target name=&#34;compile&#34; depends=&#34;init&#34;
      description=&#34;compile the source &#34; &#62;
    &#60;!-- Compile the java code from ${src} into ${build} --&#62;
    &#60;javac srcdir=&#34;${src}&#34; destdir=&#34;${build}&#34;/&#62;
  &#60;/target&#62;

  &#60;target name=&#34;build&#34; depends=&#34;compile, prep&#34;
      description=&#34;generate the distribution&#34; &#62;
    &#60;jar jarfile=&#34;${outjar}&#34; basedir=&#34;${build}&#34;&#62;
      &#60;manifest&#62;
        &#60;!-- Muss angegeben werden damit java die Hauptklasse
             beim Ausfuehren des jars finden kann --&#62;
        &#60;attribute name=&#34;Main-Class&#34; value=&#34;Print&#34;/&#62;
      &#60;/manifest&#62;
    &#60;/jar&#62;
  &#60;/target&#62;

  &#60;target name=&#34;clean&#34;
        description=&#34;clean up&#34; &#62;
    &#60;!-- Delete the ${build} and ${dist} directory trees --&#62;
    &#60;delete dir=&#34;${build}&#34;/&#62;
    &#60;delete&#62;
      &#60;fileset dir=&#34;.&#34; includes=&#34;Print*.jar&#34;/&#62;
    &#60;/delete&#62;
  &#60;/target&#62;
&#60;/project&#62;
</pre>
<h2>Ausführung</h2>
<pre class="brush: plain;">
$ ant
Buildfile: build.xml

init:
    [mkdir] Created dir: /home/dedeibel/proggn/java/test/ant/build
    [mkdir] Created dir: /home/dedeibel/proggn/java/test/ant/build/resources

compile:
    [javac] Compiling 2 source files to /home/dedeibel/proggn/java/test/ant/build

prep:
     [copy] Copying 1 file to /home/dedeibel/proggn/java/test/ant/build/resources
   [delete] Deleting: /home/dedeibel/proggn/java/test/ant/build/resources/file.in

build:
      [jar] Building jar: /home/dedeibel/proggn/java/test/ant/Print-20091030.jar

BUILD SUCCESSFUL
Total time: 2 seconds
</pre>
<p>Anwendung:</p>
<pre class="brush: plain;">
$ java -jar Print-20091030.jar
Hello.
Content:
A: Build 20091030
If the writeList method doesn't
catch the checked exceptions
that can occur within it, the
writeList method must specify
that it can throw these
exceptions. Let's modify the
B:
original writeList method to
specify the exceptions it can
throw instead of catching
them. To remind you, here's
the original version of the
writeList method that won't
compile.
</pre>
<h2>Quellen</h2>
<p><a href="http://ant.apache.org/">Apache ant homepage</a><br />
<a href="http://ant.apache.org/manual/using.html#buildfile">Writing a simple ant file</a></p>
<p><em>Die Vernachlässigung von tollen Namespaces für meine Klassen sie mir verziehen.</em></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[QBasic on Linux]]></title>
<link>http://myminutes.wordpress.com/2009/10/09/qbasic-on-linux/</link>
<pubDate>Thu, 08 Oct 2009 23:03:52 +0000</pubDate>
<dc:creator>dedeibel</dc:creator>
<guid>http://myminutes.wordpress.com/2009/10/09/qbasic-on-linux/</guid>
<description><![CDATA[Mich hat es heute irgendwie gepackt und ich habe meine alten Jugendsünden wieder einmal herausgekram]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Mich hat es heute irgendwie gepackt und ich habe meine alten Jugendsünden wieder einmal herausgekramt. BASIC heißt das Zauberwort.</p>
<p>Früher auf dem 486er, den ich von meinem Onkel hatte <em>(vielen Dank an dieser Stelle noch einmal, wer weiß ob mich der PC und das Programmieren ohne dich jemals so gefessel hätte)</em>, habe ich sehr viel mit QBasic herumgespielt, ohne ein Fünkchen Ahnung davon zu haben. Es war sehr spannend was man alles mit ein paar Zeilen Text machen konnte, es machte Spaß bestehende Programme zu analysieren, die Hilfe-Funktion zu durchforsten, wilde, durch alle Farben iterierende Schleifen zu bauen. Dass ich dabei den furchtbarsten Code meines Lebens produziert habe, war damals wohl egal.</p>
<p>Ich bin heute jedoch froh, dass ich diese Relikte noch aufgehoben habe, samt einer Kopie von QBasic.</p>
<p>Mit Hilfe von <em>dosemu</em> bzw. <em>xdosemu</em> kann man das Programm <em>(qb.exe)</em> nämlich noch wunderbar starten und seine alten Machwerke bestauenen. Vielleicht führe ich mein großes Spieleprojekt &#8220;Hunt&#8221; einmal zu Ende &#8230; im Rentenalter.</p>
<p>Freebasic habe ich auch probiert zu verwenden, es war auf die schnelle aber nicht auf AMD 64 zum laufen zu bringen, 32Bit X Libs gefehlt und den Code habe ich nur als BASIC Code gefunden &#8230;</p>
<p>Anbei ein paar Screenshots von <em>qb.exe</em> auf <em>dosemu</em>.<br />
<em>(Für irgendwelche Schmerzen, geistiger oder körperliche Art dir durch den Anblick des Codes entstehen könnten übernehme ich keinerlei Haftung.)</em></p>

</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Das Cottbus-Spiel]]></title>
<link>http://nummerneun.wordpress.com/2009/09/16/das-cottbus-spiel/</link>
<pubDate>Wed, 16 Sep 2009 19:56:14 +0000</pubDate>
<dc:creator>Markus</dc:creator>
<guid>http://nummerneun.wordpress.com/2009/09/16/das-cottbus-spiel/</guid>
<description><![CDATA[Geschichte wiederholt sich. Der KSC spielt auswärts am Montagabend, ein neuer Trainer sitzt auf der ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Geschichte wiederholt sich. Der KSC spielt auswärts am Montagabend, ein neuer Trainer sitzt auf der Bank, in einem Stadion, in dem sie die Jahre vorher eigentlich nie was geholt haben. Aber was passiert? Nach dem <a href="http://nummerneun.wordpress.com/2009/08/25/der-bann-ist-gebrochen/" target="_blank">Sieg in München</a> bei den 60ern gewinnen sie jetzt auch noch überzeugend in Cottbus. Und das erreichten sie nicht einmal mit einer großen kämpferischen Leistung, nein, spielerisch wird das gelöst. Spieler, die in den letzten Jahren oft genug eine Einsatzchance hatten, aber nie überzeugt haben, spielen nun ganz groß auf (Timm, Staffeldt). Und während hinten der Rückkehrer Miller eine Ecke direkt ins Tor segeln lässt, schafft man vorne ganze 4 Tore.</p>
<p>Die wahre Herausforderung für den neuen Trainer Schupp steht jetzt aber erst am Freitag bevor: Gegen das Tabellenschlußlicht FSV Frankfurt kann man eigentlich nur verlieren. Ein knapper Sieg wäre eigentlich keine Schlagzeile wert.</p>
<p>Bemerkenswert auch: Die Spieler stellen sich zum Anpfiff auf, der Sponsorenhinweis im DSF ist grade gelaufen, da klingelt mein Telefon. So ein Timing kann ja nur eine fußballuninteressierte Frau haben. Aber da ich ja zu Beginn des Jahres technisch ganz <a href="http://nummerneun.wordpress.com/2009/03/18/zeitversetzt/" target="_blank">stark aufgerüstet</a> habe, kann ich dem Schicksal ein Schnippchen schlagen: Ich drücke für das TV-Signal einfach auf Pause. Telefoniere eine halbe Stunde und lasse dann das Spiel starten. Fantastisch.</p>
<p>Die Halbzeitpause wird einfach überskippt und nach dem Spiel sofort zu den Interviews weiter gespult. <em>Das </em>ist mal richtig komfortabel. Sollte noch jemand das Spiel hier im Haus verfolgt haben, dürfte er (oder sie) sich vielleicht über die verzögerten Torrufe gewundert haben, aber gut, das ist nicht mein Problem. Jeder lebt doch irgendwo in seiner eigenen Zeit, oder nicht?</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Kijkje onder de kap]]></title>
<link>http://steel2steal.wordpress.com/2009/08/26/kijkje-onder-de-kap/</link>
<pubDate>Wed, 26 Aug 2009 12:18:39 +0000</pubDate>
<dc:creator>steel2steal</dc:creator>
<guid>http://steel2steal.wordpress.com/2009/08/26/kijkje-onder-de-kap/</guid>
<description><![CDATA[Afgelopen winter (2008/2009) veel aandacht geschonken aan de luchtflow. Tot dan toe was de motor nog]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Afgelopen winter (2008/2009) veel aandacht geschonken aan de luchtflow. Tot dan toe was de motor nog uitgerust met de originele in- en uitlaat, en met name de uitlaat was een bron van ellende. Veel lekkage en ook de flow was waarschijnlijk niet optimaal. Daarom is een nieuwe uitlaat gemaakt met het doel om van de lekkages af te komen en ook de positie van de turbo te verbeteren. Onder de kleine 806 motorkap is het allemaal al krap en moest de turbo er ook steeds af als bijvoorbeeld de kleppen gesteld moesten worden.</p>
<p><img class="alignnone size-full wp-image-50" title="s2s1" src="http://steel2steal.wordpress.com/files/2009/08/s2s1.jpg" alt="s2s1" width="450" height="337" /></p>
<p>De ingreep heeft uiteindelijk wel verbeteringen gebracht al leek het eerst allemaal niet geweldig. De eerste wedstrijd in Kamperveen leek de motor last te hebben van veel teveel brandstof, dus dit ernstig teruggeschroefd. Vervolgens bleef het op de wedstrijd in Hoogeveen bij een paar zielige klapjes en een paar meter door (bleek achteraf) een platgeknepen gasolieslang. Veel zin om alles bij het oud-ijzer te zetten maar toch met kleine modificatie op naar Nunspeet, en daar werd gewonnen! Een dag later in Bathmen weer 1e. Dus inclusief sterallures naar de enige echte thuiswedstrijd in Staphorst. Maar daar ging het helemaal niet; de combinatie van zwaardere kleibaan, samen met te weinig toeren en brandstof ging de motor veel te gauw door de knieen. Daarna de brandstofpomp opnieuw afgesteld om de motor taaier te krijgen, en door elke wedstrijd kleine wijzigingen door te voeren lijkt het tot nu toe prima te gaan.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="227" valign="top">
<p align="center">Type motor</p>
</td>
<td width="283" valign="top">
<p align="center">IHC 466DT (origineel 7.6ltr, nu 8.9ltr)</p>
</td>
</tr>
<tr>
<td width="227" valign="top">
<p align="center">Boring</p>
</td>
<td width="283" valign="top">
<p align="center">118 mm</p>
</td>
</tr>
<tr>
<td width="227" valign="top">
<p align="center">Slag</p>
</td>
<td width="283" valign="top">
<p align="center">137 mm</p>
</td>
</tr>
<tr>
<td width="227" valign="top">
<p align="center">Toerental</p>
</td>
<td width="283" valign="top">
<p align="center">2700 rpm max</p>
</td>
</tr>
<tr>
<td width="227" valign="top">
<p align="center">Brandstofpomp</p>
</td>
<td width="283" valign="top">
<p align="center">P7000, 14 mm</p>
</td>
</tr>
<tr>
<td width="227" valign="top">
<p align="center">Nokkenas</p>
</td>
<td width="283" valign="top">
<p align="center">DT468 roller nokkenas</p>
</td>
</tr>
<tr>
<td width="227" valign="top">
<p align="center">Koppeling</p>
</td>
<td width="283" valign="top">
<p align="center">4 plaats 13”</p>
</td>
</tr>
<tr>
<td width="227" valign="top">
<p align="center">Turbo</p>
</td>
<td width="283" valign="top">
<p align="center">Holset HX60 (32/76)</p>
</td>
</tr>
</tbody>
</table>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[issuu - you publish!]]></title>
<link>http://emodlernblog.wordpress.com/2009/08/25/issuu-you-publish/</link>
<pubDate>Tue, 25 Aug 2009 06:32:28 +0000</pubDate>
<dc:creator>adrianvilliger</dc:creator>
<guid>http://emodlernblog.wordpress.com/2009/08/25/issuu-you-publish/</guid>
<description><![CDATA[Auch wenn man keine eigenen Broschüren designed ist es interessant, verschiedenen Layouts und grafis]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/TcLV1CsGCJg&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/TcLV1CsGCJg&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></p>
<p>Auch wenn man keine eigenen Broschüren designed ist es interessant, verschiedenen Layouts und grafische Finessen zu begutachten. <span style="color:#ffff99;">Hervorragendes Anschauungsmaterial und Inspirationsquelle für eigene Designarbeiten!</span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[BGH: Legostein als Marke gelöscht]]></title>
<link>http://jusatpublicum.wordpress.com/2009/07/17/bgh-legostein-als-marke-geloscht/</link>
<pubDate>Fri, 17 Jul 2009 09:35:56 +0000</pubDate>
<dc:creator>Liz</dc:creator>
<guid>http://jusatpublicum.wordpress.com/2009/07/17/bgh-legostein-als-marke-geloscht/</guid>
<description><![CDATA[Ein Legostein mit der typischen Noppenanordnung auf der Oberseite war vom Deutschen Patent- und Mark]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:center;"><img class="alignnone size-medium wp-image-808" title="5593777b" src="http://jusatpublicum.wordpress.com/files/2009/07/5593777b.jpg?w=300" alt="5593777b" width="300" height="196" /></p>
<p style="text-align:center;">
<p style="text-align:justify;">Ein Legostein mit der typischen Noppenanordnung auf der Oberseite war vom Deutschen Patent- und Markenamt im Jahre <strong>1996</strong> als dreidimensionale Marke für die Ware &#8220;Spielbausteine&#8221; eingetragen worden. Dagegen richteten sich mehrere Löschungsanträge, weil nach Meinung der Antragsteller die dreidimensionale Marke nicht hätte eingetragen werden dürfen.</p>
<p>Der <strong>Bundesgerichtshof</strong> hat die vom <strong>Bundespatentgericht</strong> ausgesprochene Löschung der Marke bestätigt [Beschlüsse vom 16. Juli 2009 – I ZB 53/07 und 55/07 – Legostein Bundespatentgericht, Beschlüsse vom 2. Mai 2007 – 26 W (pat) 80/05 und 26 W (pat) 82/05 Karlsruhe, den 17. Juli 2009]<br />
Er hat angenommen, dass <!--more-->der Legostein von der Eintragung als dreidimensionale Marke nach § 3 Abs. 2 Nr. 2 MarkenG ausgeschlossen ist. Nach dieser Bestimmung sind Zeichen <strong>dem Markenschutz nicht zugänglich,</strong> <strong>wenn sie ausschließlich aus einer Form bestehen, die zur Erreichung einer technischen Wirkung erforderlich ist.</strong> Der Vorschrift des § 3 Abs. 2 Nr. 2 MarkenG liegt der Rechtsgedanke zugrunde, dass im Allgemeininteresse Formen vom Markenschutz freigehalten werden müssen, deren wesentliche Merkmale eine technische Funktion erfüllen.</p>
<p>Der Bundesgerichtshof ist davon ausgegangen, dass für die Frage der Eintragung des Spielbausteins als Marke ausschließlich auf die Klemmnoppen auf der Oberseite des Spielsteins abzustellen ist. Die quaderförmige Gestaltung des Steins kann für den Markenschutz nicht berücksichtigt werden, weil es sich um die Grundform der Warengattung handelt, die nach § 3 Abs. 2 Nr. 1 MarkenG nicht geschützt werden kann. Die Noppen auf der Oberseite des Spielsteins haben ausschließlich eine technische Funktion. Sie sind im Zusammenwirken mit der Gestaltung der Innenseite des Spielsteins Teil des für Lego typischen Klemmsystems. <strong>Über weitergehende nicht technische Gestaltungsmerkmale verfügt der Legobaustein nicht.</strong> Die technischen Bestandteile des Spielsteins müssen aber im Interesse der Wettbewerber vom Markenschutz freigehalten werden.</p>
<p>Quelle:  <a href="http://juris.bundesgerichtshof.de/cgi-bin/rechtsprechung/document.py?Gericht=bgh&#38;Art=en&#38;Datum=2009&#38;Sort=3&#38;nr=48677&#38;linked=pm&#38;Blank=1" target="_blank"><strong><span style="color:#008000;">Mitteilung BGH vom 17.6.2009</span></strong></a><a href="http://juris.bundesgerichtshof.de/cgi-bin/rechtsprechung/document.py?Gericht=bgh&#38;Art=en&#38;Datum=2009&#38;Sort=3&#38;nr=48677&#38;linked=pm&#38;Blank=1" target="_blank"><strong><span style="color:#008000;"> </span></strong></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[MySQL GROUP BY Gotcha]]></title>
<link>http://myminutes.wordpress.com/2009/07/14/mysql-group-by-gotcha/</link>
<pubDate>Tue, 14 Jul 2009 08:37:11 +0000</pubDate>
<dc:creator>dedeibel</dc:creator>
<guid>http://myminutes.wordpress.com/2009/07/14/mysql-group-by-gotcha/</guid>
<description><![CDATA[Ich will hier kurz ein Gotcha vorstellen, das bei der Verwendung von Group By unter MySQL auftreten ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ich will hier kurz ein Gotcha vorstellen, das bei der Verwendung von Group By unter MySQL auftreten kann und dann ein Gegenbeispiel in PostgreSQL bringen.</p>
<p>Nehmen wir folgende Tabelle an:</p>
<p><code><br />
O_Id    OrderDate     OrderPrice    Customer<br />
1      2008/11/12      1000    Hansen<br />
2      2008/10/23      1600    Nilsen<br />
3      2008/09/02      700    Hansen<br />
4      2008/09/03      300    Hansen<br />
5      2008/08/30      2000    Jensen<br />
6      2008/10/04      100    Nilsen<br />
</code></p>
<p>Dann wäre das folgende Query gültig und hilfreich um die Summe für einen Kunden zu bestimmen:</p>
<p><code><br />
$ SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer<br />
Customer     SUM(OrderPrice)<br />
Hansen     2000<br />
Nilsen     1700<br />
Jensen     2000<br />
</code></p>
<p>Hierbei befinden sich alle angezeigten Felder in dem GROUP BY Ausdruck oder in einer Aggregatfunktion.</p>
<p>Unter MySQL ist jedoch auch folgendes möglich:</p>
<p><code><br />
SELECT * FROM Orders GROUP BY Customer<br />
</code></p>
<p>Hierbei würde nach Kunde Gruppiert, sowie alle anderen Felder angezeigt werden. Allerdings ist hierbei *nicht definiert welche Werte die nicht gruppierten Felder haben!* Siehe dazu auch <a href="http://dev.mysql.com/doc/refman/5.1/de/group-by-hidden-fields.html">MYSQL: GROUP BY mit versteckten Feldern</a>. Hier wird dies &#8220;Feature&#8221; genannt und muss explizit deaktiviert werden &#8230;</p>
<p>Unter PostgreSQL bekommt man jedoch standardmäßig folgende Fehlermeldung die einem vor so manchem Fehler bewahren kann:</p>
<p><code><br />
$ SELECT * FROM Orders GROUP BY Customer;<br />
ERROR:  column "Orders.O_Id" must appear in the GROUP BY clause or be used in an aggregate function<br />
</code></p>
<p><strong>Quellen:</strong></p>
<ul>
<li><a href="http://www.w3schools.com/SQl/sql_groupby.asp">w3schools GROUP BY</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.1/de/group-by-hidden-fields.html">MYSQL: GROUP BY mit versteckten Feldern</a></li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Senior (technisch) SAP BI consultant K4 ]]></title>
<link>http://tntict.wordpress.com/2009/06/25/senior-technisch-sap-bi-consultant-k4/</link>
<pubDate>Thu, 25 Jun 2009 07:57:37 +0000</pubDate>
<dc:creator>tntict</dc:creator>
<guid>http://tntict.wordpress.com/2009/06/25/senior-technisch-sap-bi-consultant-k4/</guid>
<description><![CDATA[Sta jij als SAP BI consultant stevig in de techniek, ben je communicatief vaardig, ben je het zat om]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><table border="0" width="475">
<tbody>
<tr>
<td>Sta jij als SAP BI consultant stevig in de techniek, ben je communicatief vaardig, ben je het zat om in de file te staan en wil jij graag werken bij het gecertificeerde Customer Competence Center van één van de grootste particuliere werkgevers van Nederland? Dan is dit de functie voor jou!</td>
</tr>
<tr>
<td> </td>
</tr>
</tbody>
</table>
<table border="0" width="475">
<tbody>
<tr>
<td>Standplaats</td>
<td>Den Haag</td>
</tr>
<tr>
<td>Bedrijfsonderdeel</td>
<td>TNT Post &#8211; ICT Mail &#8211; 1</td>
</tr>
<tr>
<td>Aantal uren</td>
<td>40</td>
</tr>
<tr>
<td> </td>
</tr>
</tbody>
</table>
<table border="0" width="475">
<tbody>
<tr>
<td>Functieomschrijving</td>
</tr>
<tr>
<td>De uitdagingBinnen het SAP CCC van TNT worden o.a. de verschillende SAP Data Warehouses (DWH) en de operational datastore met Track &#38; Trace informatie t.b.v. TNT Pakketservice, die onderdeel van het uitgebreide SAP systeemlandschap van TNT uitmaken, proactief beheerd en verder uitgebouwd. Voor de back-end van de verschillende SAP BI omgevingen wordt sinds medio 2008 gebruik gemaakt van SAP BI 7.0, terwijl voor de front-end kant gebruik wordt gemaakt van een mix van 3.x en 7.0 tools (Portals, Integrated Planning, Xcelsius).</p>
<p>Wat zijn de verantwoordelijkheden van de Senior SAP BI (K4) Consultant?</p>
<p>• Informatieanalyse<br />
• Maken funtioneel- en/of technisch ontwerp<br />
• Ontwerpen / uitbouwen datamodel<br />
• Ontwerpen / bouwen ETL-processen<br />
• Ontwerpen en bouwen data marts / (standaard) query’s / (standaard) rapportages<br />
• Ontwerpen en bouwen van planningslay-outs, invoerschermen (zowel Excel als web) en kopieerfuncties met BPS functionaliteit van SAP BW 3.5 en/of Integrated Planning in SAP BI 7.0.<br />
• Ondersteunen van (gebruikers)acceptatietests<br />
• Begeleiden van gebruikers tijdens de pilot fase<br />
• Quality Assurance op de front office ontwikkelde (standaard)rapportages<br />
• Uitvoeren van (gestructureerde) unit- en integratietests<br />
• Schrijven/onderhouden van (beheer)documentatie<br />
• Trainen/coaching (interne) collega’s<br />
• Monitoren ETL- en query processen<br />
• Performance &#38; capacity management<br />
• Incident-, change- en problemmanagement</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>Gewenst profiel</td>
</tr>
<tr>
<td>• HBO werk- en denkniveau<br />
• Uitgebreide brede kennis en ervaring op het gebied van de volgende SAP BI deelgebieden:<br />
o Extractie uit zowel R/3, CRM, SRM als non-SAP bronnen<br />
o Modellering<br />
o Ontwerpen / bouwen ETL-processen<br />
o Ontwerpen / realiseren van BPS en/of Integrated Planning (IP)-oplossingen<br />
o SAP BI front-end tools<br />
o SAP BI performance issues<br />
o Vertrouwd met alle technische aspecten van SAP BI en daardoor in staat de meest complexe en lastige vraagstukken op te lossen.<br />
o Ruime ervaring met zowel projectmatige als beheerwerkzaamheden<br />
o SAP BI gecertificeerd voor versie 7.0<br />
• Kennis/ervaring met ABAP (up to release 7.0)<br />
• Conceptueel denker en in staat concept naar realisatie te vertalen<br />
• Goede kennis van de moderne bedrijfsvoering en de ondersteuning hiervan middels business intelligence toepassingen<br />
• Goed ontwikkeld vermogen om de business te adviseren/ondersteunen bij keuzes m.b.t. de inzet van SAP BI oplossingen.<br />
• Beschikt over het vermogen om zich snel in te werken in (complexe) (logistieke) business processen<br />
• Bereidheid om buiten de gebruikelijke kantoortijden waakdiensten te lopen en/of (geplande) werkzaamheden uit te voeren<br />
• Dienstverlener met een hoog verantwoordelijkheidsgevoel<br />
• Goede communicatieve vaardigheden<br />
• Bereid om (interne) collega’s te trainen en/of te coachen<br />
• Teamplayer<br />
• Staat bekend als expert op zijn/haar vakgebied<br />
• Minimaal 5-6 jaar SAP BI/BW ervaring.</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>Wat bieden wij?</td>
</tr>
<tr>
<td>• Afhankelijk van ervaring tot maximaal € 5204,93:<br />
• 37 urige werkweek:<br />
• Een state of the art omgeving:<br />
• Een uitdagende maar ook een veeleisende functie:<br />
• Ruimte voor persoonlijke ontwikkeling:<br />
• Aandacht voor een gezonde werk / privé balans:<br />
• Enthousiaste en gemotiveerde collega’s:<br />
• Vaste standplaats Den Haag:</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>Plaats in de organisatie</td>
</tr>
<tr>
<td>ICT Mail<br />
ICT Mail, omzet circa € 80 miljoen, is de ICT dienstverlener van TNT Post, die de Nederlandse organisatie onderdelen en haar buitenlandse dochters van hoogwaardige ICT diensten voorziet. ICT mail heeft in de afgelopen jaren aangetoond een professionele dienstverlener te zijn die zich goed kan meten met externe marktpartijen. Met de focus op klantgerichtheid en innovatie neemt ICT Mail zowel in standaard als maatwerkdiensten een prominente positie in.TNT<br />
TNT N.V. biedt onder de merknamen TNT Post en TNT Express wereldwijd een breed scala aan post- en expressdiensten. TNT heeft vestigingen in meer dan 60 landen, is in meer dan 200 landen actief en staat genoteerd aan de beurs van Amsterdam. TNT Post is een begrip in Nederland en in toenemende mate daarbuiten. Elke dag levert TNT een logistieke topprestatie met meer dan 161.000 mensen wereldwijd waarvan 60.000 in Nederland bij TNT Post. Hiermee is TNT Post de grootste particuliere werkgever van Nederland. De markt verandert snel door de toenemende digitalisering en concurrentie. In deze markt wil TNT Post een zeer innovatief en betrouwbaar bedrijf blijven om de huidige belangrijke positie bij haar klanten te behouden en verder uit te breiden.</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>Interesse?</td>
</tr>
<tr>
<td>Voor meer informatie over de selectieprocedure kun je bellen met Gijs Aanen (ICT Recruiter TNT Professional Recruitment) via telefoonnummer 06-10971448 Solliciteren hier naar de functie van <a href="http://http://www.connexys.nl/tntpublic/run/s00_pub_reg.startup?z_f_taal=1&#38;z_kan_advertentie_id=15761&#38;p_pub_id=1&#38;p_prompt_taal=1&#38;z_chk=32054" target="_blank">Senior (technisch) SAP BI consultant K4</a>  </td>
</tr>
</tbody>
</table>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Web 2.0]]></title>
<link>http://ictsgr5.wordpress.com/2009/06/23/web-2-0/</link>
<pubDate>Tue, 23 Jun 2009 18:46:08 +0000</pubDate>
<dc:creator>dborgions</dc:creator>
<guid>http://ictsgr5.wordpress.com/2009/06/23/web-2-0/</guid>
<description><![CDATA[De term Web 2.0 verwijst naar een duidelijk waarneembare trend op het internet, die sterk in beteken]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>De term Web 2.0 verwijst naar een duidelijk waarneembare trend op het internet, die sterk in betekenis toeneemt. Web 2.0 wordt omschreven als de tweede fase in de ontwikkeling van het World Wide Web. Het gaat over de verandering van een verzameling websites naar een volledig platform voor interactieve webapplicaties voor eindgebruikers op het Internet. (Bron: <a title="Wikipedia - Web 2.0" href="http://nl.wikipedia.org/wiki/Web2.0" target="_blank">Wikipedia</a>)</p>
<p>In een notedop komt het er op neer dat de term <strong>Web 2.0 </strong>alle toepassingen en programma&#8217;s omvat die je op het Internet kan gebruiken, zonder dat je hiervoor iets moet installeren op je eigen computer. Dit kunnen programma&#8217;s zijn om foto&#8217;s te bewerken, om bestanden online te bewaren,&#8230; of toepassingen zoals deze blog!</p>
<p>De mogelijkheden zijn eindeloos. Het spreekt dan ook voor zich dat er een heleboel web 2.0 toepassingen beschikbaar zijn voor gebruik in de klas. Je vindt er vast en zeker een aantal bruikbare terug via Google óf op deze blog.</p>
<p style="text-align:center;"><img class="size-full wp-image-19 aligncenter" title="web2.0" src="http://ictsgr5.wordpress.com/files/2009/06/web2-01.jpg" alt="web2.0" width="237" height="214" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Deploy the Spring Security Tutorial]]></title>
<link>http://myminutes.wordpress.com/2009/06/17/deploy-the-tutorial-sample-application/</link>
<pubDate>Wed, 17 Jun 2009 16:31:48 +0000</pubDate>
<dc:creator>dedeibel</dc:creator>
<guid>http://myminutes.wordpress.com/2009/06/17/deploy-the-tutorial-sample-application/</guid>
<description><![CDATA[Ich arbeite mich zur Zeit ein wenig in verschiedene Sicherheitsframeworks für Java ein und bin gerad]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ich arbeite mich zur Zeit ein wenig in verschiedene Sicherheitsframeworks für Java ein und bin gerade dabei Spring Security genauer unter die Lupe zu nehmen.</p>
<p>Allerdings gab es bereits Probleme beim Deployen der Beispielanwendung aus dem <a href="http://static.springframework.org/spring-security/site/start-here.html">Quick Start Guide</a>. </p>
<p>Der Tomcat Application Manager gab nachdem Installieren nur ein sehr hilfreiches: <em>FEHLER &#8211; Anwendung mit Kontext Pfad /tutorial konnte nicht gestartet werden</em> von sich.</p>
<p>Das Systemlog führte einen dann schon eher auf die richtige Fährte:</p>
<p><code>[ERROR,[/tutorial]] Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListener java.security.AccessControlException: access denied (java.util.PropertyPermission tutorial.root read)<br />
...<br />
SEVERE: Error listenerStart<br />
SEVERE: Context [/tutorial] startup failed due to previous errors</code></p>
<p>Interessanterweise landete die oberste Meldung nicht in den Tomcat Logs sondern nur in der <em>/var/log/syslog</em>. Die <em>SEVERE</em> Meldungen sind auch in den Tomcat Logs zu finden aber eben nicht annähernd so hilfreich.</p>
<p>Um nun nicht die ganze Beispielanwendung untersuchen und die einzelnen Regeln definieren zu müssen, reicht es für Testzwecke aus die Sicherheitsprüfung im Tomcat zu deaktivieren. Für den 5.5er Tomcat untern Debian, wird dies in der <em>/etc/default/tomcat5.5</em> mit dem Eintrag <em>TOMCAT5_SECURITY=no</em> erreicht.</p>
<p>hth</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[GP2X revival]]></title>
<link>http://myminutes.wordpress.com/2009/05/17/gp2x-revival/</link>
<pubDate>Sun, 17 May 2009 15:09:13 +0000</pubDate>
<dc:creator>dedeibel</dc:creator>
<guid>http://myminutes.wordpress.com/2009/05/17/gp2x-revival/</guid>
<description><![CDATA[Ich habe mir endlich mal wieder eine neue SD Karte geholt und die Chance genutzt um meinen guten alt]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ich habe mir endlich mal wieder eine neue SD Karte geholt und die Chance genutzt um meinen guten alten GP2X F100 MK1 auszupacken. Damals hatte ich mir gleich einen aus den ersten Fuhren ergattert und habe mich schon riesig gefreut Emulatoren zu zocken, Videos zu schauen und selber Anwendungen zu schreiben.</p>
<p>Nunja an Anwendungen ist dann nicht sooo viel dabei heraus gekommen, ich habe eine Version von Game of Life für den GP2X geschrieben, sowie eine Version von einem Rubik&#8217;s Cube in 3D in der Mache. Dieser ist allerdings noch nicht fertig. Mal sehen ob das überhaupt noch was wird.</p>
<p>Infos über den GP2X gibt es auf der deutschen Portalseite <a href="http://www.gp2x.de/cms/content/view/48/110/">gp2x.de</a>. Wichtige Anlaufpunkte sind hierbei das <a href="http://forum.gp2x.de/">Forum</a>, <a href="http://wiki.gp2x.org">Wiki</a> und das <a href="http://archive.gp2x.de/cgi-bin/cfiles.cgi">Dateiarchiv</a>.</p>
<h3>GP2X of Life</h3>
<p><a href="http://github.com/dedeibel/GP2X-of-life/tree/master">GP2X of Life in git</a><br />
<a href="http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,37,1809">GP2X of Life im GP2X Archiv</a><br />
Eine Version von <a href="http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Game of Life</a> für den <a href="http://www.gp2x.de/cms/content/view/48/110/">GP2X</a> handheld. Mit der SDL auch unter Linux ausführbar.<br />
<img src="http://archive.gp2x.de/cfiles/screenshots/gp2xoflife.png" alt="GP2X of life screenshot" /></p>
<p>Man sollte jedoch nicht verheimlichen dass das gerät mittlerweile schon einige Jahre auf dem Buckel hat und es demnächst die <em><a href="http://wiki.openpandora.de/Pandora">Pandora</a></em> gibt. Mit WLAN und allem Schnickschnack. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Groovy Methodenauswahl Gotcha]]></title>
<link>http://myminutes.wordpress.com/2009/05/01/groovy-methodenauswahl-gotcha/</link>
<pubDate>Fri, 01 May 2009 19:39:26 +0000</pubDate>
<dc:creator>dedeibel</dc:creator>
<guid>http://myminutes.wordpress.com/2009/05/01/groovy-methodenauswahl-gotcha/</guid>
<description><![CDATA[Groovy hat mich schon wieder erwischt. Da wollte ich doch nur eine Methode aufrufen die wahlweise ei]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Groovy hat mich schon wieder erwischt. Da wollte ich doch nur eine Methode aufrufen die wahlweise einen String oder ein Array von Strings erwartet, jedoch war das Ergebnis eher überraschend.</p>
<p>Man nehme:</p>
<pre class="brush: java;">
public class CallString {
  private String[] books = new String[64]
  public void setBook(String book) {
    System.out.println(&quot;set book string&quot;)
    this.books[0] = book
  }
  public void setBook(String[] inBooks) {
    System.out.println(&quot;set book array&quot;)
    for (int i = 0; i &lt; inBooks.length &amp;&amp; books.length; ++i) {
      this.books[i] = inBooks[i]
    }
  }
  public String toString() {
    return &quot;[&quot;+ books.findAll {it != null}.join(&quot;, &quot;) +&quot;]&quot;
  }
}
</pre>
<p>Und rufe folgendes auf:</p>
<pre class="brush: java;">
CallString o = new CallString();
o.setBook(&quot;The Book&quot;)
println o
$ groovy call.groovy
set book string
[, The Book]
</pre>
<p>Okay das ist noch wie erwartet. Allerdings ist der Mensch ja faul und verwendet gerne die abgekürzte schreibweise:</p>
<pre class="brush: java;">
CallString o = new CallString();
o.book = &quot;The Book&quot;
println o
$ groovy call.groovy
set book array
[, T, h, e,  , B, o, o, k]
</pre>
<p>Das ist nun wirklich nicht das was ich erwartet habe und hat mich auch ein wenig Zeit gekostet. Das selbe passiert übrigens auch wenn <em>CallString</em> in Java geschrieben ist.</p>
<p>Wie dem auch sei scheint es wie auch bereits beim vorherigen <a href="http://myminutes.wordpress.com/2009/04/11/groovy-map-gotcha/">Groovy Map Gotcha</a> mit der Magie hinter dem Methodenzugriff per &#8220;.&#8221; zu stecken und man sollte direkt die gewünschten Methoden aufrufen wenn man auf der sicheren Seite sein will &#8211; oder muss wissen was man tut.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Just Sucking Finances]]></title>
<link>http://4politicians.wordpress.com/2009/04/24/just-sucking-finances/</link>
<pubDate>Fri, 24 Apr 2009 08:08:06 +0000</pubDate>
<dc:creator>Kaj Elhorst</dc:creator>
<guid>http://4politicians.wordpress.com/2009/04/24/just-sucking-finances/</guid>
<description><![CDATA[The plane that Jack built JSF for president en al dat soort leuzen, het heeft allemaal niets geholpe]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:center;"><img class="aligncenter" title="Flying Circus" src="http://imagecache.allposters.com/images/pic/CMAG/939-002~Monty-Python-s-Flying-Circus-Posters.jpg" alt="" width="310" height="450" /></p>
<p style="text-align:center;"><strong><em>The plane that Jack built</em></strong></p>
<p style="text-align:center;">JSF for president en al dat soort leuzen, het heeft allemaal niets geholpen. Leest men in Den Haag dit blog eigenlijk wel eens? Ik vraag me af of men überhaupt in staat is tot lezen. Heel anders zijn de verklaringen van de fracties van de regeringspartijen rond het &#8220;compromis&#8221; niet te verklaren: &#8220;ik kan toch niet lezen dus kalk maar wat neer&#8221;.  Gelukkig kan de oppositie ook niet lezen behalve tussen de regels door. Daar kun je alles lezen wat je wilt.</p>
<p style="text-align:center;">Ik begrijp helemaal niets van dit compromis. Het was helemaal niet nodig. Een kabinetscrisis was op zijn plaats geweest en ga me nou niet vertellen dat zoiets onverantwoord is in tijden van financiële crisis. Als de afspraken van dit &#8220;compromis&#8221; doorgaan, komen we vanzelf in de volgende financiële crisis terecht.</p>
<p style="text-align:center;">Eerlijk geezgd denk ik dat het de PvdA gesierd zou hebben om ronduit voet bij stuk te houden en gewoon dat hele vliegtuig af te schieten. Er is in het hele land niemand die weet wat we met het onzichtbare kreng moeten behalve een gekke ex-luchtmachtgeneraal die nog Berlijn heet ook. De rest van Nederland, nou ja behalve staatssecretaris Kuifje dan, heeft zijn verstand nog niet verloren.</p>
<p style="text-align:center;">Juist nu was het het goede moment voor een crisis geweest. Er zijn nog twee jaar te gaan dus de kabinetscrisis had geen al te grote invloed kunnen hebben op de verkiezingsuitlslagen. Voor de PvdA had zo&#8217;n crisis het voordeel van stemmenwinst kunnen hebben vanwege standvastigheid en helder inzicht. Dat blijft de mensen bij gedurende twee jaar. Zwabberbeleid is nu juist wat we altijd het CDA verwijten. Het gevaar bestaat nu dat er over twee jaar over een ander punt een crisis ontstaat en wie dan de dwarsligger is, krijgt de Zawrte Piet toegespeeld. Wedden dat het CDA die blaam <strong><em>niet </em></strong>gaat treffen? </p>
<p style="text-align:center;">Volgens de PvdA-fractie is er nog ovoldoende informatie om zo&#8217;n vliegtuig aan te schaffen. Kletskoek! Het is al lang bekend dat het toestel veel te duur is en nooit ergens nuttig voor zal kunnen zijn (voor zover wapens sowieso nuttig kunnen zijn). Er is geen vijand te bedenken die met het vliegtuig bestreden zou moeten worden. Bovendien is het meest bespottelijke argument dat we straks beschikken over een vkliegtuig dat bij de tijd is.  Gezien de snelheid van de hedendaagse technische ontwikkelingen valt dat helemaal niet te voor- en ook niet te overzien. </p>
<p style="text-align:center;">Er wordt nu al geruime tijd gebekvecht over het vliegtuig. Vervolgens gaat het heel lang duren voordat het er echt zal zijn en daarna willen we er veertig jaar lang mee werken. Veertig jaar? Bij de tijd? Je moet toch wel haast dement zijn om te denken dat zoiets mogelijk is. Mensen die zulke gedachten er op na houden, zitten met hun verstand ergens tussen de tiende en en zeventiende eeuw in, het tijdperk waarin het paard de allerkrachtigste bron van energie was, naast de wind natuurlijk en dan heb ik het nog niet over ed winden die de paarden veroorzaakten bij hun krachtsinspanningen.</p>
<p style="text-align:center;">Bij de tijd! Over veertig tot  vijftig jaar is mijn mobiele telefoon mogelijk aangebracht in een hersenstamcel en ben ik in staat zelf te vliegen, zonder vliegtuig. Ik dematerialiseer en ben in staat de JSF bij de staart te pakken en met zijn neus door de hondenstront (want die ligt er nog steeds) in het plantsoen te halen. Terroristen detecteren het vliegtuig bovendien met een speciaal oog dat je tegen die tijd voor 500 euro kunt laten inbouwen en halen het neer met een handwapen van € 150,-  dat onzichtbare energiestoten uitzendt. Alleen de gemiddelde burgerlul die het predikaat &#8220;kiezer&#8221; draagt , heeft het gebrek aan fantasie dat nodig is om te zeggen dat dit onzin is. En zijn of haar politieke voormannen doen het af met &#8220;Dat zien we dan wel weer.&#8221;</p>
<p style="text-align:center;">Kortom, een kabinetscrisis had de PvdA alleen maar voordeel opgeleverd en zou prachtig zijn geweest. Jammer, gemiste kans. O ja, en dan was er nog het argument van de werkgelegenheid. Nou, die hebben we dankzij de vergrijzing helemaal niet nodig. Wie gaan eigenlijk de schulden betalen die we met dat gekke ding ons op de hals halen? JSF: Just Sucking Finances. Heeft de PvdA hiermee genoeg informatie?</p>
<p style="text-align:center;">Tot sterkte,</p>
<p style="text-align:center;">Kaj Elhorst</p>
<p style="text-align:center;"><a href="http://4politicians.wordpress.com">Http://4politicians.wordpress.com</a></p>
<p style="text-align:center;"><strong>Service</strong></p>
<p style="text-align:center;"><a href="http://www.omroepbrabant.nl/?thema/25122/Radio.aspx"><strong>http://www.omroepbrabant.nl/?thema/25122/Radio.aspx</strong></a></p>
<p style="text-align:center;"><a href="http://www.bndestem.nl/regio/bergenopzoom/4866693/JSFbrief-burgemeester-Breda-wekt-woede-D66.ece"><strong>http://www.bndestem.nl/regio/bergenopzoom/4866693/JSFbrief-burgemeester-Breda-wekt-woede-D66.ece</strong></a></p>
<p style="text-align:center;"><span style="color:#008000;"><a href="http://www.nu.nl/algemeen/1953325/koortsachtig-overleg-moet-jsf-botsing-voorkomen.html"><strong>www.nu.nl/algemeen/1953325/koortsachtig-overleg-moet-jsf-botsing-voorkomen.html</strong></a></span></p>
<p style="text-align:center;"><span style="color:#008000;"><a href="http://www.nrc.nl/binnenland/article2220298.ece/PvdA_riskeert_kabinetscrisis_met_JSF-besluit"><strong>www.nrc.nl/binnenland/article2220298.ece/PvdA_riskeert_kabinetscrisis_met_JSF-besluit</strong></a><strong> </strong></span></p>
<p style="text-align:center;"><span style="color:#008000;"><a href="http://www.geenstijl.nl/mt/archieven/2009/04/grijs_1_blijft_in_leven_jsf_op.html"><strong>www.geenstijl.nl/mt/archieven/2009/04/grijs_1_blijft_in_leven_jsf_op.html</strong></a></span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Siderische of synodische?]]></title>
<link>http://koemunicatie.wordpress.com/2009/04/15/siderische-of-synodische/</link>
<pubDate>Wed, 15 Apr 2009 16:30:56 +0000</pubDate>
<dc:creator>Koe</dc:creator>
<guid>http://koemunicatie.wordpress.com/2009/04/15/siderische-of-synodische/</guid>
<description><![CDATA[En als Koe het dan heeft over ezelsbruggetjes, dochterlief, knokkels tellen en dergelijke, dan komt ]]></description>
<content:encoded><![CDATA[En als Koe het dan heeft over ezelsbruggetjes, dochterlief, knokkels tellen en dergelijke, dan komt ]]></content:encoded>
</item>
<item>
<title><![CDATA[Groovy Map Gotcha]]></title>
<link>http://myminutes.wordpress.com/2009/04/11/groovy-map-gotcha/</link>
<pubDate>Sat, 11 Apr 2009 20:07:13 +0000</pubDate>
<dc:creator>dedeibel</dc:creator>
<guid>http://myminutes.wordpress.com/2009/04/11/groovy-map-gotcha/</guid>
<description><![CDATA[Ich schaue mir derzeit Groovy an und bin dabei auf etwas gestoßen was mich doch ziemlich verwirrt ha]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ich schaue mir derzeit Groovy an und bin dabei auf etwas gestoßen was mich doch ziemlich verwirrt hat. Es geht um das Verhalten des <em>.class</em> Attributs (?) von Objekten (Wobei sich dies hinterher als <em>&#8220;Feature&#8221;</em> der groovy Maps heraugestellt hat).</p>
<p><code><br />
groovy:000&#62; [1, 2, 3].class<br />
===&#62; class java.util.ArrayList<br />
// Wie erwartet<br />
</code></p>
<p><code><br />
groovy:000&#62; [a: 1, b: 2, c: 3].class<br />
===&#62; null<br />
// WTF?<br />
</code></p>
<p><code><br />
groovy:000&#62; [a: 1, b: 2, c: 3].getClass()<br />
===&#62; class java.util.LinkedHashMap<br />
// Hmm, das scheint aber zu funktionieren<br />
</code></p>
<p>Die Lösung dieses Mysteriums hat sich mir dann erschlossen als ich herausgefunden habe dass man auf Maps mittels Schreibweise: mymap.key zugreifen kann.</p>
<p><code><br />
groovy:000&#62; [a: 1, b: 2, class: 3].class<br />
===&#62; 3<br />
// Was sonst ... <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
</code></p>
<p>Wir lernen also:</p>
<ol>
<li>Benutze <em>getClass()</em></li>
<li>Magie hat nicht nur die Leute im Mittelalter verwirrt</li>
<li>Groovy hat einige Gotchas</li>
</ol>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Annoyme Portierung auf Mac OS X]]></title>
<link>http://myminutes.wordpress.com/2009/04/05/annoyme-portierung-auf-mac-os-x/</link>
<pubDate>Sun, 05 Apr 2009 21:17:49 +0000</pubDate>
<dc:creator>dedeibel</dc:creator>
<guid>http://myminutes.wordpress.com/2009/04/05/annoyme-portierung-auf-mac-os-x/</guid>
<description><![CDATA[Ich hatte mich schon immer auf eine Gelegenheit gefreut mal etwas bestehendes auf eine andere Platfo]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ich hatte mich schon immer auf eine Gelegenheit gefreut mal etwas bestehendes auf eine andere Platform zu portieren. Ich hab zwar schon unter Solarix und AIX gecodet aber nun hatte ich eben die Chance mein eigenes Annoyme auf OSX zu testen und war angenehm überrascht. Bis auf ein paar Probleme mit Includes, Anpassungen der cmake Skripte und Dateinamenprobleme hat es ganz gut geklappt.</p>
<p>Interessant war jedoch auch ein Problem mit libao unter 10.4 siehe: https://trac.xiph.org/ticket/727</p>
<p>Laufen tut annoyme jedoch noch nicht ganz auf Mac, die libao Version kann hier offenbar nur mit 44k Samples umgehen und bei annoyme gibts zur Zeit nur 22k.</p>
<p><code><br />
./annoyme<br />
...<br />
Opening sound output.<br />
ao_macosx_open: Only support 44.1kHz right now<br />
terminate called after throwing an instance of 'SoundOutputException'<br />
</code></p>
<p>Ingesamt würde ich auch sagen ist dies ein ziemlich guter Test für cmake gewesen von dem ich recht begeistert bin. Im gegensatz zu den autotools war der Einstieg auch recht einfach auch wenn man beim Einstieg vom ersten Howto eigentlich direkt in die Funktionsreferenz gehen muss da man ansonsten nur auf das Buch verwiesen wird und andere Einleitungsdokumente fehlen. http://www.cmake.org/</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mac - Case Insensitivity]]></title>
<link>http://myminutes.wordpress.com/2009/04/05/mac-case-insensitivity/</link>
<pubDate>Sun, 05 Apr 2009 19:51:21 +0000</pubDate>
<dc:creator>dedeibel</dc:creator>
<guid>http://myminutes.wordpress.com/2009/04/05/mac-case-insensitivity/</guid>
<description><![CDATA[Ein weiterer Fallstrick der mich bei meiner spielerei mit dem Mac überraschte war die offensichtlich]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ein weiterer Fallstrick der mich bei meiner spielerei mit dem Mac überraschte war die offensichtliche Case Insensitivtät unter OSX.</p>
<p>Als jemand der sich unter der Shell relativ wohl fühlt ist dies ein druchaus überraschendes Verhalten. Mir ist es jedoch erst aufgefallen, alls ich etwas aus dem Annoyme git Repository ausgecheckt habe und seltsamerweise immer eine Datei verändert war.</p>
<p>Im Repository gibt es eine Datei &#8220;annoyme.cpp&#8221;, welche <em>main</em> beinhaltet und &#8220;Annyome.cpp&#8221; für die Hauptklasse der Anwendung. Anscheinend muss ich mir hier aus portibilitätsgründen etwas neues ausdenken.</p>
<p>Hier ein kleines Beispiel wie sich die Case Insensitivität auf der Shell auswirken kann:<br />
<code><br />
/tmp/testrange)$ ls -l<br />
/tmp/testrange)$ touch thesame<br />
/tmp/testrange)$ ls -l<br />
total 0<br />
-rw-r--r--  1 bpeter  wheel     0B  5 Apr 21:37 thesame<br />
/tmp/testrange)$ touch TheSame<br />
/tmp/testrange)$ ls -l<br />
total 0<br />
-rw-r--r--  1 bpeter  wheel     0B  5 Apr 21:38 thesame<br />
/tmp/testrange)$ rm tHeSaMe<br />
/tmp/testrange)$ ls -l<br />
</code></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Linux NFS export auf Mac OSX mounten]]></title>
<link>http://myminutes.wordpress.com/2009/04/04/linux-nfs-export-auf-mac-osx-mounten/</link>
<pubDate>Sat, 04 Apr 2009 19:52:36 +0000</pubDate>
<dc:creator>dedeibel</dc:creator>
<guid>http://myminutes.wordpress.com/2009/04/04/linux-nfs-export-auf-mac-osx-mounten/</guid>
<description><![CDATA[Dank der Firma komme ich dieses Wochenende in den Genuss mich ein wenig mit der Materie Mac OSX auße]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Dank der Firma komme ich dieses Wochenende in den Genuss mich ein wenig mit der Materie Mac OSX außereinanderzusetzen. Leihweise habe ich ein Macbook zur Verfügung und versuche mich ein wenig damit zurecht zu finden. Als alter Linux user ist man doch sehr an einige Begebenheiten gewohnt aber das mounten von NFS sollte ja doch möglich sein.</p>
<p>Mein Desktop Rechner exportier ein Dateisystem <em>/media</em> das ich gerne auf den Dektop in das Verzeichnis <em>jet</em> mounten möchte, doch unter OSX erwies sicht das als nicht ganz Problemlos.</p>
<p>Ein normales mounten des Dateisytems schlug fehl.</p>
<p><code>sudo mount -t nfs -o ro 192.168.0.2:/media /Users/bpeter/Desktop/jet/</code></p>
<p>Dies ergab den folgenden Fehler <code>"mount_nfs: /Users/bpeter/Desktop/jet/: Operation not permitted".</code> &#8212; Natürlich nicht sonderlich aussagekräftig, da die Freigabe für die Client IP des Macbooks durchaus in der <em>/etc/exports</em> sowie <em>/etc/hosts.allow</em> gegeben war. Ein Blick in die syslog-Datei der Linux Kiste verriet jedoch schon etwas mehr.</p>
<p><code>Apr  4 21:27:15 jet nfsd[3186]: NFS request from noname originated on insecure port, psychoanalysis suggested</code></p>
<p>Ein Blick in die manpage von <em>mount_nfs</em> enhüllte dann, dass es eine Option namens &#8220;resvport&#8221; gibt. Diese sorgt dafür, dass der verwendete Port des NFS Clients unter den reservierten Portnummern ist und daher auch von etwas pingeligen NFS Servern akzeptiert wird. Um das mount Problem also zu lösen musste ich nur folgenden Befehl verwenden:</p>
<p><code>sudo mount -t nfs -o ro,noresvport,noowners 192.168.0.2:/media /Users/bpeter/Desktop/jet/</code></p>
<p>Zusätzlich habe ich den Befehl noowners angehängt, dieser sorgt dafür dass ich die Dateien öffnen kann auch wenn sie nicht die selbe UID wie ich haben. (Ein Hoch auf die Sicherheit von NFS &#8230;). Das Verzeichnis wurde nun korrekt eingebunden.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[De schaal van Scoville]]></title>
<link>http://koemunicatie.wordpress.com/2009/04/04/de-schaal-van-scoville/</link>
<pubDate>Sat, 04 Apr 2009 08:00:01 +0000</pubDate>
<dc:creator>Koe</dc:creator>
<guid>http://koemunicatie.wordpress.com/2009/04/04/de-schaal-van-scoville/</guid>
<description><![CDATA[De wat? Schaal van wie? Scoville, wat is dat dan? Heb jij er ooit van gehoord? De schaal van Scovill]]></description>
<content:encoded><![CDATA[De wat? Schaal van wie? Scoville, wat is dat dan? Heb jij er ooit van gehoord? De schaal van Scovill]]></content:encoded>
</item>
<item>
<title><![CDATA[web 2.0 (a fast introduction)]]></title>
<link>http://emodlernblog.wordpress.com/2009/04/01/web-20-a-fast-introduction/</link>
<pubDate>Wed, 01 Apr 2009 12:29:46 +0000</pubDate>
<dc:creator>adrianvilliger</dc:creator>
<guid>http://emodlernblog.wordpress.com/2009/04/01/web-20-a-fast-introduction/</guid>
<description><![CDATA[Ein zwar zwei Jahre altes, aber nicht minder informatives Video über die Möglichkeiten der web2.0 Te]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ein zwar zwei Jahre altes, aber nicht minder informatives Video über die <span style="color:#ffff99;"><strong>Möglichkeiten der web2.0 Technologien</strong></span>&#8230;</p>
<p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/6gmP4nk0EOE&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/6gmP4nk0EOE&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Gerritdeclercq’s Weblog]]></title>
<link>http://gloomylunatic.wordpress.com/2009/03/27/gerritdeclercq%e2%80%99s-weblog/</link>
<pubDate>Fri, 27 Mar 2009 09:53:08 +0000</pubDate>
<dc:creator>gloomylunatic</dc:creator>
<guid>http://gloomylunatic.wordpress.com/2009/03/27/gerritdeclercq%e2%80%99s-weblog/</guid>
<description><![CDATA[Tijd voor wat reclame! Mijn vader heeft nu ook een weblog. De moeite om te bookmarken en met een reg]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Tijd voor wat reclame!</p>
<p>Mijn vader heeft nu ook een <a href="http://gerritdeclercq.wordpress.com/" target="_blank"><u>weblog</u></a>. De moeite om te <i>bookmarken</i> en met een regelmatig bezoekske te vereren, niet alleen omdat zijn recentste post over mijn recentste boete gaat (over de andere twee heeft hij nu niet echt weet, houden zo), maar ook omdat zijn pen simpelweg meestal stevig te smaken valt!</p>
<p>Doe ermee wat je wilt. God weet hoe lang dat ding tenslotte zal bestaan. Maar ik vertrouw op jullie beschaafdheid als het op comments aan komt.</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
