<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>all-IT</title>
	
	<link>http://www.k-oo.de/blog</link>
	<description>all-IT ist ein Blog aus dem IT Alltag</description>
	<lastBuildDate>Tue, 09 Mar 2010 19:18:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/All-it" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="all-it" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>delicious groovy – Lesezeichen automatisieren</title>
		<link>http://www.k-oo.de/blog/2010/03/09/delicious-groovy-lesezeichen-automatisieren/</link>
		<comments>http://www.k-oo.de/blog/2010/03/09/delicious-groovy-lesezeichen-automatisieren/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 19:18:05 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1556</guid>
		<description><![CDATA[Dass meine Beiträge für die Kategorie weekly links eine Zeit lang pausiert haben, lag auch daran, dass mich das Kopieren der Links ziemlich genervt hat. 
Was macht man also als Programmierer, wenn der Leidensdruck hoch genug ist &#8211; man liest eine API (in diesem Fall die von delicious.com), nimmt die Programmiersprache seiner Wahl (bei mir [...]]]></description>
			<content:encoded><![CDATA[<p>Dass meine Beiträge für die Kategorie <a href="http://www.k-oo.de/blog/category/weekly-links/">weekly links</a> eine Zeit lang pausiert haben, lag auch daran, dass mich das Kopieren der Links ziemlich genervt hat. </p>
<p>Was macht man also als Programmierer, wenn der Leidensdruck hoch genug ist &#8211; man liest eine API (in diesem Fall die von <a href="http://delicious.com/">delicious.com</a>), nimmt die Programmiersprache seiner Wahl (bei mir <a href="http://groovy.codehaus.org">Groovy</a>) und schafft Abhilfe.</p>
<p>Der Urvater der online Lesezeichenverwalter delicious.com stellt eine <a href="http://delicious.com/help/api">REST basierte API</a> bereit. Groovy bietet mit dem Modul <a href="http://groovy.codehaus.org/modules/http-builder/home.html">HTTPBuilder</a> ein mächtiges Tool, dass einem die Arbeit mit HTTP basierten Resourcen extrem erleichtert.</p>
<p>Nach einer erfolgreichen Authentifizierung und einer gültigen Anfrage erhält man eine XML Antwort, die so aussehen könnte:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>posts tag<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span> user<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;user&quot;</span><span style="color: #339933;">&gt;</span>
  <span style="color: #339933;">&lt;</span>post href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;http://www.weather.com/&quot;</span> description<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;weather.com&quot;</span>
  hash<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;6cfedbe75f413c56b6ce79e6fa102aba&quot;</span> tag<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;weather reference&quot;</span>
  time<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;2005-11-29T20:30:47Z&quot;</span> <span style="color: #339933;">/&gt;</span>
    ...
  <span style="color: #339933;">&lt;</span>post href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;http://www.nytimes.com/&quot;</span>
  description<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;The New York Times - Breaking News, World News &amp; Multimedia&quot;</span>
  extended<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;requires login&quot;</span> hash<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;ca1e6357399774951eed4628d69eb84b&quot;</span>
  tag<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;news media&quot;</span> time<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;2005-11-29T20:30:05Z&quot;</span> <span style="color: #339933;">/&gt;</span>
<span style="color: #339933;">&lt;/</span>posts<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p>Testen kann man erst einmal auf der Kommandozeile mittels <code>curl</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">&gt; curl https://user:passwd@api.del.icio.us/v1/posts/recent</pre></div></div>

<p>Bestimmte URL&#8217;s wie z.B. <code>posts/all</code> sollte man nicht zu oft aufrufen, da sie limitiert sind. Macht man es doch (wie ich) erhält man den Fehler 999. Besser ist es da nur die letzten Einträge (per Default 15) über <code>posts/recent</code> anzufragen. Das ganze Programm sah dann bei mir so aus:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">groovyx.net.http.*</span> 
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">groovy.util.slurpersupport.GPathResult</span> 
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> DeliciousBookmarkClient <span style="color: #009900;">&#123;</span>
&nbsp;
   <span style="color: #000000; font-weight: bold;">static</span> main<span style="color: #009900;">&#40;</span>args<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      def dc<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> DeliciousBookmarkClient<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
      dc.<span style="color: #006633;">request</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
   <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #000000; font-weight: bold;">public</span> request <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #666666; font-style: italic;">// Authentifizierung</span>
         def rc <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> RESTClient<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'https://username:password@api.del.icio.us/v1/posts/recent'</span> <span style="color: #009900;">&#41;</span>
         rc.<span style="color: #006633;">auth</span>.<span style="color: #006633;">basic</span> <span style="color: #0000ff;">&quot;username&quot;</span>, <span style="color: #0000ff;">&quot;password&quot;</span>
&nbsp;
         <span style="color: #666666; font-style: italic;">// anfragen und überprüfen der Antwort   </span>
         def resp<span style="color: #339933;">=</span>rc.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;count&quot;</span><span style="color: #339933;">:</span><span style="color: #0000ff;">&quot;5&quot;</span><span style="color: #009900;">&#41;</span>
         <span style="color: #000000; font-weight: bold;">assert</span> resp.<span style="color: #006633;">status</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">200</span>
         <span style="color: #000000; font-weight: bold;">assert</span> <span style="color: #009900;">&#40;</span> resp.<span style="color: #006633;">data</span> <span style="color: #000000; font-weight: bold;">instanceof</span> GPathResult <span style="color: #009900;">&#41;</span>
&nbsp;
         def recentPosts<span style="color: #339933;">=</span>resp.<span style="color: #006633;">data</span>.<span style="color: #006633;">post</span>
         println <span style="color: #0000ff;">&quot;Anzahl posts &quot;</span><span style="color: #339933;">+</span>recentPosts.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
&nbsp;
         <span style="color: #666666; font-style: italic;">// HTML Aufbereitung des Links und der Beschreibung</span>
         println <span style="color: #0000ff;">&quot;&lt;dl&gt;&quot;</span>
         recentPosts.<span style="color: #006633;">each</span><span style="color: #009900;">&#123;</span>post<span style="color: #339933;">-&gt;</span>
            def desc<span style="color: #339933;">=</span>post.@description.<span style="color: #006633;">text</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
            def href<span style="color: #339933;">=</span>post.@href.<span style="color: #006633;">text</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
            println <span style="color: #0000ff;">&quot;   &lt;dt&gt;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>$href<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;$desc&lt;/a&gt;&lt;/dt&gt;&quot;</span>
            println <span style="color: #0000ff;">&quot;      &lt;dd&gt;$desc&lt;/dd&gt;&quot;</span>
         <span style="color: #009900;">&#125;</span>
         println <span style="color: #0000ff;">&quot;&lt;/dl&gt;&quot;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         println e.<span style="color: #006633;">response</span>.<span style="color: #006633;">status</span>
         println e.<span style="color: #006633;">message</span>
      <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span>   
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Über die API lassen sich natürlich auch Lesezeichen hinzufügen und löschen. Das gilt auch für Tags und Tag Bundles. Damit bleiben keine Wünsche offen.</p>

	Tags: <a href="http://www.k-oo.de/blog/tag/groovy/" title="groovy" rel="tag">groovy</a>, <a href="http://www.k-oo.de/blog/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://www.k-oo.de/blog/tag/web/" title="Web" rel="tag">Web</a><br />

	Ähnliche Artikel:
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/03/06/weekly-links-6/" title="weekly links (March 6, 2010)">weekly links</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/03/05/grails-und-displaytag-paging-leicht-gemacht/" title="Grails und displaytag &#8211; Paging leicht gemacht (March 5, 2010)">Grails und displaytag &#8211; Paging leicht gemacht</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/03/02/opera-10-50-schnell-schneller-am-schnellsten/" title="Opera 10.50 &#8211; schnell, schneller am schnellsten (March 2, 2010)">Opera 10.50 &#8211; schnell, schneller am schnellsten</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/03/09/delicious-groovy-lesezeichen-automatisieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>weekly links</title>
		<link>http://www.k-oo.de/blog/2010/03/06/weekly-links-6/</link>
		<comments>http://www.k-oo.de/blog/2010/03/06/weekly-links-6/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 19:58:24 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[weekly links]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1549</guid>
		<description><![CDATA[Nach einer kleinen Unterbrechung sollen die wöchentlichen Links wieder starten.

What&#8217;s new in iBATIS 3
iBATIS gehört zur Familie der OR-Mapper, ist aber im Vergleich zu den Platzhirschen wie Hibernate sehr leichtgewichtig. Die Konfiguration von iBATIS 3 ist jetzt nicht nur mit XML, sondern auch mit Annotations möglich.
Read, recycle, and reuse: Reporting made easy with Excel, XML, [...]]]></description>
			<content:encoded><![CDATA[<p>Nach einer kleinen Unterbrechung sollen die wöchentlichen Links wieder starten.</p>
<dl>
<dt><a href="http://www.ibm.com/developerworks/java/library/os-ibatis3/index.html?ca=drs-">What&#8217;s new in iBATIS 3</a></dt>
<dd>iBATIS gehört zur Familie der OR-Mapper, ist aber im Vergleich zu den Platzhirschen wie Hibernate sehr leichtgewichtig. Die Konfiguration von iBATIS 3 ist jetzt nicht nur mit XML, sondern auch mit Annotations möglich.</dd>
<dt><a href="http://www.ibm.com/developerworks/java/library/x-jxmlexl/index.html?ca=drs-">Read, recycle, and reuse: Reporting made easy with Excel, XML, and Java technologies</a></dt>
<dd>Ein Einstieg in Excel mit Java.</dd>
<dt><a href="http://www.golem.de/1003/73551.html">Infrarotfernbedienung für das iPhone zum Nachrüsten</a></dt>
<dd>Infrarotfernbedienung für das iPhone zum Nachrüsten. Ich muss nur noch meine Frau überzeugen. <img src='http://www.k-oo.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </dd>
<dt><a href="http://jwebsocket.org/">jWebSocket &#8211; The Open Source Java WebSocket Server</a></dt>
<dd>Websockets sind ein Vorschlag von Google um das push and pull von Webservices durch eine Socket Verbindung auszutauschen. jWebSocket &#8211; The Open Source Java WebSocket Server ist eine erste Implementierung.</dd>
<dt><a href="http://it-republik.de/jaxenter/artikel/jWebSocket-statt-XHR-und-Comet-2904.html">jWebSocket statt XHR und Comet?</a></dt>
<dd>jWebSocket statt XHR und Comet? Ein Vergleich.</dd>
<dt><a href="http://paperc.de/">PaperC &#8211; online books</a></dt>
<dd>PaperC &#8211; Fachbücher online</dd>
</dl>

	Tags: <a href="http://www.k-oo.de/blog/tag/web/" title="Web" rel="tag">Web</a><br />

	Ähnliche Artikel:
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/03/09/delicious-groovy-lesezeichen-automatisieren/" title="delicious groovy &#8211; Lesezeichen automatisieren (March 9, 2010)">delicious groovy &#8211; Lesezeichen automatisieren</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/03/02/opera-10-50-schnell-schneller-am-schnellsten/" title="Opera 10.50 &#8211; schnell, schneller am schnellsten (March 2, 2010)">Opera 10.50 &#8211; schnell, schneller am schnellsten</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/02/28/im-not-too-old-for-this-shit/" title="I&#8217;m not too old for this shit (February 28, 2010)">I&#8217;m not too old for this shit</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/03/06/weekly-links-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grails und displaytag – Paging leicht gemacht</title>
		<link>http://www.k-oo.de/blog/2010/03/05/grails-und-displaytag-paging-leicht-gemacht/</link>
		<comments>http://www.k-oo.de/blog/2010/03/05/grails-und-displaytag-paging-leicht-gemacht/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 15:40:07 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1410</guid>
		<description><![CDATA[Wer sich nicht erst seit Grails mit Webanwendungen auf Java Basis beschäftigt, dem dürfte die JSP Taglib displaytag ein Begriff sein. 
Displaytag ermöglicht es ohne große Klimmzüge Tabellen in Java Server Pages auf mehrere Seiten aufzuteilen (Paging), zu sortieren, zu gruppieren und nach Excel, Csv, Xml und Pdf zu exportieren.
Grails unterstützt &#8220;out of the box&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Wer sich nicht erst seit Grails mit Webanwendungen auf Java Basis beschäftigt, dem dürfte die JSP Taglib <a href="http://displaytag.sourceforge.net/"><strong>displaytag</strong></a> ein Begriff sein. </p>
<p>Displaytag ermöglicht es ohne große Klimmzüge Tabellen in Java Server Pages auf mehrere Seiten aufzuteilen (<strong>Paging</strong>), zu <strong>sortieren</strong>, zu <strong>gruppieren</strong> und nach <strong>Excel, Csv, Xml und Pdf zu exportieren</strong>.<br />
Grails unterstützt &#8220;out of the box&#8221; nur das Paging und lange Zeit konnte man keine JSP Tag Libs in Grails verwenden, so dass man die restlichen Funktionalitäten entweder durch Plugins abbilden konnte oder selbst Hand anlegen musste.</p>
<p>Seit Grails 1.1 ist diese Beschränkung nun aufgehoben und der Test die beiden zu vereinen ist schon seit längerem erfolgreich abgeschlossen. Nur der Blog Eintrag darüber steht seit dem noch auf meiner ToDo Liste. Aber was lange währt wird gut (hoffe ich <img src='http://www.k-oo.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ).</p>
<p>Folgende Schritte sind zur Integration von displaytag in Grails notwendig:</p>
<h3>libs</h3>
<p>Zuerst sollten die Displaytag Bibliotheken neben dem Datenbank Treiber ins lib Verzeichnis kopiert werden.<br />
<img src="http://www.k-oo.de/blog/wp-content/uploads/2010/03/libs.jpg" alt="" title="displaytag Bibliotheken" width="360" height="139" class="aligncenter size-full wp-image-1536" /></p>
<h3>Displaytag Konfigurationsdatei</h3>
<p>Die Konfigurationsdatei von displaytag <a href="http://code.google.com/p/grum/source/browse/trunk/src/java/displaytag.properties">displaytag.properties</a> muss unter <code>src/java</code> erstellt werden. Der Aufbau dieser Datei ist in der <a href="http://displaytag.sourceforge.net/1.2/configuration.html">Doku</a> von displaytag beschrieben. Für mein <a href="http://code.google.com/p/grum">grum</a> Projekt sieht die Konfiguration so aus:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">export.<span style="color: #006633;">types</span><span style="color: #339933;">=</span>csv excel xml pdf
export.<span style="color: #006633;">excel</span><span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">true</span>
export.<span style="color: #006633;">csv</span><span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">true</span>
export.<span style="color: #006633;">xml</span><span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">true</span>
export.<span style="color: #006633;">pdf</span><span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">true</span>
export.<span style="color: #006633;">excel</span>.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span>org.<span style="color: #006633;">displaytag</span>.<span style="color: #006633;">export</span>.<span style="color: #006633;">excel</span>.<span style="color: #006633;">DefaultHssfExportView</span>
export.<span style="color: #006633;">pdf</span>.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span>org.<span style="color: #006633;">displaytag</span>.<span style="color: #006633;">export</span>.<span style="color: #006633;">DefaultPdfExportView</span>
export.<span style="color: #006633;">rtf</span>.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span>org.<span style="color: #006633;">displaytag</span>.<span style="color: #006633;">export</span>.<span style="color: #006633;">DefaultRtfExportView</span>
export.<span style="color: #006633;">banner</span><span style="color: #339933;">=&lt;</span>div <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;exportlinks&quot;</span><span style="color: #339933;">&gt;</span>Export to<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
export.<span style="color: #006633;">amount</span><span style="color: #339933;">=</span>list
paging.<span style="color: #006633;">banner</span>.<span style="color: #006633;">placement</span><span style="color: #339933;">=</span>bottom
basic.<span style="color: #006633;">msg</span>.<span style="color: #006633;">empty_list</span><span style="color: #339933;">=</span>No data found.
<span style="color: #006633;">basic</span>.<span style="color: #006633;">msg</span>.<span style="color: #006633;">empty_list_row</span><span style="color: #339933;">=&lt;</span>tr <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;empty&quot;</span><span style="color: #339933;">&gt;&lt;</span>td colspan<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;0&quot;</span><span style="color: #339933;">&gt;</span>No data found.<span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;&lt;/</span>tr<span style="color: #339933;">&gt;&lt;/</span>tr<span style="color: #339933;">&gt;</span>
paging.<span style="color: #006633;">banner</span>.<span style="color: #006633;">full</span><span style="color: #339933;">=&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;pagelinks&quot;</span><span style="color: #339933;">&gt;&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{1}&quot;</span><span style="color: #339933;">&gt;&lt;</span>strong<span style="color: #339933;">&gt;&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;&lt;/</span>strong<span style="color: #339933;">&gt;&lt;/</span>a<span style="color: #339933;">&gt;&amp;</span>nbsp<span style="color: #339933;">;&amp;</span>nbsp<span style="color: #339933;">;&amp;</span>nbsp<span style="color: #339933;">;&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{2}&quot;</span><span style="color: #339933;">&gt;&lt;</span>strong<span style="color: #339933;">&gt;&amp;</span>lt<span style="color: #339933;">;&lt;/</span>strong<span style="color: #339933;">&gt;&lt;/</span>a<span style="color: #339933;">&gt;&amp;</span>nbsp<span style="color: #339933;">;</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">&amp;</span>nbsp<span style="color: #339933;">;&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{3}&quot;</span><span style="color: #339933;">&gt;&lt;</span>strong<span style="color: #339933;">&gt;&amp;</span>gt<span style="color: #339933;">;&lt;/</span>strong<span style="color: #339933;">&gt;&lt;/</span>a<span style="color: #339933;">&gt;&amp;</span>nbsp<span style="color: #339933;">;&amp;</span>nbsp<span style="color: #339933;">;&amp;</span>nbsp<span style="color: #339933;">;&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{4}&quot;</span><span style="color: #339933;">&gt;&lt;</span>strong<span style="color: #339933;">&gt;&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;&lt;/</span>strong<span style="color: #339933;">&gt;&lt;/</span>a<span style="color: #339933;">&gt;&lt;/</span>span<span style="color: #339933;">&gt;</span>
paging.<span style="color: #006633;">banner</span>.<span style="color: #006633;">first</span><span style="color: #339933;">=&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;pagelinks&quot;</span><span style="color: #339933;">&gt;</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">&amp;</span>nbsp<span style="color: #339933;">;&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{3}&quot;</span><span style="color: #339933;">&gt;&lt;</span>strong<span style="color: #339933;">&gt;&amp;</span>gt<span style="color: #339933;">;&lt;/</span>strong<span style="color: #339933;">&gt;&lt;/</span>a<span style="color: #339933;">&gt;&amp;</span>nbsp<span style="color: #339933;">;&amp;</span>nbsp<span style="color: #339933;">;&amp;</span>nbsp<span style="color: #339933;">;&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{4}&quot;</span><span style="color: #339933;">&gt;&lt;</span>strong<span style="color: #339933;">&gt;&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;&lt;/</span>strong<span style="color: #339933;">&gt;&lt;/</span>a<span style="color: #339933;">&gt;&lt;/</span>span<span style="color: #339933;">&gt;</span>
paging.<span style="color: #006633;">banner</span>.<span style="color: #006633;">last</span><span style="color: #339933;">=&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;pagelinks&quot;</span><span style="color: #339933;">&gt;&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{1}&quot;</span><span style="color: #339933;">&gt;&lt;</span>strong<span style="color: #339933;">&gt;&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;&lt;/</span>strong<span style="color: #339933;">&gt;&lt;/</span>a<span style="color: #339933;">&gt;&amp;</span>nbsp<span style="color: #339933;">;&amp;</span>nbsp<span style="color: #339933;">;&amp;</span>nbsp<span style="color: #339933;">;&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{2}&quot;</span><span style="color: #339933;">&gt;&lt;</span>strong<span style="color: #339933;">&gt;&amp;</span>lt<span style="color: #339933;">;&lt;/</span>strong<span style="color: #339933;">&gt;&lt;/</span>a<span style="color: #339933;">&gt;&amp;</span>nbsp<span style="color: #339933;">;</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;</span>
paging.<span style="color: #006633;">banner</span>.<span style="color: #006633;">one_item_found</span><span style="color: #339933;">=&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;pagebanner&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">1</span> Record found. <span style="color: #006633;">Seite</span><span style="color: #339933;">:</span> <span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;</span>
paging.<span style="color: #006633;">banner</span>.<span style="color: #006633;">all_items_found</span><span style="color: #339933;">=&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;pagebanner&quot;</span><span style="color: #339933;">&gt;</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#125;</span> Records found. <span style="color: #006633;">Seite</span><span style="color: #339933;">:</span> <span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;</span>
paging.<span style="color: #006633;">banner</span>.<span style="color: #006633;">some_items_found</span><span style="color: #339933;">=&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;pagebanner&quot;</span><span style="color: #339933;">&gt;</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#125;</span> Records found, show <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#125;</span>. <span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;&lt;</span>br <span style="color: #339933;">/&gt;&lt;</span>br <span style="color: #339933;">/&gt;</span></pre></td></tr></table></div>

<h3>Displaytag Wrapper</h3>
<p>Dynamische Links und Formatierungen werden in displaytag über das Decorator Pattern umgesetzt. Der <a href="http://displaytag.sourceforge.net/1.2/tut_decorators.html">Decorator</a> wird in einer Wrapper Klasse implementiert, die in Grails natürlich in Groovy geschrieben ist. Meine Implementierung ist die Klasse <a href="http://code.google.com/p/grum/source/browse/trunk/src/groovy/de/koo/grum/groovy/util/DisplaytagWrapper.groovy">DisplaytagWrapper</a>, die im grum Projekt einen Link zu den Details der Benutzer erstellt und das Erstellungsdatum formatiert.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">de.koo.grum.groovy.util</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.displaytag.decorator.TableDecorator</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> DisplaytagWrapper <span style="color: #000000; font-weight: bold;">extends</span> TableDecorator<span style="color: #009900;">&#123;</span>
   <span style="color: #003399;">String</span> getLinkToUser<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      def user <span style="color: #339933;">=</span> getCurrentRowObject<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
      <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>/grum/user/show/${user.id}<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;${user.username}&lt;/a&gt;&quot;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
   <span style="color: #003399;">String</span> getUserCreatedAt<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      def user <span style="color: #339933;">=</span> getCurrentRowObject<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
      <span style="color: #000000; font-weight: bold;">return</span> user.<span style="color: #006633;">createdAt</span>.<span style="color: #006633;">format</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;dd.MM.yyyy HH:mm&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<h3>Export Filter</h3>
<p>Beim Export in ein nicht HTML Format muss der content type für die Antwort an den Browser neu gesetzt werden. Damit dies nicht zu Problemen führt, sollte ein Filter in der web.xml Datei definiert werden, der möglichen Fehlern entgegenwirkt. Displaytag bringt mit der Klasse ResponseOverrideFilter bereits eine Implementierung dafür mit.</p>
<p>Um in Grails Änderungen an der <a href="http://code.google.com/p/grum/source/browse/trunk/src/templates/war/web.xml">web.xml</a> vornehmen zu können, müssen die Templates installiert werden:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">grails install-templates</pre></div></div>

<p>Danach befindet sich die <code>web.xml</code> im Verzeichnis <code>src/templates/war</code>. Für den Filter sind folgende Einträge notwendig.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filter-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>ResponseOverrideFilter<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filter-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filter-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.displaytag.filter.ResponseOverrideFilter<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filter-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filter-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filter-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>ResponseOverrideFilter<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filter-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/*<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filter-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<h3>Einbindung in Groovy Server Page</h3>
<p>Hat man diese ganzen vorbereitenden Schritte absolviert, kann man sich endlich an die Verwendung von displaytag in einer Groovy Server Page machen.<br />
In meinem Beispiel <a href="http://code.google.com/p/grum/source/browse/trunk/grails-app/views/user/list.gsp">user/list.gsp</a> werden alle Benutzerdaten tabellarisch angezeigt. Die Tabelle ist durch das Attribut <code>sortable</code> nach Vor- und Nachnamen sortierbar (ohne erneuten Datenbankzugriff) und wird beim Erreichen der <code>pagesize</code> über das Attribut <code>partialList</code> auf mehrere Seiten verteilt.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;">&lt;%@ taglib <span style="color: #000066;">uri</span>=<span style="color: #ff0000;">&quot;http://displaytag.sf.net&quot;</span> <span style="color: #000066;">prefix</span>=<span style="color: #ff0000;">&quot;display&quot;</span> %<span style="color: #000000; font-weight: bold;">&gt;</span></span>  
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;html<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
..
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display:table</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;userList&quot;</span> <span style="color: #000066;">defaultsort</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">partialList</span>=<span style="color: #ff0000;">&quot;true&quot;</span> </span>
<span style="color: #009900;">      <span style="color: #000066;">decorator</span>=<span style="color: #ff0000;">&quot;de.koo.grum.groovy.util.DisplaytagWrapper&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">size</span>=<span style="color: #ff0000;">&quot;${resultSize}&quot;</span> <span style="color: #000066;">pagesize</span>=<span style="color: #ff0000;">&quot;${pageSize}&quot;</span> <span style="color: #000066;">requestURI</span>=<span style="color: #ff0000;">&quot;/grum/user/list&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;listing&quot;</span> <span style="color: #000066;">cellpadding</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">cellspacing</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">sort</span>=<span style="color: #ff0000;">&quot;list&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display:column</span> <span style="color: #000066;">property</span>=<span style="color: #ff0000;">&quot;linkToUser&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Userame&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>						
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display:column</span> <span style="color: #000066;">property</span>=<span style="color: #ff0000;">&quot;firstname&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Firstame&quot;</span> <span style="color: #000066;">sortable</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>						
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display:column</span> <span style="color: #000066;">property</span>=<span style="color: #ff0000;">&quot;lastname&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Lastname&quot;</span> <span style="color: #000066;">sortable</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>						
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display:column</span> <span style="color: #000066;">property</span>=<span style="color: #ff0000;">&quot;userCreatedAt&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Created At&quot;</span> <span style="color: #000066;">sortable</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>						
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/display:table<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
...</pre></td></tr></table></div>

<p>Über zusätzliche Attribute (<code>export</code>, <code>group</code>) kann wie im Beispiel <a href="http://code.google.com/p/grum/source/browse/trunk/grails-app/views/contactData/list.gsp">contactData/list.gsp</a> auch der Export in die verschiedenen Ausgabeformate und eine Gruppierung der Einträge erreicht werden.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display:table</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;contactDataList&quot;</span> <span style="color: #000066;">export</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">defaultsort</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">partialList</span>=<span style="color: #ff0000;">&quot;true&quot;</span> </span>
<span style="color: #009900;">      <span style="color: #000066;">decorator</span>=<span style="color: #ff0000;">&quot;de.koo.grum.groovy.util.DisplaytagWrapper&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">size</span>=<span style="color: #ff0000;">&quot;${resultSize}&quot;</span> <span style="color: #000066;">pagesize</span>=<span style="color: #ff0000;">&quot;${pageSize}&quot;</span> <span style="color: #000066;">requestURI</span>=<span style="color: #ff0000;">&quot;/grum/contactData/list&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;listing&quot;</span> <span style="color: #000066;">cellpadding</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">cellspacing</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">sort</span>=<span style="color: #ff0000;">&quot;list&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display:setProperty</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;export.csv.filename&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;contactData.csv&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display:setProperty</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;export.excel.filename&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;contactData.xls&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display:setProperty</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;export.xml.filename&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;contactData.xml&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display:setProperty</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;export.pdf.filename&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;contactData.pdf&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display:setProperty</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;export.amount&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;list&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display:column</span> <span style="color: #000066;">property</span>=<span style="color: #ff0000;">&quot;linkContactDataToUser&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Name&quot;</span> <span style="color: #000066;">sortable</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">group</span>=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>						
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display:column</span> <span style="color: #000066;">property</span>=<span style="color: #ff0000;">&quot;type&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;type&quot;</span> <span style="color: #000066;">sortable</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display:column</span> <span style="color: #000066;">property</span>=<span style="color: #ff0000;">&quot;data&quot;</span> <span style="color: #000066;">sortable</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/display:table<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p><strong>Fazit:</strong><br />
Einmal konfiguriert ist displaytag eine der tollsten Lösungen für java basierte Webanwendungen um Daten tabellarisch aufzulisten. Der Funktionsumfang übertrifft dabei weit die Standard Funktionalität von Grails. Die Kombination von Grails und displaytag kann ich daher nur jedem empfehlen.</p>
<p><strong>Links:</strong><br />
<a href="http://code.google.com/p/grum/source/browse/">grum Quellcode</a></p>

	Tags: <a href="http://www.k-oo.de/blog/tag/grails/" title="Grails" rel="tag">Grails</a>, <a href="http://www.k-oo.de/blog/tag/groovy/" title="groovy" rel="tag">groovy</a>, <a href="http://www.k-oo.de/blog/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://www.k-oo.de/blog/tag/open-source/" title="Open Source" rel="tag">Open Source</a><br />

	Ähnliche Artikel:
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/03/09/delicious-groovy-lesezeichen-automatisieren/" title="delicious groovy &#8211; Lesezeichen automatisieren (March 9, 2010)">delicious groovy &#8211; Lesezeichen automatisieren</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/02/11/gesucht-ein-neues-logo-fur-eclipse/" title="Gesucht &#8211; ein neues Logo für Eclipse (February 11, 2010)">Gesucht &#8211; ein neues Logo für Eclipse</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/01/14/passworte-generieren-mit-groovy/" title="Passworte generieren mit Groovy (January 14, 2010)">Passworte generieren mit Groovy</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/03/05/grails-und-displaytag-paging-leicht-gemacht/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Opera 10.50 – schnell, schneller am schnellsten</title>
		<link>http://www.k-oo.de/blog/2010/03/02/opera-10-50-schnell-schneller-am-schnellsten/</link>
		<comments>http://www.k-oo.de/blog/2010/03/02/opera-10-50-schnell-schneller-am-schnellsten/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 16:35:23 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[opera]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1526</guid>
		<description><![CDATA[
Mein Lieblingsbrowser Opera ist wieder in einer neuer Version (10.50) verfügbar. Vorerst nur für Windows aber die Mac und Linux Varianten, dürften nicht lange auf sich warten lassen.
Die Änderungen lassen sich in folgende Kategorien einordnen:
1. Performance

die neue Javascript-Engine Carakan soll bis zu 3,5 mal schneller sein als ihr Vorgänger. Erreicht wurde dieser Performance Gewinn vorallem [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.k-oo.de/blog/wp-content/uploads/2010/03/opera10.5.jpg" alt="" title="opera 10.5" width="362" height="133" class="aligncenter size-full wp-image-1528" /></p>
<p>Mein Lieblingsbrowser Opera ist wieder in einer neuer Version (10.50) verfügbar. Vorerst nur für Windows aber die Mac und Linux Varianten, dürften nicht lange auf sich warten lassen.</p>
<p>Die Änderungen lassen sich in folgende Kategorien einordnen:</p>
<h3>1. Performance</h3>
<ul>
<li>die neue Javascript-Engine Carakan soll bis zu 3,5 mal schneller sein als ihr Vorgänger. Erreicht wurde dieser Performance Gewinn vorallem durch eine register basierte Bytecode-Execution-Engine mit fester Blockgröße und die Umwandlung von JavaScript in nativen Code.</li>
<li>die neue Grafikbibliothek Vega, die sogar Hardwareunterstützung bietet (die aber noch nicht aktiviert ist)</li>
<li></li>
<li></li>
</ul>
<h3>2. neue Funktionen</h3>
<ul>
<li>die Unterstützung von CSS3 Funktionen durch die Rendering Engine Presto (wie z.B. Transitions, Transforms, Border-Radius-Property, Backgrounds und Borders)</li>
<li>die Unterstützung von HTML5 Elementen durch die Rendering Engine Presto (wie z.B. Persistent Storage, Video und Param)</li>
<li>den von anderen Browsern (z.B. Firefox) bekannten Privatsurfenmodus (auch als Porno Tab bekannt <img src='http://www.k-oo.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</li>
<li>den neuer Skin</li>
<li>die neue Menüstruktur (alles versteckt unter dem großem rotem O an der linken, oberen Seite), damit mehr Platz für das Browserfenster da ist.</li>
<li>die Unterstützung von Windows 7 Funktionen, wie Sprunglisten, Aero Peek und Tabvorschau. Die Mac Version soll sich aber aber auch besser integrieren.</li>
<li>sowie viele kleine weitere Verbesserungen</li>
</ul>
<p>Opera dürfte damit für die freie Browserwahl unter Windows ab dem 17. März gewappnet sein. </p>
<p>Mein Standardbrowser ist er schon seit Jahren.</p>
<p><strong>update:</strong><br />
Der <a href="http://www.golem.de/1003/73548.html">Browser-Benchmark</a> von Golem bestätigt &#8220;So schnell ist Opera 10.50&#8243;.</p>

	Tags: <a href="http://www.k-oo.de/blog/tag/browser/" title="Browser" rel="tag">Browser</a>, <a href="http://www.k-oo.de/blog/tag/opera/" title="opera" rel="tag">opera</a>, <a href="http://www.k-oo.de/blog/tag/web/" title="Web" rel="tag">Web</a><br />

	Ähnliche Artikel:
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/03/09/delicious-groovy-lesezeichen-automatisieren/" title="delicious groovy &#8211; Lesezeichen automatisieren (March 9, 2010)">delicious groovy &#8211; Lesezeichen automatisieren</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/03/06/weekly-links-6/" title="weekly links (March 6, 2010)">weekly links</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/02/28/im-not-too-old-for-this-shit/" title="I&#8217;m not too old for this shit (February 28, 2010)">I&#8217;m not too old for this shit</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/03/02/opera-10-50-schnell-schneller-am-schnellsten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I’m not too old for this shit</title>
		<link>http://www.k-oo.de/blog/2010/02/28/im-not-too-old-for-this-shit/</link>
		<comments>http://www.k-oo.de/blog/2010/02/28/im-not-too-old-for-this-shit/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 13:43:02 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1522</guid>
		<description><![CDATA[Mit Erschrecken habe ich diese Woche einen Artikel über Vorurteile gegenüber älteren Entwicklern gelesen. Demnach existieren folgende 5 Mythen:

Ältere Entwickler sind teurer als jüngere, deshalb sind Jungspunde auf dem Markt gefragter
Ältere Entwickler sind aufgrund ihres Legacy-Wissens weniger flexibel, neue Technologien zu erlernen
Ältere Entwickler sind wegen ihrer Familienverpflichtungen ungeeignet für den harten Entwicklerjob (= lange Arbeitszeiten, [...]]]></description>
			<content:encoded><![CDATA[<p>Mit Erschrecken habe ich diese Woche einen <a href="http://www.theserverside.com/news/thread.tss?thread_id=59546">Artikel</a> über Vorurteile gegenüber älteren Entwicklern gelesen. Demnach existieren folgende 5 Mythen:</p>
<ul>
<li>Ältere Entwickler sind teurer als jüngere, deshalb sind Jungspunde auf dem Markt gefragter</li>
<li>Ältere Entwickler sind aufgrund ihres Legacy-Wissens weniger flexibel, neue Technologien zu erlernen</li>
<li>Ältere Entwickler sind wegen ihrer Familienverpflichtungen ungeeignet für den harten Entwicklerjob (= lange Arbeitszeiten, quälende Stunden am PC)
</li>
<li>Ältere Entwickler sind mental weniger agil als jüngere</li>
<li>Ältere Entwickler sind abgestumpft und zynisch &#8211; dagegen bringen junge Entwickler Feuer und Enthusiasmus in ein Projekt</li>
</ul>
<p>Nun bin ich zwar noch keine 40 (wie der Author) aber auch keine 27 mehr, wie ich immer behaupte. Und das wichtigste ist wirklich die Familie, aber ansonsten &#8220;Bullshit. I&#8217;m not too old for this shit&#8221;. <img src='http://www.k-oo.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Q37xJtuQ24w&#038;hl=de_DE&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Q37xJtuQ24w&#038;hl=de_DE&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>

	Tags: <a href="http://www.k-oo.de/blog/tag/web/" title="Web" rel="tag">Web</a><br />

	Ähnliche Artikel:
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/03/09/delicious-groovy-lesezeichen-automatisieren/" title="delicious groovy &#8211; Lesezeichen automatisieren (March 9, 2010)">delicious groovy &#8211; Lesezeichen automatisieren</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/03/06/weekly-links-6/" title="weekly links (March 6, 2010)">weekly links</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/03/02/opera-10-50-schnell-schneller-am-schnellsten/" title="Opera 10.50 &#8211; schnell, schneller am schnellsten (March 2, 2010)">Opera 10.50 &#8211; schnell, schneller am schnellsten</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/02/28/im-not-too-old-for-this-shit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>a tribute to Bon</title>
		<link>http://www.k-oo.de/blog/2010/02/19/a-tribute-to-bon/</link>
		<comments>http://www.k-oo.de/blog/2010/02/19/a-tribute-to-bon/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 15:39:22 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[audio]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1519</guid>
		<description><![CDATA[Ich schreibe selten über Filme und Musik. Zum 30. Todestag von Ronald Belford &#8220;Bon&#8221; Scott, dem ersten Sänger von AC/DC mache ich davon eine Ausnahme.
Als kleine Erinnerung daran, wie schön Rock&#8217;n Roll sein kann, hier ein kleiner Ausschnitt mit Bon und Angus aus dem 1980er Konzert in Paris.


	Tags: audio

	Ähnliche Artikel:
	
	[Test] Tunebite 7 &#8211; Audio, Video [...]]]></description>
			<content:encoded><![CDATA[<p>Ich schreibe selten über Filme und Musik. Zum 30. Todestag von Ronald Belford &#8220;Bon&#8221; Scott, dem ersten Sänger von AC/DC mache ich davon eine Ausnahme.<br />
Als kleine Erinnerung daran, wie schön Rock&#8217;n Roll sein kann, hier ein kleiner Ausschnitt mit Bon und Angus aus dem 1980er Konzert in Paris.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/TnEzvEwxvxY&#038;hl=de_DE&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/TnEzvEwxvxY&#038;hl=de_DE&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>

	Tags: <a href="http://www.k-oo.de/blog/tag/audio/" title="audio" rel="tag">audio</a><br />

	Ähnliche Artikel:
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/01/17/test-tunebite-7-audio-video-downloader-und-konvertierer/" title="[Test] Tunebite 7 &#8211; Audio, Video Downloader und Konvertierer (January 17, 2010)">[Test] Tunebite 7 &#8211; Audio, Video Downloader und Konvertierer</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2009/11/28/hanbrake-kostenloser-videokonverter-wird-schneller-groser-und-besser/" title="Hanbrake &#8211; kostenloser Videokonverter wird schneller, größer und besser (November 28, 2009)">Hanbrake &#8211; kostenloser Videokonverter wird schneller, größer und besser</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2009/11/03/audialsone-4-platin-tools-fur-musik-und-videos-aus-dem-internet-test-verlosung/" title="AudialsOne 4 &#8211; Platin Tools für Musik und Videos aus dem Internet (Test + Verlosung) (November 3, 2009)">AudialsOne 4 &#8211; Platin Tools für Musik und Videos aus dem Internet (Test + Verlosung)</a> (12)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/02/19/a-tribute-to-bon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dejavu – Rubik Würfel</title>
		<link>http://www.k-oo.de/blog/2010/02/13/dejavu-rubik-wurfel/</link>
		<comments>http://www.k-oo.de/blog/2010/02/13/dejavu-rubik-wurfel/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 13:36:30 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1512</guid>
		<description><![CDATA[
Als Vater sieht man sich oft selbst, wenn man seinen Sohn beobachtet. Dieser ist momentan total begeistert vom guten alten Rubik Würfel.
Ich kann mich gut daran erinnern, wieviel Stunden ich damit verbracht habe, die Farben des Würfels so schnell wie möglich wieder in ihre Ordnung zu bringen. Nach mehr als 20 Jahren habe ich den [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.k-oo.de/blog/wp-content/uploads/2010/02/Kantenkreuz.de-Eine-Lösungsseite-für-den-Zauberwürfel.jpg" alt="" title="Kantenkreuz.de - Eine Lösungsseite für den Zauberwürfel" width="499" height="162" class="aligncenter size-full wp-image-1513" /></p>
<p>Als Vater sieht man sich oft selbst, wenn man seinen Sohn beobachtet. Dieser ist momentan total begeistert vom guten alten Rubik Würfel.<br />
Ich kann mich gut daran erinnern, wieviel Stunden ich damit verbracht habe, die Farben des Würfels so schnell wie möglich wieder in ihre Ordnung zu bringen. Nach mehr als 20 Jahren habe ich den &#8220;Zauberwürfel&#8221; jetzt wieder in die Hand genommen, aber die verstaubten Kenntnisse haben nur bis zur 2. Ebene gereicht.</p>
<p>Doch es gibt nichts, was es im Netz der Netze nicht gibt. Und so bin ich auf der Suche nach einer Seite, die nicht nur die Lösung, sondern auch Muster (wie den Würfel im Würfel) enthält, auf <a href="http://www.kantenkreuz.de/">kantenkreuz.de</a> gestoßen.<br />
Zusätzlich zu den einzelnen Lösungschritten gibt es dort eine Animation des Lösungsweges.</p>
<p>Jetzt muss ich nur noch wieder schneller werden als unser Sohn. <img src='http://www.k-oo.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </p>
No tag for this post.
	Ähnliche Artikel:
	<ul class="st-related-posts">
	<li>No related posts.</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/02/13/dejavu-rubik-wurfel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>die Olympischen Spiele bei Google</title>
		<link>http://www.k-oo.de/blog/2010/02/12/die-olympischen-spiele-bei-google/</link>
		<comments>http://www.k-oo.de/blog/2010/02/12/die-olympischen-spiele-bei-google/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 17:26:42 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1508</guid>
		<description><![CDATA[Google hat zu den Olympischen Spiele eine eigene Webseite gestartet. Sie enthält neben den Street-View-Bildern die von einem Snow Mobil aus gemacht wurden auch die Wettkampfpläne, Fotos, Nachrichten und den Medaillenspiegel.

Auf dass die Spiele beginnen.

	Tags: google, Web

	Ähnliche Artikel:
	
	delicious groovy &#8211; Lesezeichen automatisieren (0)
	weekly links (0)
	Opera 10.50 &#8211; schnell, schneller am schnellsten (0)


]]></description>
			<content:encoded><![CDATA[<p>Google hat zu den Olympischen Spiele eine <a href="http://www.google.com/intl/de/landing/games10/index.html">eigene Webseite</a> gestartet. Sie enthält neben den Street-View-Bildern die von einem Snow Mobil aus gemacht wurden auch die Wettkampfpläne, Fotos, Nachrichten und den Medaillenspiegel.</p>
<p><img src="http://www.k-oo.de/blog/wp-content/uploads/2010/02/GoogleOlympischeSpiele.jpg" alt="" title="Google Olympische Spiele" width="499" height="412" class="aligncenter size-full wp-image-1509" /></p>
<p>Auf dass die Spiele beginnen.</p>

	Tags: <a href="http://www.k-oo.de/blog/tag/google/" title="google" rel="tag">google</a>, <a href="http://www.k-oo.de/blog/tag/web/" title="Web" rel="tag">Web</a><br />

	Ähnliche Artikel:
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/03/09/delicious-groovy-lesezeichen-automatisieren/" title="delicious groovy &#8211; Lesezeichen automatisieren (March 9, 2010)">delicious groovy &#8211; Lesezeichen automatisieren</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/03/06/weekly-links-6/" title="weekly links (March 6, 2010)">weekly links</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/03/02/opera-10-50-schnell-schneller-am-schnellsten/" title="Opera 10.50 &#8211; schnell, schneller am schnellsten (March 2, 2010)">Opera 10.50 &#8211; schnell, schneller am schnellsten</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/02/12/die-olympischen-spiele-bei-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gesucht – ein neues Logo für Eclipse</title>
		<link>http://www.k-oo.de/blog/2010/02/11/gesucht-ein-neues-logo-fur-eclipse/</link>
		<comments>http://www.k-oo.de/blog/2010/02/11/gesucht-ein-neues-logo-fur-eclipse/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 15:24:29 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[ide]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1497</guid>
		<description><![CDATA[Eclipse ist für mich als Entwickler mein täglich Brot und begleitet mich schon seit Jahren. Das Logo hat sich während dieser Zeit kaum geändert (wieso auch &#8211; mir hat es gefallen).
Nun möchte Eclipse mit einem neuen Logo darauf aufmerksam machen, dass im Projekt kein Stillstand herrscht.
Gefragt sind Entwürfe, die im Rahmen eines Wettbewerbs zum neuen [...]]]></description>
			<content:encoded><![CDATA[<p>Eclipse ist für mich als Entwickler mein täglich Brot und begleitet mich schon seit Jahren. Das Logo hat sich während dieser Zeit kaum geändert (wieso auch &#8211; mir hat es gefallen).</p>
<p>Nun möchte Eclipse mit einem neuen Logo darauf aufmerksam machen, dass im Projekt kein Stillstand herrscht.<br />
Gefragt sind Entwürfe, die im Rahmen eines Wettbewerbs zum neuen Logo führen sollen. Auf den Sieger wartet ein Preisgeld von 500 Dollar.</p>
<p>Die bereits eingereichten Vorschläge kann man sich <a href="http://www.crowdspring.com/project/2282403_modernize-the-eclipse-logo/">hier</a> anschauen.</p>
<p>Für welchen würdet Ihr Euch entscheiden?</p>
<p><a href="http://www.k-oo.de/blog/wp-content/uploads/2010/02/eclipse_logo_entwuerfe.jpg" rel="lightbox"><img src="http://www.k-oo.de/blog/wp-content/uploads/2010/02/eclipse_logo_entwuerfe-377x500.jpg" alt="" title="eclipse logo Entwürfe" width="377" height="500" class="aligncenter size-medium wp-image-1498" /></a></p>

	Tags: <a href="http://www.k-oo.de/blog/tag/eclipse/" title="eclipse" rel="tag">eclipse</a>, <a href="http://www.k-oo.de/blog/tag/ide/" title="ide" rel="tag">ide</a>, <a href="http://www.k-oo.de/blog/tag/java/" title="Java" rel="tag">Java</a><br />

	Ähnliche Artikel:
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/03/09/delicious-groovy-lesezeichen-automatisieren/" title="delicious groovy &#8211; Lesezeichen automatisieren (March 9, 2010)">delicious groovy &#8211; Lesezeichen automatisieren</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/03/05/grails-und-displaytag-paging-leicht-gemacht/" title="Grails und displaytag &#8211; Paging leicht gemacht (March 5, 2010)">Grails und displaytag &#8211; Paging leicht gemacht</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/01/14/passworte-generieren-mit-groovy/" title="Passworte generieren mit Groovy (January 14, 2010)">Passworte generieren mit Groovy</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/02/11/gesucht-ein-neues-logo-fur-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Test] Tunebite 7 – Audio, Video Downloader und Konvertierer</title>
		<link>http://www.k-oo.de/blog/2010/01/17/test-tunebite-7-audio-video-downloader-und-konvertierer/</link>
		<comments>http://www.k-oo.de/blog/2010/01/17/test-tunebite-7-audio-video-downloader-und-konvertierer/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 15:19:13 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[new Features]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[Internet Radio]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[multimedia]]></category>
		<category><![CDATA[net]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1441</guid>
		<description><![CDATA[
Ich durfte bereits mit dem Radiotracker und AudialsOne zwei Produkte aus dem Hause RapidSolution testen.
Nun hat RapidSolution mit Tunebite 7 eine neue Version ihres Audio und Video Downloaders vorgestellt, die ich ebenfalls in der Platinversion testen durfte.
Tunebite 7 gibt es auch in einer im Funktionsumfang eingeschränkten aber zeitlich unlimitierten Freeware Version. Mit dieser lassen sich [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.k-oo.de/blog/wp-content/uploads/2010/01/01_screen_splash.jpg" rel="lightbox[1441]"><img src="http://www.k-oo.de/blog/wp-content/uploads/2010/01/01_screen_splash.jpg" alt="" title="tunebite 7" width="453" height="219" class="alignleft size-full wp-image-1473" /></a></p>
<p>Ich durfte bereits mit dem <a href="http://www.k-oo.de/blog/2009/05/16/radiotracker-internetradio-komfortabel-aufnehmen/">Radiotracker</a> und <a href="http://www.k-oo.de/blog/2009/11/03/audialsone-4-platin-tools-fur-musik-und-videos-aus-dem-internet-test-verlosung/">AudialsOne</a> zwei Produkte aus dem Hause <strong>RapidSolution</strong> testen.<br />
Nun hat RapidSolution mit <strong>Tunebite 7</strong> eine neue Version ihres Audio und Video Downloaders vorgestellt, die ich ebenfalls in der Platinversion testen durfte.</p>
<p>Tunebite 7 gibt es auch in einer im Funktionsumfang eingeschränkten aber zeitlich unlimitierten <strong>Freeware</strong> Version. Mit dieser lassen sich bereits Videos von YouTube, MySpace, Facebook, Clipfish und MyVideo aufnehmen. Dabei kann sogar die Tonspur extrahiert werden, was immer noch einer der legalen Wege ist um an Musik aus dem Netz zu kommen.</p>
<p>In der Platinversion wird Tunebite 7 dann zum universellen <strong>Recorder für Audio und Video Streams</strong> aus dem Internet.  Streaming ist momentan die Technik mit der im Internet Filme, Musik und Höhrbücher bereitgestellt werden. Wer darüber ein bißchen mehr erfahren möchte sollte sich die <a href="http://chaosradio.ccc.de/cre137.html">Folge 137</a> des Chaosradio Express Podcasts anhören.<br />
Streams haben die Eigenschaft, dass sie nicht erst komplett auf den eigenen Rechner übertragen werden müssen, um angezeigt werden zu können. Zudem sind gerade Videoinhalte oft mit einem DRM Schutz versehen, der die Aufnahme verhindern soll.</p>
<div style="float:left; margin-right:10px">
<a href="http://www.k-oo.de/blog/wp-content/uploads/2010/01/01_tunebit_gui.jpg" rel="lightbox"><img src="http://www.k-oo.de/blog/wp-content/uploads/2010/01/01_tunebit_gui-150x150.jpg" alt="" title="Tunebit Oberläche" width="150" height="150" class="alignleft size-thumbnail wp-image-1477" /></a>
</div>
<p>An dieser Stelle setzt Tunebite 7 an und ermöglicht es dem Anwender gestreamte Inhalte mit und ohne DRM aufzunehmen und in ein beliebiges Format umzuwandeln, so dass eine Wiedergabe auch ohne Internetverbindung möglich wird.<br />
Tunebite kommt dabei in der neuen Version auch mit hochauflösenden Videos (HD) zurecht (eine schnelle Internetverbindung vorausgesetzt).</p>
<p style="clear:both" />
Grundsätzlich gibt es 3 Möglichkeiten Audio und Video Quellen aus dem Internet aufzunehmen. Die komfortabelste ist die <strong>automatische Erkennung</strong> der Medien, während man im Browser surft. Diese Methode wird bei folgenden Internet Diensten unterstützt: <em>youtube.de, sevenload.de, clipfish.de, myvideo.de, mediathek.zdf.de, ardmediathek.de, last.fm, grooveshark.com</em>.<br />
Die <strong>Aufnahme über den Bildschirm oder die Soundkarte</strong> wird für &#8220;verschlüsselte&#8221; Webinhalte empfohlen oder wenn die normale Webfunktionalität unbefriedigende Ergebnisse erzielt hat.<br />
Eine rege <a href="http://community.audials.com/de/forum/41"><strong>Community</strong></a> listet <strong>weitere Quellen</strong> im Internet und gibt Tipps dazu, mit welcher Methode die Aufnahme am besten funktioniert.</p>
<p>Die aufgenommenen Dateien können mit Tunebite 7 gleich ins passende Dateiformat für PC, Handy, iPhone, iPod, PSP und Xbox konvertiert werden, um sie auf diesen Endgeräten in bester Qualität anzeigen zu können. </p>
<p><a href="http://www.k-oo.de/blog/wp-content/uploads/2010/01/03_tunebit_konvertierung.jpg" rel="lightbox[1441]"><img src="http://www.k-oo.de/blog/wp-content/uploads/2010/01/03_tunebit_konvertierung.jpg" alt="" title="Formate, in die konvertiert werden kann" width="436" height="96" class="alignleft size-full wp-image-1476" /></a></p>
<p>Der Konverter hilft auch bei <strong>DRM</strong> behafteten Dateien und <strong>Hörbüchern</strong> weiter.</p>
<p><strong>Fazit:</strong><br />
Wie bereits in den vorangegangenen Tests zeigt sich auch bei Tunebite 7, dass es sich hervorragend zur Aufnahme von Audio und Video Quellen aus dem Internet eignet. Seine wahre Stärke spielt es natürlich erst in der Platin Version aus.<br />
Dass neben der kommerziellen Version auch eine Freeware Version angeboten wird, wünsche ich mir allerdings auch für die Zukunft.</p>

	Tags: <a href="http://www.k-oo.de/blog/tag/audio/" title="audio" rel="tag">audio</a>, <a href="http://www.k-oo.de/blog/tag/internet-radio/" title="Internet Radio" rel="tag">Internet Radio</a>, <a href="http://www.k-oo.de/blog/tag/mp3/" title="mp3" rel="tag">mp3</a>, <a href="http://www.k-oo.de/blog/tag/multimedia/" title="multimedia" rel="tag">multimedia</a>, <a href="http://www.k-oo.de/blog/tag/net/" title="net" rel="tag">net</a>, <a href="http://www.k-oo.de/blog/tag/tools/" title="tools" rel="tag">tools</a>, <a href="http://www.k-oo.de/blog/tag/video/" title="video" rel="tag">video</a><br />

	Ähnliche Artikel:
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/02/19/a-tribute-to-bon/" title="a tribute to Bon (February 19, 2010)">a tribute to Bon</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2009/12/27/webtests-fur-grails-anwendungen/" title="Webtests für Grails Anwendungen (December 27, 2009)">Webtests für Grails Anwendungen</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2009/11/28/hanbrake-kostenloser-videokonverter-wird-schneller-groser-und-besser/" title="Hanbrake &#8211; kostenloser Videokonverter wird schneller, größer und besser (November 28, 2009)">Hanbrake &#8211; kostenloser Videokonverter wird schneller, größer und besser</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/01/17/test-tunebite-7-audio-video-downloader-und-konvertierer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
