<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>knallisworld &#187; Allgemeines</title> <atom:link href="http://www.knallisworld.de/blog/category/allgemeines/feed/" rel="self" type="application/rss+xml" /><link>http://www.knallisworld.de/blog</link> <description>Where is the beef?</description> <lastBuildDate>Thu, 02 Feb 2012 23:10:07 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>Video von Fukushima innerhalb der Sperrzone</title><link>http://www.knallisworld.de/blog/2011/04/08/video-von-fukushima-innerhalb-der-sperrzone/</link> <comments>http://www.knallisworld.de/blog/2011/04/08/video-von-fukushima-innerhalb-der-sperrzone/#comments</comments> <pubDate>Fri, 08 Apr 2011 17:14:03 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Allgemeines]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1360</guid> <description><![CDATA[Manche haben scheinbar nichts Besseres zu tun, als mit einer HD-Cam da rumzulaufen. Die HÃ¤lfte des Films piepsen die GeigerzÃ¤hler.. via fefe]]></description> <content:encoded><![CDATA[<p><a
href="http://www.youtube.com/watch?v=yp9iJ3pPuL8"><img
src="http://img.youtube.com/vi/yp9iJ3pPuL8/2.jpg"></a></p><p><a
href="http://www.youtube.com/watch?v=yp9iJ3pPuL8">Click here</a> to view the video on YouTube.</p><p>Manche haben scheinbar nichts Besseres zu tun, als mit einer HD-Cam da rumzulaufen. Die HÃ¤lfte des Films piepsen die GeigerzÃ¤hler..</p><p>via <a
href="http://blog.fefe.de/?ts=b36184c1">fefe</a></p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2011/04/08/video-von-fukushima-innerhalb-der-sperrzone/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Mac OS X: Maus springt [Update 12.04.2011]</title><link>http://www.knallisworld.de/blog/2011/03/08/mac-os-x-maus-springt/</link> <comments>http://www.knallisworld.de/blog/2011/03/08/mac-os-x-maus-springt/#comments</comments> <pubDate>Tue, 08 Mar 2011 19:41:26 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Apple]]></category> <category><![CDATA[Just my two cents]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1353</guid> <description><![CDATA[Problem: Am Mac bzw. unter OS X springt aus heiterem die Maus. Da ich eine Funkmaus (Logitech) verwende, habe ich das natÃ¼rlich zuerst auf die Funkverbindung geschoben &#8212; auch wenn ich es eigentlich nicht wahr haben wollte. Der Gegentest mit einer Magic Mouse zeigte auch wenig (erfreuliche) Resultate. Anders herum funktionierte die Funkmaus aber an [...]]]></description> <content:encoded><![CDATA[<p>Problem: Am Mac bzw. unter OS X springt aus heiterem die Maus. Da ich eine Funkmaus (Logitech) verwende, habe ich das natÃ¼rlich zuerst auf die Funkverbindung geschoben &#8212; auch wenn ich es eigentlich nicht wahr haben wollte. Der Gegentest mit einer Magic Mouse zeigte auch wenig (erfreuliche) Resultate. Anders herum funktionierte die Funkmaus aber an einem anderen Ort (und anderem Rechner).</p><p>Als jedoch auch die eigens dafÃ¼r organisierte Kabelmaus auch sprang, musste der Fehler woanders liegen. Ich habe die Ã¼blichen MaÃŸnahmen abgeklappert: PRAM-Reset, Caches lÃ¶schen, Neustarten, Rechte prÃ¼fen. Alles Dinge, die zwar sowieso &#8216;mal sinnvoll sind, nur mir irgendwie nicht weiterhalfen.</p><p>Ãœber Google findet man zwar einiges zum Thema, aber wenig davon hilft (und teilweise sind USB-Probleme, die irgendjemand mal mit einer Festplatte hatte, schon uralt oder zu situationsspezifisch). SchlieÃŸlich aber brachte mich <a
href="http://www.macuser.de/forum/f24/maus-springt-liegt-474035/#post6479614">DIESER GENIALE BEITRAG</a> auf eine kuriose, aber schlussendlich einfach brilliante Idee: Displayportstecker ab!</p><p>Damit wÃ¤re zwar die Frage noch offen, was da Probleme macht (Spannung am Stecker?!).. aber zumindest ist USB wieder nutzbar.</p><p>Ich schlieÃŸe den Tag mit einem.. WTF?!</p><p><strong>Update:</strong> Andreas (Kommentar #1) gab mir den sehr wertvollen Tipp, dass es an dem, zwar Original Apple, passiven DisplayPort-zu-DVI-Adapter liegt. Ein aktiver Adapter kostet heute auch nicht mehr viel mehr als ein sein passives Pendant. Im Internet geistern (alte) Preise von bis zu 100$, das ist also lÃ¤ngst Geschichte. <a
href="http://www.amazon.de/gp/product/B004CV9YMI/ref=oss_product">Ãœber Amazon gibt es den Adapter von XFZ fÃ¼r knapp 20 â‚¬</a>.</p><p>In der englischsprachigen (wo sonst!) Wikipedia liest man, dass das was mit Dual-DVI zu tun hat. Und mein externer 24&#8243;-Monitor braucht die&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2011/03/08/mac-os-x-maus-springt/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>iTunes und Xcode4</title><link>http://www.knallisworld.de/blog/2011/03/05/itunes-und-xcode4/</link> <comments>http://www.knallisworld.de/blog/2011/03/05/itunes-und-xcode4/#comments</comments> <pubDate>Sat, 05 Mar 2011 12:09:18 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Allgemeines]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1349</guid> <description><![CDATA[Da war ich wohl etwas leichtglÃ¤ubig, als ich dachte, &#8220;dann installierste mal eben Xcode 4&#8243;. Jenes gibt es ja (angeblich) bereits als Goldmaster (mit Developer-Zugang). &#8220;Angeblich&#8221; deswegen, weil das, was mir da gestern Abend widerfahren ist, nun alles andere als Gold ist. Oder anders ausgedrÃ¼ckt, in Stichworten: ProblemlÃ¶sung iPhone reagiert nicht mehr ProblemlÃ¶sung iPhone iOS [...]]]></description> <content:encoded><![CDATA[<p>Da war ich wohl etwas leichtglÃ¤ubig, als ich dachte, &#8220;dann installierste mal eben Xcode 4&#8243;. Jenes gibt es ja (angeblich) bereits als Goldmaster (mit Developer-Zugang). &#8220;Angeblich&#8221; deswegen, weil das, was mir da gestern Abend widerfahren ist, nun alles andere als Gold ist.</p><p>Oder anders ausgedrÃ¼ckt, in Stichworten:</p><ul><li>ProblemlÃ¶sung iPhone reagiert nicht mehr</li><li>ProblemlÃ¶sung iPhone iOS 4.3 Fehler 10</li></ul><h3>Chronik</h3><p>Die Installation von Xcode 4 GM selber war wie immer einfach &#8212; er schaufelt insgesamt einige Gigabytes von Daten fÃ¼r Compiler, Doku und Xcode selber auf die Platte. Ein Neustart wird nicht empfohlen/vorausgesetzt, aber&#8230; es wird kein iPhone mehr erkannt. Nicht einmal die Akku-Ladefunktion funktionierte, geschweige denn eine iTunes-Synchronization (Symptom: iPhone wird als GerÃ¤t Ã¼berhaupt nicht vom System erkannt. Allerdings konnte ich sehen, dass der USB-Hub ein GerÃ¤t &#8220;erkennt&#8221;, d.h. eine physikalische Verbindung bestand.) Ein Reboot lÃ¶ste das Problem &#8212; zunÃ¤chst jedenfalls. Abgesehen davon lieÃŸ sich Xcode aber nicht vernÃ¼nftig starten (immer 2 Fehlermeldungen, keine Reaktion bei &#8220;New Project&#8221;), was mir dann erstmal egal war.</p><p>Daraufhin wollte ich auch gleich die neue iOS 4.3 GM ausprobieren. (Ich denke, das Problem wÃ¤re auch mit jeder anderen Firmware passiert, siehe dazu spÃ¤ter.) UngefÃ¤hr in der Mitte des Prozesses schlug das Aufspielen der Firmware fehl und das iPhone verblieb im Wiederherstellungsmodus (mit dem iTunes-Symbol und dem Kabel auf dem Display). Das Wiederherstellen per Backup brachte Ã¼berhaupt nichts bzw. es resultierte mit dem gleichen Fehler. Der Fehler war immer eine Kombination verschiedener Meldungen, u.a. auch der o.g. &#8220;Fehler 10&#8243; wÃ¤hrend der Wiederherstellung.</p><p>Der Ansatz, einfach Xcode 3.x wieder drÃ¼berzubÃ¼geln, fruchtete zunÃ¤chst nicht. Auch nach einem Reboot verÃ¤nderte sich das fehlerhafte Verhalten nicht. Sh..! Die hilfreichende LÃ¶sung war dann, iTunes 10.2 einfach *nochmal* zu installieren. Ich brauchte noch nichtmal das System neu zu starten, die Wiederherstellung funktionierte sofort.</p><p>Da besteht Verbesserungsbedarf, wenn iTunes und Xcode solche zentralen AbhÃ¤ngigkeiten untereinander haben.</p><h3>Fazit</h3><p>Eine Goldmaster ist wohl heute auch nicht mehr das, was es eigentlich mal bedeutete.</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2011/03/05/itunes-und-xcode4/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>webM fÃ¼r OS X (QuickTime)</title><link>http://www.knallisworld.de/blog/2011/01/17/webm-fur-os-x-quicktime/</link> <comments>http://www.knallisworld.de/blog/2011/01/17/webm-fur-os-x-quicktime/#comments</comments> <pubDate>Mon, 17 Jan 2011 20:04:55 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Allgemeines]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1339</guid> <description><![CDATA[Keine brandaktuelle Neugigkeit: Auch fÃ¼r OS X gibt es bereits webM. Im Downloadbereich des webM-Projektes gibt es Installer fÃ¼r ein QuickTime-Plugin. Damit &#8220;kann&#8221; der Safari dann auch webM, beispielsweise YouTube HTML5 Demo mit webM (anstatt H.264).]]></description> <content:encoded><![CDATA[<p><img
class="alignright size-full wp-image-1340" title="logo" src="http://www.knallisworld.de/blog/wp-content/uploads/2011/01/logo.png" alt="" width="153" height="35" />Keine brandaktuelle Neugigkeit: Auch fÃ¼r OS X gibt es bereits webM.</p><p>Im <a
href="http://code.google.com/p/webm/downloads/list">Downloadbereich des webM-Projektes</a> gibt es <a
href="http://code.google.com/p/webm/downloads/detail?name=WebM%20Component%20Installer.pkg&amp;can=2&amp;q=">Installer fÃ¼r ein QuickTime-Plugin</a>. Damit &#8220;kann&#8221; der Safari dann auch webM, beispielsweise YouTube HTML5 Demo mit webM (anstatt H.264).</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2011/01/17/webm-fur-os-x-quicktime/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>OviStore</title><link>http://www.knallisworld.de/blog/2011/01/07/ovistore/</link> <comments>http://www.knallisworld.de/blog/2011/01/07/ovistore/#comments</comments> <pubDate>Fri, 07 Jan 2011 21:46:25 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Allgemeines]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1332</guid> <description><![CDATA[Ach ja&#8230; Oder mit anderen Worten: Angry Birds ist zwar (mutmaÃŸlich dÃ¼rfte das stimmen) eins der best verkauftesten Spiele, aber die Wahrscheinlich ist hoch, dass der Besucher ein inkompatibles Handy/Phone besitzt. Denn es funktioniert nur mit Androids..]]></description> <content:encoded><![CDATA[<p>Ach ja&#8230;</p> <style type='text/css'>#bbpBox_23506675247874048 a { text-decoration:none; color:#323232; }#bbpBox_23506675247874048 a:hover { text-decoration:underline; }</style><div
id='bbpBox_23506675247874048' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#4A525A; background-image:url(http://a3.twimg.com/a/1298664727/images/themes/theme1/bg.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#000000; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Nokia&#8217;s Ovi App Store: <a
href="http://df4.us/gwf">http://df4.us/gwf</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.knallisworld.de/blog/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on 8. January 2011 00:30' href='http://twitter.com/#!/daringfireball/status/23506675247874048' target='_blank'>8. January 2011 00:30</a> via <a
href="http://daringfireball.net/" rel="nofollow" target="blank">DF Tootbot</a><a
href='https://twitter.com/intent/tweet?in_reply_to=23506675247874048' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=23506675247874048' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=23506675247874048' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=daringfireball'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/425948730/DF-Star-Logo_normal.png' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=daringfireball'>@daringfireball</a><div
style='margin:0; padding-top:2px'>Daring Fireball</div></div><div
style='clear:both'></div></div></div><p>Oder mit anderen Worten: Angry Birds ist zwar (mutmaÃŸlich dÃ¼rfte das stimmen) eins der best verkauftesten Spiele, aber die Wahrscheinlich ist hoch, dass der Besucher ein inkompatibles Handy/Phone besitzt. Denn es funktioniert nur mit Androids..</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2011/01/07/ovistore/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>&#8220;Nein, was du schreibst ist dumm.&#8221;</title><link>http://www.knallisworld.de/blog/2010/11/24/nein-was-du-schreibst-ist-dumm/</link> <comments>http://www.knallisworld.de/blog/2010/11/24/nein-was-du-schreibst-ist-dumm/#comments</comments> <pubDate>Wed, 24 Nov 2010 21:24:25 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Allgemeines]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1326</guid> <description><![CDATA[So Ã¤hnlich lassen sich die Antworten zusammenfassen, die einige nicht ganz Unbekannte der Informatik als Antwort auf ihre Einreichungen erhalten haben. Lesenswert. Hier als PDF. via fefe]]></description> <content:encoded><![CDATA[<p><img
class="size-medium wp-image-1327  alignright" title="Bildschirmfoto 2010-11-24 um 23.37.30" src="http://www.knallisworld.de/blog/wp-content/uploads/2010/11/Bildschirmfoto-2010-11-24-um-23.37.30-300x154.png" alt="" width="300" height="154" /></p><p>So Ã¤hnlich lassen sich die Antworten zusammenfassen, die einige nicht ganz Unbekannte der Informatik als Antwort auf ihre Einreichungen erhalten haben. Lesenswert.</p><p><a
href="http://www.vf.utwente.nl/~neisser/public/reject.pdf">Hier als PDF.</a></p><p>via <a
href="http://blog.fefe.de/?ts=b213b56b">fefe</a></p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2010/11/24/nein-was-du-schreibst-ist-dumm/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>The Unix-Haters: The X-Windows Desaster</title><link>http://www.knallisworld.de/blog/2010/11/11/the-unix-haters-the-x-windows-desaster/</link> <comments>http://www.knallisworld.de/blog/2010/11/11/the-unix-haters-the-x-windows-desaster/#comments</comments> <pubDate>Thu, 11 Nov 2010 20:43:12 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Allgemeines]]></category> <category><![CDATA[Witziges]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1304</guid> <description><![CDATA[Ein schÃ¶nes Kapitel aus dem The Unix-Haters Buch, passend zu einem Thema dieser Woche.]]></description> <content:encoded><![CDATA[<style type='text/css'>#bbpBox_2822353918631936 a { text-decoration:none; color:#0099B9; }#bbpBox_2822353918631936 a:hover { text-decoration:underline; }</style><div
id='bbpBox_2822353918631936' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#0099B9; background-image:url(http://a0.twimg.com/profile_background_images/28361403/twitter-bg.jpg); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#3C3940; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Hihi: "Programming X-Windows is like trying to find the square root of pi using roman numerals."</span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.knallisworld.de/blog/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on 11. November 2010 22:37' href='http://twitter.com/#!/knalli/status/2822353918631936' target='_blank'>11. November 2010 22:37</a> via <a
href="http://www.echofon.com/" rel="nofollow" target="blank">Echofon</a><a
href='https://twitter.com/intent/tweet?in_reply_to=2822353918631936' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=2822353918631936' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=2822353918631936' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=knalli'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a1.twimg.com/profile_images/580918652/mac_screenshot_normal.png' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=knalli'>@knalli</a><div
style='margin:0; padding-top:2px'>knalli</div></div><div
style='clear:both'></div></div></div><p>Ein <a
href="http://www.art.net/~hopkins/Don/unix-haters/x-windows/disaster.html">schÃ¶nes Kapitel aus dem The Unix-Haters Buch</a>, passend zu einem <a
href="http://www.heise.de/open/artikel/Die-Woche-Das-Ende-von-X11-1134463.html">Thema</a> <a
href="http://www.heise.de/open/meldung/Ubuntu-will-weg-von-X11-1131824.html">dieser Woche</a>.</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2010/11/11/the-unix-haters-the-x-windows-desaster/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Lobbyismus fÃ¼r Dummies</title><link>http://www.knallisworld.de/blog/2010/11/06/lobbyismus-fur-dummies/</link> <comments>http://www.knallisworld.de/blog/2010/11/06/lobbyismus-fur-dummies/#comments</comments> <pubDate>Sat, 06 Nov 2010 15:56:57 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Allgemeines]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1298</guid> <description><![CDATA[Ein neues Werk von Alexander Lehmann. Wie immer sehenswert.]]></description> <content:encoded><![CDATA[<p>Ein neues Werk von Alexander Lehmann. Wie immer sehenswert.</p> <style type='text/css'>#bbpBox_634054642761729 a { text-decoration:none; color:#007099; }#bbpBox_634054642761729 a:hover { text-decoration:underline; }</style><div
id='bbpBox_634054642761729' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#1a5375; background-image:url(http://a3.twimg.com/profile_background_images/15208598/uuuuuu.jpg);'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Exklusiv bei Extra 3: Neuer Film von Alexander Lehmann! Lobbyismus f&#252;r Dummies - wie man Politiker effektiv beeinflusst <a
href="http://bit.ly/dtzgu0">http://bit.ly/dtzgu0</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.knallisworld.de/blog/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on 5. November 2010 21:42' href='http://twitter.com/#!/extra3/status/634054642761729' target='_blank'>5. November 2010 21:42</a> via web<a
href='https://twitter.com/intent/tweet?in_reply_to=634054642761729' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=634054642761729' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=634054642761729' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=extra3'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a3.twimg.com/profile_images/1215722728/logox3_twitter_auge_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=extra3'>@extra3</a><div
style='margin:0; padding-top:2px'>extra3</div></div><div
style='clear:both'></div></div></div> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2010/11/06/lobbyismus-fur-dummies/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>{DEVELOPERS SHAME DAY}</title><link>http://www.knallisworld.de/blog/2010/11/03/developers-shame-day/</link> <comments>http://www.knallisworld.de/blog/2010/11/03/developers-shame-day/#comments</comments> <pubDate>Tue, 02 Nov 2010 22:01:38 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Allgemeines]]></category> <category><![CDATA[Entwicklung]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Technologie/IT]]></category> <category><![CDATA[Wtf..?!]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1278</guid> <description><![CDATA[Cem hat kÃ¼rzlich den Developers Shame Day ins Leben gerufen. Als Stichtag wÃ¼rde ich denÂ 3.11.2010 vorschlagen.Â Ich stelle mir vor, dass an diesem Tag alle Entwickler, die ein Blog oder eine Seite betreiben, ein kleines StÃ¼ck Code prÃ¤sentieren, dass aus heutiger (oder vielleicht auch damaliger) Sicht total hirnverbrannt ist. Ein StÃ¼ck Code, dass uns [...]]]></description> <content:encoded><![CDATA[<p>Cem hat kÃ¼rzlich den <a
href="http://phphacker.net/2010/10/26/der-developers-shame-day/">Developers Shame Day ins Leben gerufen</a>.</p><blockquote><p>Als Stichtag wÃ¼rde ich denÂ <strong>3.11.2010</strong> vorschlagen.Â Ich stelle mir vor, dass an diesem Tag alle Entwickler, die ein Blog oder eine Seite betreiben, ein kleines StÃ¼ck Code prÃ¤sentieren, dass aus heutiger (oder vielleicht auch damaliger) Sicht total hirnverbrannt ist. Ein StÃ¼ck Code, dass uns selbst die SchamrÃ¶te ins Gesicht steigen lÃ¤sst. Dabei ist egal, ob es sich um PHP, JavaScript, CSS, HTML, Java, C oder sonst etwas handelt. Es muss nur von euch sein und es darf nicht verÃ¤ndert werden (umeventuell doch als total verrÃ¼ckter Hund dazustehenÂ  ). Ein kleiner erlÃ¤uternder Text sollte natÃ¼rlich auch nicht fehlen.</p></blockquote><p><img
class="aligncenter size-full wp-image-1287" title="Developers Shame Day" src="http://www.knallisworld.de/blog/wp-content/uploads/2010/11/developersshameday.png" alt="" width="500" height="100" /></p><p>Und das ist mein Beitrag, wohl einer meiner ersten Gehversuche in PHP. Der Quellcode entstammt einer Datei namens &#8220;functions.inc.php&#8221; [sic!]. Und <em>es scheint</em> <em>so</em> <img
src='http://www.knallisworld.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , also wÃ¤re es eine grÃ¶ÃŸere Anwendung gewesen, ich habe jedoch echt keine Ahnung mehr welche &#8212; vielleicht die erste PHP-Homepage in Eigenentwicklung? Die Datei hatte sich irgendwie auf meine &#8220;Informatik-Diskette&#8221; [sic!] (Oberstufenkurs) verirrt, von der ich tatsÃ¤chlich noch ein Abbild hatte. Der Rest der ProgrammiersÃ¼nden muss entweder (m)einen Backup-AufrÃ¤umaktionen oder einem vor einigen Jahren aufgetreten Backupmediumfehler zum Opfen gefallen sein. Zu meiner Verteidigung kann ich wohl nur sagen hoffen, dass dies einer erste Spielversion war und nie &#8220;produktiv&#8221; wurde.</p><h3>Listing</h3><p>Bitte in voller LÃ¤nge genieÃŸen. Jede Zeile ist ein Genuss. *ankoppfass*</p><p>UnverÃ¤ndert, nur Benutzername/Passwort habe ich ausgeixt.</p><p>Datei: <em>functions.inc.php (von 2002 oder 2003)</em></p><pre class="brush: php; title: ; notranslate">
&lt;?php
//conf.inc.php
//please don't change this file manually - go to your admin-area to change settings!!!
$listname=&quot;Meine Linkliste&quot;;
$listname2=&quot;Downloads&quot;;
$linkwidth=&quot;100%&quot;;
$addpagewidth=&quot;50%&quot;;
$catorder=&quot;name&quot;;
$incatsort=&quot;Hits&quot;;
$perpage=&quot;5&quot;;
$max_search=&quot;10&quot;;
$adminpw=&quot;a&quot;;
$max_desc_leng=&quot;500&quot;;
$html=&quot;ON&quot;;
$language=&quot;german.lang&quot;;
$timeformat=&quot;1&quot;;
 @include(&quot;global/$language&quot;); // language-file
 @include(&quot;../global/$language&quot;); // language-file
//connect.inc.php
// DON'T CHANGE THIS FILE MANUALLY - EDIT ONLY VIA ADMIN-AREA
$server=&quot;localhost&quot;;
$user=&quot;xxx&quot;;
$pass=&quot;xxx&quot;;
$mydb=&quot;xxx&quot;;
$db_prefix=&quot;xl_&quot;;
$db_prefix2=&quot;dl_&quot;;
function JPDiv ($a,$b) {
  $i=0;
  $j=0;
  while($j==0) {
    if(($a/($b*($i+1)))&gt;1) {
      $i++;
    } else {
      $j = 1;
    }
  }
return $i;
}
function JPDatumZeit ($a) {
  $JPTag = array(&quot;Sonntag&quot;,&quot;Montag&quot;,&quot;Dienstag&quot;,&quot;Mittwoch&quot;,&quot;Donnerstag&quot;,&quot;Freitag&quot;,&quot;Samstag&quot;);
  $JPMonat = array(&quot;Januar&quot;,&quot;Februar&quot;,&quot;MÃ¤rz&quot;,&quot;April&quot;,&quot;Mai&quot;,&quot;Juni&quot;,&quot;Juli&quot;,&quot;August&quot;,&quot;September&quot;,&quot;Oktober&quot;,&quot;November&quot;,&quot;Dezember&quot;);
  $JPDatumTag = $JPTag[date(&quot;w&quot;,$a)];
  $JPDatumMonat = $JPMonat[date(&quot;n&quot;,$a)-1];
  $JPDatumJahr = date(&quot;Y&quot;,$a);
  $JPZeit = date(&quot;H:i:s&quot;,$a);
  $b = $JPDatumTag . &quot;, &quot; . date(&quot;j&quot;) . &quot;. &quot; . $JPDatumMonat . &quot; &quot; . $JPDatumJahr . &quot; [&quot; . $JPZeit . &quot;]&quot;;
return $b;
}
function JPDatumZeit2 ($a) {
  $JPDatumJahr = date(&quot;Y&quot;,$a);
  $JPZeit = date(&quot;H:i:s&quot;,$a);
  $b = date(&quot;j&quot;) . &quot;.&quot; . date(&quot;w&quot;,$a)+1 . &quot;.&quot; . $JPDatumJahr . &quot; [&quot; . $JPZeit . &quot;]&quot;;
return $b;
}
class my_zugriff{
//Variablen fÃ¼r Zugangsdaten
var $user=&quot;xxx&quot;;		//Benutzername fÃ¼r den MySQL-Zugang
var $password=&quot;xxx&quot;;		//Passwort
var $host=&quot;localhost&quot;;	//Name (IP-Adr.) des Rechners mit MySQL
var $dbname=&quot;xxx&quot;; 	//Name der Datenbank
//Weitere Variablen
var $db_verbindung=false; //Speichert die Verbindungskennung
var $sql_result=false; //Speichert die Kennung eines ausgewerteten SQL-Befehls
//Konstruktor definieren
function my_zugriff(){
   //Funktion verbinden wird bei Aufruf der Klasse ausgefÃ¼hrt
	 $this-&gt;verbinden();
}
//Falls keine Verbindung besteht,
//Verbindung aufbauen und Datenbank als Standard definieren
function verbinden(){
if ($this-&gt;db_verbindung==false){
   $this-&gt;db_verbindung = @mysql_connect($this-&gt;host, $this-&gt;user, $this-&gt;password);
   if(empty($this-&gt;db_verbindung)){
      $this-&gt;fehler(&quot;Beim Verbinden&quot;);
   }
   $auswahl = @mysql_select_db($this-&gt;dbname, $this-&gt;db_verbindung);
   if(empty ($auswahl)){
      $this-&gt;fehler(&quot;Beim Ausw&amp;auml;hlen der DB&quot;);
   }
   return $this-&gt;db_verbindung;
}
}
//Gibt Fehlermeldung aus und beendet das Skript
function fehler($fehlerpunkt){
    echo $fehlerpunkt . &quot; ist ein Fehler aufgetreten!&lt;br&gt;&quot;;
		echo mysql_error() . &quot;&lt;br&gt;&quot;; //Fehlerbezeichnung
		echo mysql_errno();	 	 		//Fehlernummer
		echo &quot;&lt;/body&gt;&lt;/html&gt;&quot;;		//Html-Tags schlieÃŸen
		exit;
}
//SQL-Befehl ausfÃ¼hren
function sql_befehl($sql){
$this-&gt;sql_result = @mysql_query($sql, $this-&gt;db_verbindung);
if (empty($this-&gt;sql_result)){
	 $this-&gt;fehler(&quot;Beim Senden der Abfrage&quot;);
}
return $this-&gt;sql_result;
}
//Falls zuvor ein SQL-Befehl ausgefÃ¼hrt wurde,
//wird hier das Array mit den DatensÃ¤tzen ausgegeben
function sql_daten(){
if(!empty($this-&gt;sql_result)){
		$sql_array=@mysql_fetch_array($this-&gt;sql_result);
		return $sql_array;
}else{
		$this-&gt;fehler(&quot;Beim Ausgeben der Datens&amp;auml;tze&quot;);
}
}
//eig. Fkt
function sql_num_rows($sql){
$this-&gt;sql_befehl($sql);
$rows = MYSQL_NUM_ROWS($this-&gt;sql_result);
return $rows;
}
}
$db=new my_zugriff();
$db-&gt;sql_befehl(&quot;SELECT elem_string FROM elem_global WHERE elem_name='JPmyVersion'&quot;);
$myVersion_now = $db-&gt;sql_daten();
 $JPmyVersion = $myVersion_now[0];
?&gt;
</pre><h3>Selbstreflexion</h3><ul><li>Struktur: globale Variablen</li><li>Struktur/Aufbau:Â als Script noch okay, aber als Include? Oweh..</li><li>Includes mittendrin</li><li>Variabel- und Funktionsnamen multilingual</li><li>Inhalt der Funktionen..</li><li>kein gÃ¤ngiger Codestyle (ja, der Blog zeigt&#8217;s richtig an)</li><li>Inline-SQL(!)</li></ul><p>Kurzum: What the hell&#8230;?</p><p>Weitere via <a
href="http://www.google.de/search?q=%22developers+shame+day">Google</a> oder <a
href="http://twitter.com/#!/search/Developers%20Shame%20Day">Twitter</a> oder <a
href="http://www.facebook.com/event.php?eid=165246213503708">Facebook</a>.</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2010/11/03/developers-shame-day/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>[Howto] Maven: Wie man eine ausfÃ¼hrbare Jar in eine Java-Webanwendung (War) via Webstart integriert.</title><link>http://www.knallisworld.de/blog/2010/09/04/howto-maven-wie-man-eine-ausfuhrbare-jar-in-eine-java-webanwendung-war-via-webstart-integriert/</link> <comments>http://www.knallisworld.de/blog/2010/09/04/howto-maven-wie-man-eine-ausfuhrbare-jar-in-eine-java-webanwendung-war-via-webstart-integriert/#comments</comments> <pubDate>Sat, 04 Sep 2010 17:06:20 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Allgemeines]]></category> <category><![CDATA[Empfehlungen]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[Technologie/IT]]></category> <category><![CDATA[Tipps]]></category> <category><![CDATA[jar]]></category> <category><![CDATA[maven]]></category> <category><![CDATA[war]]></category> <category><![CDATA[webstart]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1225</guid> <description><![CDATA[Die Situation Es bestehen zwei lauffÃ¤hige, fertige Projekte in Maven, welche beide auch vollwertige Artefakte bilden kÃ¶nnen. Zum einen die Webanwendung &#8212; nennen wir sie hier mal webportal &#8212; mit einem WAR-Artefakt, etwa fÃ¼r einen Tomcat. Ob das Artefakt als Snapshot oder Release gemacht wird, ob es nur generiert oder auch in ein Repository deployt [...]]]></description> <content:encoded><![CDATA[<h3>Die Situation</h3><p>Es bestehen zwei lauffÃ¤hige, fertige Projekte in Maven, welche beide auch vollwertige Artefakte bilden kÃ¶nnen.</p><p><a
href="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-18.52.33.png"></a>Zum einen die Webanwendung &#8212; nennen wir sie hier mal <em>webportal</em> &#8212; mit einem WAR-Artefakt, etwa fÃ¼r einen Tomcat. Ob das Artefakt als Snapshot oder Release gemacht wird, ob es nur generiert oder auch in ein Repository deployt wird, ist hierbei nicht von weiterer Bedeutung.<a
href="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/Nuvola_mimetypes_java_jar.png"><img
class="size-full wp-image-1232 alignright" title="Nuvola_mimetypes_java_jar" src="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/Nuvola_mimetypes_java_jar.png" alt="" width="128" height="128" /></a></p><p>Zum anderen die normale Clientanwendung &#8212; nennen wir sie doch einfach <em>userclient</em> &#8212; mit einem JAR-Artefakt. Wichtig ist natÃ¼rlich, dass hier eine startfÃ¤hige Main-Klasse vorhanden ist. Dies sollte jedoch der Regelfall sein, daher nur der formale Hinweis.</p><p>Zusammengefasst, und der Auftrag an dieses Howto ist also: Wie konfiguriert und erweitert man den Buildzyklus in welchem Projekt an welcher Stelle am geschicktesten, um auf einfachem Wege die JAR-Datei <em>userclient</em> in die Webanwendung <em>webportal</em> als Java Webstart zu integrieren. Dabei ist es hilfreich, wenn man via <em>pom.xml</em> (und natÃ¼rlich der Macht der Properties) die Versionen spezifizieren kann. Der gesamte Prozess von auswÃ¤hlen, signieren und ausliefern soll dabei automatisch und ohne weiteres Eingreifen des Entwicklers geschehen kÃ¶nnen. Idealerweise sollte das ganze auch optional sein &#8212; dazu gibt es dann mehr unter &#8220;Optimierungen und Verbesserungen&#8221;.</p><p><span
id="more-1225"></span></p><h3>Die Grundlagen</h3><p><a
href="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-18.54.54.png"><img
class="alignleft size-full wp-image-1234" title="Java 6 Webstart" src="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-18.54.54.png" alt="" width="327" height="145" /></a>Ich mÃ¶chte jetzt nicht viel Ã¼ber die Grundlagen verlieren, nur so viel sei gesagt. Aus Sicht von Maven ist die Konfiguration &#8220;nur&#8221; ein weiteres Plugin von vielen. Daraus ergibt sich natÃ¼rlich auch die MÃ¶glichkeit, via Properties oder Profilen die Konfiguration sehr dynamisch zu halten. Webstart ist eine Technik, die an sich nichts mit Maven zu tun hat. Man kann auch &#8220;hÃ¤ndisch&#8221; seine Jar-Datei Ã¼ber eine URL verfÃ¼gbar machen. Man muss dann jedoch alles selber und richtig machen: Versionisierung, Signierung und Deployment. Die Signierung ist gerade dann wichtig, wenn die Applikation erweiterte/volle Rechte benÃ¶tigt.</p><h3>Die MÃ¶glichkeiten</h3><p>Es gibt eine Reihe von Maven-Plugins, die einen unterschiedliche AnsÃ¤tze und LÃ¶sungen bieten.</p><p>Das <a
href="http://maven.apache.org/plugins/maven-jar-plugin/">Maven Jar Plugin</a> bietet etwa unter anderem die MÃ¶glichkeit, die Jar-Dateien zu signieren. Dies wÃ¤re jedoch nur die halbe Miete, da weder die Jar-Dateien bekannt noch auslieferbar sind. Auch das <a
href="http://mojo.codehaus.org/keytool-maven-plugin/">Keytool plugin</a> ist nicht vollstÃ¤ndig, denn es unterstÃ¼tzt zwar das Keystore gestÃ¼tzte signieren, aber auch nicht mehr. Wohl aber kÃ¶nnen diese Plugin als Basis fÃ¼r andere dienen.</p><p>Weitaus mehr Funktionen kann das <a
href="http://mojo.codehaus.org/webstart/webstart-maven-plugin/">Webstart Maven Plugin</a> bieten. Es gibt verschiedene Arten der Erzeugung der Jnlp-Datei und dem damit verbundenen Sammeln, Bestimmen und Signieren der AbhÃ¤ngigkeiten in Form weiterer Jars oder Classfiles. Es ist auch ein hilfreiches Plugin, wenn man aus einem Projekt heraus direkt Jnlp &amp; Ressourcen erzeugen will.</p><p>In diesem Howto ist aber vor allem ein Ziel von Relevanz:Â Die Variante mit dem Jnlp-Download-Servlet: das Goal <a
href="http://mojo.codehaus.org/webstart/webstart-maven-plugin/jnlp-download-servlet-mojo.html">webstart:jnlp-download-servlet</a>.<a
href="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/jnlp.gif"><img
class="alignright size-full wp-image-1235" title="jnlp" src="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/jnlp.gif" alt="" width="128" height="128" /></a></p><p>Dieses Goal erzeugt im Buildprozess ein weiteres Verzeichnis mit den Ressourcen des <em>userclients</em> und der dazugehÃ¶renden Jnlps. Ein spezielles Servlet Ã¼bernimmt die Auslieferungen.</p><h3>Die Konfiguration im Projekt <em>userclient</em></h3><p>Das Projekt muss und sollte nicht &#8220;wissen&#8221;, dass es Ã¼ber Webstart irgendwo eingebunden wird. Daher sind keine Ã„nderungen nÃ¶tig. Wohl aber muss bekannt sein, wie die aktuelle bzw. die gewÃ¼nschte Version ist und ggf. das Maven-Repository der Deploys.</p><h3>Die Konfiguration im Projekt <em>webportal</em></h3><p><a
href="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-18.52.33.png"><img
title="Maven" src="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-18.52.33.png" alt="" width="170" height="50" /></a>Das <em>webportal</em> muss hingegen durchaus von der Existenz des <em>userclients</em> wissen, denn jenes es soll ja in diese Webanwendung integriert werden. Die Konfiguration besteht im Wesentlichen aus drei Schritten: JnlpDownloadServlet-AbhÃ¤ngigkeit einfÃ¼gen, Servlet in der web.xml registrieren und Build-Plugin in der pom.xml konfigurieren.</p><h4>JnlpDownloadservlet (pom.xml)</h4><p>Das Maven-Paket findet sich unter dem Namen <em>com.sun.java.jnlp</em> bzw.Â <em>jnlp-servlet</em> wieder. Als einfache AbhÃ¤ngigkeit ist es damit im Classpath und beispielsweise in der web.xml verwendbar. <a
href="http://coffeebreaks.org/tmp/maven-staging/webstart/site/jnlp101.html">Weitere Informationen.</a></p><pre class="brush: xml; title: ; notranslate">
&lt;dependency&gt;
    &lt;groupId&gt;com.sun.java.jnlp&lt;/groupId&gt;
    &lt;artifactId&gt;jnlp-servlet&lt;/artifactId&gt;
    &lt;version&gt;5.0&lt;/version&gt;
&lt;/dependency&gt;
</pre><h4>web.xml</h4><p>Zur Basiskonfiguration muss nur das Servlet registriert und mit einem URL-Pattern verknÃ¼pft werden. Das klingt trivial, und das ist es auch.</p><pre class="brush: xml; title: ; notranslate">
&lt;servlet&gt;
  &lt;servlet-name&gt;JnlpDownloadServlet&lt;/servlet-name&gt;
  &lt;servlet-class&gt;jnlp.sample.servlet.JnlpDownloadServlet&lt;/servlet-class&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
  &lt;servlet-name&gt;JnlpDownloadServlet&lt;/servlet-name&gt;
  &lt;url-pattern&gt;/webstart/*&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;</pre><p>Damit wird die URL domain.tld/context/webstart an das Servlet gemappt. Dadurch kann das Servlet auch auf &#8220;virtuelle Dateianfragen&#8221; reagieren, etwa nach Jar-Dateien ohne Versions-Qualifkation (obwohl sie als versionierte Artefakte vorliegen).</p><p>Die Konfiguration lÃ¤sst noch einige Dinge erweitern, verÃ¤ndern und tweaken (siehe Absatz Optimierungen und Verbesserungen). FÃ¼r den Haupteinsatzzweck &#8211; das Bereitstellen einer oder mehrerer Jars via Webstart ist das jedoch vÃ¶llig ausreichend.</p><p><a
href="http://download.oracle.com/javase/6/docs/technotes/guides/javaws/developersguide/downloadservletguide.html">Weitere Informationen bei Oracle/Java</a>.Â Und <a
href="http://mojo.codehaus.org/webstart/webstart-maven-plugin/examples/advanced_jnlp_download_servlet.html">weitere Informationen bei Codehaus</a>.</p><h4>pom.xml</h4><p>Neben der AbhÃ¤ngigkeit des <em>JnlpDownloadServlet</em> muss das eigentlichen <em>Maven Webstart Plugin</em> fÃ¼r seinen Einsatz konfiguriert werden. Das Build-Plugin benÃ¶tigt zudem noch ein Template (fÃ¼r die Generierung der Jnlp), die wird weiter unten beschrieben.</p><p>Zur Grundkonfiguration gehÃ¶rt:</p><ol><li>Wo liegt das Jnlp-Template?</li><li>Wie heiÃŸt der Ausgabename der Jnlp?</li><li>Welche AbhÃ¤ngigkeiten gibt es fÃ¼r das Paket &#8212; hier wÃ¤re das der <em>userclient</em>?</li></ol><p>Des Weiteren lÃ¤sst sich bestimmen, ob etwa weitere (transitive) AbhÃ¤ngigkeiten mitausgeliefert werden sollen (bei Webstart ist das wohl meist sinnvoll), ob die Ressourcen signiert werden sollen und ob alles nochmals komprimiert deployt werden soll. <a
href="http://mojo.codehaus.org/webstart/webstart-maven-plugin/examples/advanced_jnlp_download_servlet.html">Weitere Informationen</a>.</p><p>Prinzipiell ist man weder auf eine AbhÃ¤ngigkeit pro Paket/JNLP beschrÃ¤nkt noch auf eine JNLP pro Plugin-Call geschweige denn des gesamten Projekts. Ãœber das KonfigurationsschlÃ¼sselwort <em>commonJarResources</em> kÃ¶nnen sogar gemeinsam verwendete AbhÃ¤ngigkeiten definiert werden.</p><p>Da der userclient erweiterte Rechte benÃ¶tigt, mÃ¼ssen alle Classfiles und Jars signiert werden. Wahlweise verwendet dafÃ¼r einen vorhandenen Keystore oder erstellt einen neuen. FÃ¼r diese Zwecke wird pro Buildvorgang ein neuer Keystore angelegt, damit signiert und danach wieder gelÃ¶scht.</p><p>Die Execution ist sinnigerweise <em>process-resources</em> mit dem Goal <em>jnlp-download-servlet</em>, denn streng genommen sind es ja nur weitere Ressourcen.</p><pre class="brush: xml; title: ; notranslate">
&lt;plugin&gt;
  &lt;groupId&gt;org.codehaus.mojo.webstart&lt;/groupId&gt;
  &lt;artifactId&gt;webstart-maven-plugin&lt;/artifactId&gt;
  &lt;executions&gt;
    &lt;execution&gt;
      &lt;phase&gt;process-resources&lt;/phase&gt;
      &lt;goals&gt;
        &lt;goal&gt;jnlp-download-servlet&lt;/goal&gt;
      &lt;/goals&gt;
    &lt;/execution&gt;
  &lt;/executions&gt;
  &lt;configuration&gt;
    &lt;outputDirectoryName&gt;webstart&lt;/outputDirectoryName&gt;
    &lt;excludeTransitive&gt;false&lt;/excludeTransitive&gt;
    &lt;jnlpFiles&gt;
      &lt;jnlpFile&gt;
        &lt;templateFilename&gt;template.vm&lt;/templateFilename&gt;
        &lt;outputFilename&gt;UserClient.jnlp&lt;/outputFilename&gt;
        &lt;jarResources&gt;
          &lt;jarResource&gt;
            &lt;groupId&gt;org.example.userclient&lt;/groupId&gt;
            &lt;artifactId&gt;example-userclient&lt;/artifactId&gt;
            &lt;version&gt;1.0.0&lt;/version&gt;
            &lt;mainClass&gt;org.example.userclient.Main&lt;/mainClass&gt;
          &lt;/jarResource&gt;
        &lt;/jarResources&gt;
      &lt;/jnlpFile&gt;
    &lt;/jnlpFiles&gt;
    &lt;outputJarVersions&gt;true&lt;/outputJarVersions&gt;
    &lt;verbose&gt;false&lt;/verbose&gt;
  &lt;/configuration&gt;
&lt;/plugin&gt;
</pre><p>Mit dieser Konfiguration werden die Jar-Dateien inkl. AbhÃ¤ngigkeiten in das Verzeichnis <em>webstart</em> gepackt &#8212; remember? wie in der <em>web.xml</em>. Das Template heiÃŸt <em>template.vm</em> und ist per default unter <em>src/main/jnlp</em> zu finden. Dies lieÃŸe sich mit <em>templateDirectory</em> Ã¼berrschreiben. Der Name der Jnlp lautet <em>UserClient.jnlp</em>, damit ergibt sich die spÃ¤tere Web-Url: <em>http://example.org/context/webstart/UserClient.jnlp</em>. Die eigentlichen Ressourcen und AbhÃ¤ngigkeiten werden in <em>jarResources/jarResource</em> definiert. Bei einfachen Projekten wird dies nur eine Ressource sein, theoretisch wÃ¤ren auch mehrere mÃ¶glich. Die Konfiguration Ã¤hnelt der der <em>dependencies</em>.</p><h4>template.vm</h4><p>Im Prinzip ist das Template eine unfertige Jnlp. Sie wird durch das Maven Plugin mit den endgÃ¼ltigen Daten befÃ¼llt. Da bereits die pom.xml Ã¼ber einige Informationen wie Projektnamen, -beschreibung oder -url verfÃ¼gt, kÃ¶nnen so sehr einfach die Daten mit Ã¼bernommen werden. Man kann jedoch auch die Platzhalter entfernen &#8212; es ist eben nur ein Template.</p><p>Ein Beispiel kÃ¶nnte so aussehen:</p><pre class="brush: xml; title: ; notranslate">
&lt;jnlp spec=&quot;$jnlpspec&quot; codebase=&quot;$$codebase&quot;&gt;
  &lt;information&gt;
    &lt;title&gt;$project.Name&lt;/title&gt;
    &lt;vendor&gt;$project.Organization.Name&lt;/vendor&gt;
    &lt;homepage href=&quot;$project.Url&quot;/&gt;
    &lt;description&gt;$project.Description&lt;/description&gt;
    &lt;icon href=&quot;../resources/images/logo.png&quot;/&gt;
    &lt;icon href=&quot;../resources/images/logo.png&quot; kind=&quot;splash&quot;/&gt;
#if($offlineAllowed)
&lt;offline-allowed/&gt;
#end
  &lt;/information&gt;
#if($allPermissions)
&lt;security&gt;
&lt;all-permissions/&gt;
&lt;/security&gt;
#end
  &lt;resources&gt;
    &lt;j2se version=&quot;$j2seVersion&quot;/&gt;
$dependencies
  &lt;/resources&gt;
  &lt;application-desc main-class=&quot;$mainClass&quot;&gt;&lt;/application-desc&gt;
&lt;/jnlp&gt;
</pre><p>Mehr oder weniger simpel, oder? Eventuell sollte man die Adressen zum Logo anpassen (oder entfernen); gerade die letzte Zeile erzeugt einen netten Splashscreen (Ladebild) wÃ¤hrend dem Starten und Laden der Anwendung. Das ist immer gerne willkommen.</p><p>Wichtig: Im Gegensatz zu dem einen oder anderen Beispiel ist es hierbei wichtig, dass die Variable $$codebase heiÃŸt. Nicht etwa ${codebase}. Insgesamt sind in der JNLP &#8212; sofern man sie Ã¼ber das Servlet ausliefert &#8212; folgende Variablen verfÃ¼gbar: codebase, name, context und site.</p><h3>Optimierungen und Verbesserungen</h3><p
style="text-align: center;"><a
href="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/IMG_0095.jpg"><img
class="aligncenter size-large wp-image-1236" title="IMG_0095" src="http://www.knallisworld.de/blog/wp-content/uploads/2010/09/IMG_0095-1024x475.jpg" alt="" width="768" height="356" /></a></p><h4>&#8220;Einmal signiert, bitte!&#8221;</h4><p>Um <em>all-permissions</em> nutzen zu kÃ¶nnen, mÃ¼ssen die Jars und Classfiles signiert werden. Das erreicht man, indem man unter dem XML-Knoten <em>configuration</em> einen Knoten <em>sign</em> anlegt, etwa:</p><pre class="brush: xml; title: ; notranslate">
&lt;sign&gt;
	&lt;keystore&gt;keystore.ks&lt;/keystore&gt;
	&lt;keypass&gt;pass&lt;/keypass&gt;
	&lt;storepass&gt;pass&lt;/storepass&gt;
	&lt;alias&gt;userclient&lt;/alias&gt;
	&lt;validity&gt;36500&lt;/validity&gt;
	&lt;dnameCn&gt;UserClient&lt;/dnameCn&gt;
	&lt;dnameOu&gt;Software Development&lt;/dnameOu&gt;
	&lt;dnameO&gt;The Example Networks&lt;/dnameO&gt;
	&lt;dnameL&gt;Cologne&lt;/dnameL&gt;
	&lt;dnameSt&gt;NRW&lt;/dnameSt&gt;
	&lt;dnameC&gt;DE&lt;/dnameC&gt;
	&lt;verify&gt;false&lt;/verify&gt;
	&lt;keystoreConfig&gt;
		&lt;delete&gt;true&lt;/delete&gt;
		&lt;gen&gt;true&lt;/gen&gt;
	&lt;/keystoreConfig&gt;
&lt;/sign&gt;
</pre><p>Hierbei wird der Keystore lokal erzeugt (keystoreConfig/gen ist true) und nach Gebrauch wieder gelÃ¶scht (keystoreConfig/delete ist true). SelbstverstÃ¤ndlich kann man hier auch a) noch einen Keystore-Generator (s.o.) nutzen oder einen fest konfigurierten, dauerhaften. Dann sollte man natÃ¼rlich die Konfiguration entsprechend anpassen.</p><h4>&#8220;Bitte Optional&#8221; &#8212; alles in ein Profil</h4><p>Die Profile in der <em>pom.xml</em> sind ein mÃ¤chtiges Werkzeug, um bestimmte Features zusammenzufassen. So kÃ¶nnte man das gesamte Build-Plugin in ein Profil &#8212; etwa mit dem Namen <em>with-webstart</em> &#8212; ablegen.</p><p>Selbst die AbhÃ¤ngigkeit zum JnlpDownloadServlet kann man dorthin verlagern &#8212; wenn man daran denkt, dass in diesem Falle auch die web.xml dynamisch erstellt werden soll.</p><h4>Macht der Properties</h4><p>Man kann die Gesamtkonfiguration um einiges komfortabler machen, indem man Properties einfÃ¼hrt und deren Standardwerte &#8220;oben&#8221; in der <em>pom.xml</em> definiert. Gute Kandidaten hierbei wÃ¤ren: userclient.version, keystore.file, keystore.keypass, keystore.storepass und keystore.alias.</p><h4>Noch mehr in Sachen Jnlp</h4><p>In der <em>web.xml</em> kann des Weiteren das verhalten des JnpDownloadServlet verÃ¤ndert werden. Ein Ãœberblick Ã¼ber einige MÃ¶glichkeiten: Â Mimetypen Ã¤ndern, Dateiendungen Ã¤ndern, weitere Mappings anlegen, spezielles Debugging.</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2010/09/04/howto-maven-wie-man-eine-ausfuhrbare-jar-in-eine-java-webanwendung-war-via-webstart-integriert/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
