<?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>info.michael-simons.eu &#187; German posts</title>
	<atom:link href="http://info.michael-simons.eu/category/german-posts/feed/" rel="self" type="application/rss+xml" />
	<link>http://info.michael-simons.eu</link>
	<description>Just another nerd blog</description>
	<lastBuildDate>Wed, 08 Feb 2012 10:26:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>JAX2009: Impressionen einer Konferenz (ohne Bilder)</title>
		<link>http://info.michael-simons.eu/2009/04/24/jax2009-impressionen-einer-konferenz-ohne-bilder/</link>
		<comments>http://info.michael-simons.eu/2009/04/24/jax2009-impressionen-einer-konferenz-ohne-bilder/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 10:23:25 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[German posts]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[Thoughts]]></category>

		<guid isPermaLink="false">http://info.michael-simons.eu/?p=325</guid>
		<description><![CDATA[Wie bereits im letzten Jahr war ich auch dieses Jahr 2 Tage auf der JAX, die dieses Jahr in Mainz statt fand. Nach zahlreichen Konferenzen in den letzten Jahren, u.a. einige DOAGs, werden meine Gefühle bzgl. dieser Veranstaltungen immer gemischter. Ich habe den Eindruck, dass die Schere zwischen guten und schlechten Vorträgen immer größer klafft. [...]]]></description>
			<content:encoded><![CDATA[<p>Wie bereits im letzten Jahr war ich auch dieses Jahr 2 Tage auf der <a href="http://it-republik.de/jaxenter/jax/">JAX</a>, die dieses Jahr in Mainz statt fand.</p>
<p>Nach zahlreichen Konferenzen in den letzten Jahren, u.a. einige DOAGs, werden meine Gefühle bzgl. dieser Veranstaltungen immer gemischter. Ich habe den Eindruck, dass die Schere zwischen guten und schlechten Vorträgen immer größer klafft. Vielleicht eine Folge dessen, dass versucht wird, immer mehr Slots zu füllen.</p>
<p>Bemerkenswert an der JAX dieses Jahr waren natürlich Rails Day an einem Tag, Grails / Groovy Day am nächsten. </p>
<p>Stefan Tilkov hielt einen gut strukturierten Vortrag über REST Technologien im Rahmen des Rails Day. Das, was er präsentierte, hätte von der Thematik auch gut in einige andere Frameworks gepasst, aber trotzdem: Die Präsentation war gelungen. Gute Mischung aus wenigen Folien und Livecoding. Spätestens danach musste dem Zuhörer klar sein, was REST bedeutet. Im selben Track präsentierte Jonathan Weiss &#8220;Advanced Deployment mit Rails&#8221; in einer Art und Weise, wie ich mir keinen Vortrag vorstelle: Viel zu viele textlich überladene Folien und zumindest fürs Publikum, eine ungünstige Themenwahl. So fiel auch leider das &#8220;advanced&#8221; weg, was im Rahmen von Fragen wie &#8220;Was ist besser, JRuby oder Grails?&#8221; (Was ist besser, Apfel oder Birne?) aus dem Publikum wohl auch gut war.</p>
<p>Der Vortrag Rails 3 von Gregg Pollack wurde zwar in einem gänzlich anderem Stil gehalten als Stefans, war aber trotzdem hörenswert: Frei und sicher gesprochen, ohne zu langweilen.</p>
<p>Auch Keynotes können langweilen: Brian Kim von Liferay sprach zum Thema &#8220;Architecting your way through recession: an open source survival kit&#8221;. Ich habe nicht eine Aussage aus diesem Vortrag behalten. </p>
<p>Im Gegensatz dazu &#8220;Fette Maschinen brauchen schlanke Software&#8221; von Klaus Alfert, der sehr anschaulich dokumentierte, warum funktionale oder hybrid funktionale Sprachen in den nächsten Monaten und Jahren immer wichtiger werden. Auch er langweilte nicht mit Textwüsten. Passend dazu, Ted Newards &#8220;Busy Java Developer&#8217;s Guide to Scala&#8221;. Ted ist immer wieder das reinste Vergnügen: &#8220;What&#8217;s your name? &#8211; Rüdiger. &#8211; Ok, Walther.&#8221;</p>
<p>Was ich nicht verstehe, dass teilweise einige Redner augenscheinlich vollkommen unvorbereitet zu einer Konferenz kommen oder aber die Zuhörer mit endlosen Slides, die aussehen wie ein &#8220;man <topic>&#8221; in Powerpoint langweilen, anstatt Slides zur Motivation zu nutzen und zur Abwechslung einmal frei zu sprechen. Die Vorträge, die mich wirklich innerlich aufgeregt oder mir wörtlich die Augen zufallen ließen, erwähne ich mal nicht namentlich.</p>
<p>Im Gegensatz zur <a href="http://www.doag.org/">DOAG</a> ist das Publikum auf der JAX jünger und durchmischter, aber auch teilweise deutlich unhöflicher, was jedes Mal bei der Nahrungsmittelausgabe offensichtlich wurde: Sturm auf das Büffet. Oh wie ich es hasse, wenn Menschen komplett alles an Erziehung vergessen, wenn irgendwo kostenloses Essen rumsteht. Generell zum Essen: Liebe Jaxcon Menschen, lasst doch die Gimmicks wie Taschen, Rucksäcke und Zeugs sein und bestellt etwas höherwertiges Catering <img src='http://info.michael-simons.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Trotzdem, einige nette Gespräche habe ich geführt, u.a. mal ein paar Kollegen von <a href="http://www.codecentric.de/">Codecentric</a> kennen gelernt und einen Vortrag von Mirko gehört (Flush and Clear: O/R Mapping Pitfalls), nachdem ich immer noch über die Sinnhaftigkeit eines select distinct nachdenke am manyToOne Ende einer 1-n Beziehung, um das zusätzliche Select zu sparen <img src='http://info.michael-simons.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Desweiteren traf ich witziger weise einen Kollegen aus Ausbildungszeiten, die Welt ist wirklich klein. </p>
<p>Alles in allem: Eine gute Veranstaltung, 3 oder 4 Tage wären mir aber definitiv zu viel oder ich müsste mir angewöhnen, aus Vorträgen, die mich aufregen, einfach raus zu gehen. Mal schauen, wie es nächstes Jahr wird&#8230; Eventuell kann man ja bis dahin DOAG und JAX zusammenwerfen <img src='http://info.michael-simons.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p class="akst_link"><a href="http://info.michael-simons.eu/?p=325&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_325" class="akst_share_link " rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://info.michael-simons.eu/2009/04/24/jax2009-impressionen-einer-konferenz-ohne-bilder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wütend</title>
		<link>http://info.michael-simons.eu/2009/02/25/wutend/</link>
		<comments>http://info.michael-simons.eu/2009/02/25/wutend/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 17:39:30 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[German posts]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Rants]]></category>

		<guid isPermaLink="false">http://info.michael-simons.eu/?p=302</guid>
		<description><![CDATA[Oh man, ich bin so verdammt wütend, ein Tweet reicht nicht aus. Es ist so zum kotzen, dass es Programmiersprachen wie PHP den Leuten so leicht machen, hübsche Sachen zu programmieren, die auseinander fallen, wenn man sie mal schief anschaut. &#8220;Hübsche Gui&#8221; und &#8220;Ich weiß, was ich da gerade in die Datenbank schreibe&#8221; sind zwei [...]]]></description>
			<content:encoded><![CDATA[<p>Oh man, ich bin so verdammt wütend, ein Tweet reicht nicht aus.</p>
<p>Es ist so zum kotzen, dass es Programmiersprachen wie PHP den Leuten so leicht machen, hübsche Sachen zu programmieren, die auseinander fallen, wenn man sie mal schief anschaut.</p>
<p>&#8220;Hübsche Gui&#8221; und &#8220;Ich weiß, was ich da gerade in die Datenbank schreibe&#8221; sind zwei Paar Schuhe. </p>
<p>Wie kann man eigentlich eine Checksum Routine so implementieren, dass sie auf unterschiedlichen Architekturen unterschiedliche Ergebnisse liefert? Braucht es da mehr als einen mittelmässig begabten Affen, zu erkennen, dass das eine scheiß Idee ist? Und noch spannender ist es natürlich dann, diese Funktion auch zu nutzen.</p>
<p>Boah echt ey.</p>
<p>Leute, lasst die Finger von <a href="http://bugs.php.net/bug.php?id=39062">PHPs crc32()</a> Implementierung oder benutzt sie <a href="http://guxx.de/2007/05/25/crc32-in-php-richtig-benutzt/">richtig</a>.</p>
<p class="akst_link"><a href="http://info.michael-simons.eu/?p=302&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_302" class="akst_share_link " rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://info.michael-simons.eu/2009/02/25/wutend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Safari Webinspektor</title>
		<link>http://info.michael-simons.eu/2008/01/08/safari-webinspektor/</link>
		<comments>http://info.michael-simons.eu/2008/01/08/safari-webinspektor/#comments</comments>
		<pubDate>Tue, 08 Jan 2008 16:43:02 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[German posts]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[Tipps]]></category>

		<guid isPermaLink="false">http://info.michael-simons.eu/2008/01/08/safari-webinspektor/</guid>
		<description><![CDATA[Vor fast 1.5 Jahren schrieb ich im Zusammenhang mit Daily Fratze on rails über den Safari Inspektor, der damals nur in den Nightlies verfügbar war: Damaliges Daily Fratze Preview. Leider habe ich den Inspektor im aktuellen Safari 3 nie mehr gesehen, bis ich vor ein paar Tagen auf das SülzOMat Blog stieß. Einfach im Terminal [...]]]></description>
			<content:encoded><![CDATA[<p>Vor fast 1.5 Jahren schrieb ich im Zusammenhang mit <a href="http://dailyfratze.de">Daily Fratze on rails</a> über den Safari Inspektor, der damals nur in den Nightlies verfügbar war: <a href="http://info.michael-simons.eu/2006/07/06/dailyfratze-on-rails/">Damaliges Daily Fratze Preview</a>.</p>
<p>Leider habe ich den Inspektor im aktuellen Safari 3 nie mehr gesehen, bis ich vor ein paar Tagen auf das <a href="http://suelzomat.de">SülzOMat Blog</a> stieß. Einfach im Terminal folgenden Befehl absetzen:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">defaults <span style="color: #c20cb9; font-weight: bold;">write</span> com.apple.Safari WebKitDeveloperExtras <span style="color: #660033;">-bool</span> <span style="color: #c20cb9; font-weight: bold;">true</span></pre></div></div>

<p>Safari neu starten und man hat über das Kontextmenü den neuen Punkt &#8220;Element-Informationen&#8221;, der den Inspektor startet, der dem beliebten Plugin &#8220;Firebug&#8221; für Firefox in kaum etwas mehr nachsteht.</p>
<p>Vielen Dank für <a href="http://suelzomat.de/2008/01/04/safari-3-und-webentwicklung/">diesen Beitrag</a>!</p>
<p class="akst_link"><a href="http://info.michael-simons.eu/?p=140&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_140" class="akst_share_link " rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://info.michael-simons.eu/2008/01/08/safari-webinspektor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Negative Erlebnisse</title>
		<link>http://info.michael-simons.eu/2007/12/11/negative-erlebnisse/</link>
		<comments>http://info.michael-simons.eu/2007/12/11/negative-erlebnisse/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 11:07:10 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[German posts]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Oracle VM]]></category>
		<category><![CDATA[Rants]]></category>

		<guid isPermaLink="false">http://info.michael-simons.eu/2007/12/11/negative-erlebnisse/</guid>
		<description><![CDATA[Ein kurzes Update bzgl. meiner Installation von Oracle VM Server. Der VM Server ist stupide einfach zu installieren. Alles, was danach folgt, ist eine Qual, wenn man einmal den Komfort von apt-get, debian und co. kennen gelernt hat. Ich habe gerade das Gefühl, ich werde wahnsinnig dabei. Es ist unter Oracle Enterprise Linux ohne weiteres [...]]]></description>
			<content:encoded><![CDATA[<p>Ein kurzes Update bzgl. meiner <a href="http://info.michael-simons.eu/2007/11/28/positive-erlebnisse/">Installation von Oracle VM Server</a>.</p>
<p>Der VM Server ist stupide einfach zu installieren. Alles, was danach folgt, ist eine Qual, wenn man einmal den Komfort von apt-get, debian und co. kennen gelernt hat. Ich habe gerade das Gefühl, ich werde wahnsinnig dabei.</p>
<p>Es ist unter Oracle Enterprise Linux ohne weiteres nicht möglich, nachträglich noch weitere Pakete aus den Installations CDs zu installieren. Dazu braucht man einen Account im Oracle Unbreakable Linux Netzwerk. Ich will die Schuld nicht alleine Oracle anlasten, bei RedHat läuft es wohl genauso. </p>
<p>Worauf ich hinaus will: Der Erfahrungsbericht folgt, allerdings später, als geplant.</p>
<p class="akst_link"><a href="http://info.michael-simons.eu/?p=133&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_133" class="akst_share_link " rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://info.michael-simons.eu/2007/12/11/negative-erlebnisse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Positive Erlebnisse</title>
		<link>http://info.michael-simons.eu/2007/11/28/positive-erlebnisse/</link>
		<comments>http://info.michael-simons.eu/2007/11/28/positive-erlebnisse/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 16:10:44 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[German posts]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Dell]]></category>
		<category><![CDATA[Oracle VM]]></category>

		<guid isPermaLink="false">http://info.michael-simons.eu/2007/11/28/positive-erlebnisse/</guid>
		<description><![CDATA[Vor einigen Wochen habe ich in der Firma einen neuen Arbeitsplatz bekommen, frühzeitiges Weihnachten quasi. Eine Dell Workstation, Core2Duo 2.66 Ghz, 2GB Ram inkl. einem 16:10 22&#8243; Dell Monitor, alles in allem, eine richtig gutes Gerät. Nicht nur hat Dell erfreulich schnell geliefert, es war sogar Versandkosten frei. Aber das beste: Man kennt das ja [...]]]></description>
			<content:encoded><![CDATA[<p>Vor einigen Wochen habe ich in der Firma einen neuen Arbeitsplatz bekommen, frühzeitiges Weihnachten quasi. Eine Dell Workstation, Core2Duo 2.66 Ghz, 2GB Ram inkl. einem 16:10 22&#8243; Dell Monitor, alles in allem, eine richtig gutes Gerät.</p>
<p>Nicht nur hat Dell erfreulich schnell geliefert, es war sogar Versandkosten frei. Aber das beste: Man kennt das ja mit Windowskisten: Man baut sie auf, nimmt sie in Betrieb und hat erst mal damit zu tun, die Ausrufungszeichen in der Systemsteuerung zu beseitigen, sprich Treiber nachzuinstallieren sowie unnütze Shareware / Demoversionen von irgendwelchem Rotz zu deinstallieren. Nicht so auf dem <i>Vostro 200</i>. Alle Komponenten waren unter XP sauber installiert und ich musste keine einzige, dämliche Demo entfernen (ok, Virenscanner und ein paar andere, für mich überflüssige Sachen habe ich entfernt, aber Dell weiß ja nicht, das wir einen Firmenweiten Virenscanner haben).</p>
<p>Meine diesbezüglichen Erfahrungen mit Geräten vom &#8220;Schrauber um die Ecke&#8221; oder aus großen Elektronikketten waren bisher genau Gegenteilig, jedesmal war annähernd soviel Handarbeit gefragt, dass ich es direkt hätte selber machen können. Selbst mein altes Thinkpad (IBM R52) war nicht so ordentlich vorkonfiguriert.</p>
<p>Nicht, das meine Java Programme bis jetzt so schrecklich langsam waren, Eclipse war es dafür &#8211; bei sehr vielen Projekten &#8211; um so mehr. Das hat natürlich jetzt ein Ende.</p>
<p>Spannend wird die weitere Entwicklung: Evaluierung von <a href="http://www.oracle.com/virtualization">Oracle VM</a>, einer Virtualisierungslösung auf XENSource Basis. Der Manager der Oracle VM wird zur Zeit ebenfalls nur für Linux ausgeliefert (ok, nur für Oracle Unbreakable Linux), aber das ist ein Schritt weit in die Richtung, auch Linux auf den Arbeitsplatz zu bringen. Und so läuft auf meiner Workstation seit einigen Tagen OEL5 in einer VMWare und auch dort muss ich sagen: Rasant schnell.</p>
<p>Somit finde ich jetzt auch hoffentlich einen Übergang: In den nächsten Wochen werde ich von meinen Erfahrungen mit Oracle VM berichten, es gibt also mal wieder etwas neues neben J2EE und Rails auf diesem Blog.</p>
<p class="akst_link"><a href="http://info.michael-simons.eu/?p=131&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_131" class="akst_share_link " rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://info.michael-simons.eu/2007/11/28/positive-erlebnisse/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Apple AFP SharePoints</title>
		<link>http://info.michael-simons.eu/2006/12/17/apple-afp-sharepoints/</link>
		<comments>http://info.michael-simons.eu/2006/12/17/apple-afp-sharepoints/#comments</comments>
		<pubDate>Sun, 17 Dec 2006 19:27:46 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[German posts]]></category>
		<category><![CDATA[Daily Fratze]]></category>
		<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://info.michael-simons.eu/2006/12/17/apple-afp-sharepoints/</guid>
		<description><![CDATA[Im Moment baue ich einen Mac Mini Core Solo zum Media und Webserver aus. Für diesen Zweck hat das Gerät eine nette, externe Platte mit hinreichend Platz bekommen. Hin- und herüberlegt: Wenn ich Samba nutze, müssen die Kennwörter des entsprechenden Accounts &#8220;unsicher&#8221; gespeichert werden. Das klingt nicht gut. Also habe ich mich für AFP entschieden. [...]]]></description>
			<content:encoded><![CDATA[<p>Im Moment baue ich einen Mac Mini Core Solo zum Media und Webserver aus. Für diesen Zweck hat das Gerät eine nette, externe Platte mit hinreichend Platz bekommen.</p>
<p>Hin- und herüberlegt: Wenn ich Samba nutze, müssen die Kennwörter des entsprechenden Accounts &#8220;unsicher&#8221; gespeichert werden. Das klingt nicht gut. Also habe ich mich für <a href="http://de.wikipedia.org/wiki/Apple_Filing_Protocol" rel="external">AFP</a> entschieden.</p>
<p>Und da ging der Palaver los: Angemeldet, hmm, wo ist das Laufwerk? Stimmt, es werden immer nur die Homeverzeichnisse geshared. So eine Scheisse. Normalerweise findet man ja überall die Konfigurationsdatei, nicht so in diesem Fall. Und wir mir Tante Google gesagt hat, bin ich nicht der einzige der sie sucht. Hab sie auch nicht gefunden. Wenn das jemand weiß, wo das ist&#8230; Bitte eine kurze Email schreiben.</p>
<p>Jedenfalls, geholfen habe ich mir mit <a href="http://www.hornware.com/sharepoints/">Sharepoints</a> von HornWare. Entweder als Standalone oder als Pref Pane nutzbar und voila, externe Laufwerke lassen sich als AFP Sharepoint bereitstellen. Das Ergebnis:</p>
<p><img id="image49" src="http://info.michael-simons.eu/wp-content/media.jpg" alt="afp" /></p>
<p>Fantastisch!</p>
<p>Alle sagen immer, der Mac Mini Core Solo wäre langsam, aber das muß man mal in Relation zu einem Mac Mini G4 oder einem PC in der Größe sehen. Das Dingen rockt.</p>
<p>Das fertige Ergebnis:</p>
<p><img id="image50" src="http://info.michael-simons.eu/wp-content/servermini.jpg" alt="Apple Mac Mini Core Solo Server" /></p>
<p>Auf dem Rechner läuft übrigens auch <a href="http://dailyfratze.de">Daily Fratze</a>.</p>
<p>Blöde Kleinigkeit (es sind immer!!! die Kleinigkeiten): Warum hat Iomega nicht die Farbe gescheit hinbekommen? Die Platte (Iomega Minimax) ist sonst absolut super. Man kann sie per FireWire und USB gleichzeitig anschliessen und per DIP Schalter einen Anschluss auswählen. Das hat den Vorteil: Man kann beide Hubs (FireWire und USB nutzen). Das geht bei vielen billigen Platten nicht.</p>
<p>Das schöne an AFP ist, dass es ein sogenanntes transparentes Protokol ist. Das heißt, nutzende Programme bekommen nichts davon mit, dass ihre Dateien janz woanders sind. So kann man z.B. in iTunes beim Start die ALT Taste drücken und eine andere Bibliothek auswählen. Ganz transparent habe ich dann auf jedem Rechner die gleichen Daten. Der Vorteil gegenüber dem Musicsharing via iTunes: Ganz einfach, die Playcounts erhöhen sich, ich kann die Ratings ändern und sogar übers Netz CDs rippen.</p>
<p>Praktischerweise funktionieren so auch alle Skripte fürs Backup, genau wie bisher.</p>
<p class="akst_link"><a href="http://info.michael-simons.eu/?p=48&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_48" class="akst_share_link " rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://info.michael-simons.eu/2006/12/17/apple-afp-sharepoints/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reverse PathIterator</title>
		<link>http://info.michael-simons.eu/2006/04/24/reverse-pathiterator/</link>
		<comments>http://info.michael-simons.eu/2006/04/24/reverse-pathiterator/#comments</comments>
		<pubDate>Mon, 24 Apr 2006 11:36:25 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[German posts]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Code Snippets]]></category>

		<guid isPermaLink="false">http://www.msimons.info/?p=10</guid>
		<description><![CDATA[Ein PathIterator ist in Java eine elegante Möglichkeit, alle Knoten und Kanten einer Form zu iterieren. Was dem eingebauten PathIterator leider fehlt, ist die Möglichkeit, die Form umgekehrt zu iterieren. Nach eingem Suchen bin ich auf die tolle Klasse ReversePathIterator von caff.de gestoßen: Reverse PathIterator, mit Quelltext und allem. Sehr praktisch, zumal er sich vollkommen [...]]]></description>
			<content:encoded><![CDATA[<p>Ein PathIterator ist in Java eine elegante Möglichkeit, alle Knoten und Kanten einer Form zu iterieren. Was dem eingebauten PathIterator leider fehlt, ist die Möglichkeit, die Form umgekehrt zu iterieren.</p>
<p>Nach eingem Suchen bin ich auf die tolle Klasse ReversePathIterator von <a href="http://www.caff.de">caff.de</a> gestoßen: <a href="http://www.caff.de/rpi/index.html">Reverse PathIterator</a>, mit Quelltext und allem. Sehr praktisch, zumal er sich vollkommen transparent statt des Originals nutzen lässt.</p>
<p class="akst_link"><a href="http://info.michael-simons.eu/?p=10&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_10" class="akst_share_link " rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://info.michael-simons.eu/2006/04/24/reverse-pathiterator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Haufenweise: Bulk Insert, Update, Delete</title>
		<link>http://info.michael-simons.eu/2006/04/24/haufenweise-bulk-insert-update-delete/</link>
		<comments>http://info.michael-simons.eu/2006/04/24/haufenweise-bulk-insert-update-delete/#comments</comments>
		<pubDate>Mon, 24 Apr 2006 07:01:52 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[German posts]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[Tipps]]></category>

		<guid isPermaLink="false">http://www.msimons.info/?p=8</guid>
		<description><![CDATA[Bulk Methoden in PL/SQL sind praktisch und schnell. Auch recht einfach anzuwenden. Allerdings ist mir in Oracle 9.2.0.6 ein sehr komisches Verhalten aufgefallen: DECLARE TYPE id_table IS TABLE OF NUMBER; objekt_ids id_table; BEGIN SELECT id BULK COLLECT INTO objekt_ids FROM irgendwas WHERE irgendwasanderes = 'wasweißich'; &#160; FORALL idx IN objekt_ids.first .. objekt_ids.last DELETE FROM table1 [...]]]></description>
			<content:encoded><![CDATA[<p>Bulk Methoden in PL/SQL sind praktisch und schnell. Auch recht einfach anzuwenden. Allerdings ist mir in Oracle 9.2.0.6 ein sehr komisches Verhalten aufgefallen:</p>

<div class="wp_syntax"><div class="code"><pre class="oracle8" style="font-family:monospace;"><span style="color: #993333; font-weight: bold; text-transform: uppercase;">DECLARE</span>
  <span style="color: #993333; font-weight: bold; text-transform: uppercase;">TYPE</span> id_table <span style="color: #993333; font-weight: bold; text-transform: uppercase;">IS</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">TABLE</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">OF</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">NUMBER</span>;
  objekt_ids id_table;
<span style="color: #993333; font-weight: bold; text-transform: uppercase;">BEGIN</span>
    <span style="color: #993333; font-weight: bold; text-transform: uppercase;">SELECT</span> id
    <span style="color: #993333; font-weight: bold; text-transform: uppercase;">BULK</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">COLLECT</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">INTO</span> objekt_ids
    <span style="color: #993333; font-weight: bold; text-transform: uppercase;">FROM</span>   irgendwas
    <span style="color: #993333; font-weight: bold; text-transform: uppercase;">WHERE</span>  irgendwasanderes <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'wasweißich'</span>;
&nbsp;
    <span style="color: #993333; font-weight: bold; text-transform: uppercase;">FORALL</span> idx <span style="color: #993333; font-weight: bold; text-transform: uppercase;">IN</span> objekt_ids.first .. objekt_ids.last
      <span style="color: #993333; font-weight: bold; text-transform: uppercase;">DELETE</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">FROM</span> table1 <span style="color: #993333; font-weight: bold; text-transform: uppercase;">WHERE</span> objekt_id <span style="color: #66cc66;">=</span> objekt_ids<span style="color: #66cc66;">&#40;</span>idx<span style="color: #66cc66;">&#41;</span>;
&nbsp;
    <span style="color: #993333; font-weight: bold; text-transform: uppercase;">FORALL</span> idx <span style="color: #993333; font-weight: bold; text-transform: uppercase;">IN</span> objekt_ids.first .. objekt_ids.last
      <span style="color: #993333; font-weight: bold; text-transform: uppercase;">DELETE</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">FROM</span> table2 <span style="color: #993333; font-weight: bold; text-transform: uppercase;">WHERE</span> objekt_id <span style="color: #66cc66;">=</span> objekt_ids<span style="color: #66cc66;">&#40;</span>idx<span style="color: #66cc66;">&#41;</span>;
&nbsp;
    <span style="color: #808080; font-style: italic;">-- ...</span>
<span style="color: #993333; font-weight: bold; text-transform: uppercase;">END</span>;</pre></div></div>

<p>Das Beispiel ist jetzt natürlich erstmal sinnlos, ist aber auch egal. Der Haken an der Sache: Das <em>BULK COLLECT INTO</em> Statement wirft keine <em>NO_DATA_FOUND</em> Exception, wenn die Ergebnismenge leer ist (im Gegensatz zu einem normalen SELECT INTO). Nichts desto trotz ist <em>object_ids</em> danach eine korrekt initialisierte Zusammenstellung.</p>
<p>War die Ergebnismenge leer, gibt es trotzdem eine Exception. Und zwar eine <em>INVALID_NUMBER</em>. Aus irgendeinem Grund laufen die forall Schleifen, auch wenn die virtuelle Tabelle leer ist.</p>
<p>Deshalb gilt für BULK Methoden: Abfragen, ob die Indextabellen leer sind!</p>

<div class="wp_syntax"><div class="code"><pre class="oracle8" style="font-family:monospace;"><span style="color: #993333; font-weight: bold; text-transform: uppercase;">DECLARE</span>
  <span style="color: #993333; font-weight: bold; text-transform: uppercase;">TYPE</span> id_table <span style="color: #993333; font-weight: bold; text-transform: uppercase;">IS</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">TABLE</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">OF</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">NUMBER</span>;
  objekt_ids id_table;
<span style="color: #993333; font-weight: bold; text-transform: uppercase;">BEGIN</span>
  <span style="color: #993333; font-weight: bold; text-transform: uppercase;">IF</span><span style="color: #66cc66;">&#40;</span>objekt_ids.<span style="color: #993333; font-weight: bold; text-transform: uppercase;">COUNT</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #993333; font-weight: bold; text-transform: uppercase;">THEN</span>
    <span style="color: #993333; font-weight: bold; text-transform: uppercase;">SELECT</span> id
    <span style="color: #993333; font-weight: bold; text-transform: uppercase;">BULK</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">COLLECT</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">INTO</span> objekt_ids
    <span style="color: #993333; font-weight: bold; text-transform: uppercase;">FROM</span>   irgendwas
    <span style="color: #993333; font-weight: bold; text-transform: uppercase;">WHERE</span>  irgendwasanderes <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'wasweißich'</span>;
&nbsp;
    <span style="color: #993333; font-weight: bold; text-transform: uppercase;">FORALL</span> idx <span style="color: #993333; font-weight: bold; text-transform: uppercase;">IN</span> objekt_ids.first .. objekt_ids.last
      <span style="color: #993333; font-weight: bold; text-transform: uppercase;">DELETE</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">FROM</span> table1 <span style="color: #993333; font-weight: bold; text-transform: uppercase;">WHERE</span> objekt_id <span style="color: #66cc66;">=</span> objekt_ids<span style="color: #66cc66;">&#40;</span>idx<span style="color: #66cc66;">&#41;</span>;
&nbsp;
    <span style="color: #993333; font-weight: bold; text-transform: uppercase;">FORALL</span> idx <span style="color: #993333; font-weight: bold; text-transform: uppercase;">IN</span> objekt_ids.first .. objekt_ids.last
      <span style="color: #993333; font-weight: bold; text-transform: uppercase;">DELETE</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">FROM</span> table2 <span style="color: #993333; font-weight: bold; text-transform: uppercase;">WHERE</span> objekt_id <span style="color: #66cc66;">=</span> objekt_ids<span style="color: #66cc66;">&#40;</span>idx<span style="color: #66cc66;">&#41;</span>;
&nbsp;
    <span style="color: #808080; font-style: italic;">-- ...</span>
  <span style="color: #993333; font-weight: bold; text-transform: uppercase;">END</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">IF</span>;
<span style="color: #993333; font-weight: bold; text-transform: uppercase;">END</span>;</pre></div></div>

<p class="akst_link"><a href="http://info.michael-simons.eu/?p=8&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_8" class="akst_share_link " rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://info.michael-simons.eu/2006/04/24/haufenweise-bulk-insert-update-delete/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.454 seconds -->

