<?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>PHPUGFFM &#187; Home</title>
	<atom:link href="http://phpugffm.de/index.php/category/meta/home/feed" rel="self" type="application/rss+xml" />
	<link>http://phpugffm.de</link>
	<description>one programming language :: one community</description>
	<lastBuildDate>Fri, 18 Dec 2009 16:54:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Monty ruft auf MySQL zu retten.</title>
		<link>http://phpugffm.de/index.php/monty-ruft-auf-mysql-zu-retten,2009-12,420.html</link>
		<comments>http://phpugffm.de/index.php/monty-ruft-auf-mysql-zu-retten,2009-12,420.html#comments</comments>
		<pubDate>Fri, 18 Dec 2009 16:53:41 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Home]]></category>

		<guid isPermaLink="false">http://phpugffm.de/?p=420</guid>
		<description><![CDATA[Die gute alte MySQL Datenbank. Welcher PHP-Entwickler kennt sie nicht? Und viele haben sich nach dem Strecken von Oracle nach Sun gefragt, was passiert mit MySQL nachdem diese erst knapp ein Jahr vorher von Sun gekauft wurde. Nun hat sich Michael Widenius aka Monty, Mit-Vater von MySQL in seinem Blog am 12. Dezember sehr besorgt [...]]]></description>
			<content:encoded><![CDATA[<p>Die gute alte MySQL Datenbank. Welcher PHP-Entwickler kennt sie nicht? Und viele haben sich nach dem Strecken von Oracle nach Sun gefragt, was passiert mit MySQL nachdem diese erst knapp ein Jahr vorher von Sun gekauft wurde. Nun hat sich Michael Widenius aka Monty, Mit-Vater von MySQL in seinem Blog am 12. Dezember sehr besorgt geäussert: <a href="http://monty-says.blogspot.com/2009/12/help-saving-mysql.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://monty-says.blogspot.com/2009/12/help-saving-mysql.html');">Jeder soll mithelfen MySQL zu retten</a>.</p>
<p>In seinem Beitrag spricht er nicht nur generelle Probleme an, die entstehen könnten, sondern &#8211; und das ist sehr besorgniserregend &#8211; er führt aus, wie Oracle selbst mit InnoDB verfahren ist und stellt die wesentlichen Interessenskonflikte heraus, warum Oracle davon profitiert, MySQL aufzukaufen. Damit noch nicht genug, Oracle hat wohl seinerseits bereits seine Kunden gebeten, sich bei der Europäischen Union dafür einzusetzen, dass der Merger glatt über die Bühne geht.</p>
<p>Wahrlich keine Delphin-blauen Ausblicke, da wird es Zeit für eine eigene Eingabe bei der Europäischen Union.</p>
]]></content:encoded>
			<wfw:commentRss>http://phpugffm.de/index.php/monty-ruft-auf-mysql-zu-retten,2009-12,420.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FSFE will launch the Fellowship grants project</title>
		<link>http://phpugffm.de/index.php/fsfe-will-launch-the-fellowship-grants-project,2009-11,411.html</link>
		<comments>http://phpugffm.de/index.php/fsfe-will-launch-the-fellowship-grants-project,2009-11,411.html#comments</comments>
		<pubDate>Tue, 10 Nov 2009 09:57:39 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Home]]></category>

		<guid isPermaLink="false">http://phpugffm.de/?p=411</guid>
		<description><![CDATA[Thanks to FSFE&#8217;s donors and tarent GmbH in particular, FSFE will be able to award three Fellowship grants (DE: Stipendium) each month for one year. These grants will cover the Fellowship contribution for people who have done exceptional things to bring Free Software forward, and will be awarded after evaluation of the individual applications. Candidacies [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to <a href="http://www.fsfe.org/donate/thankgnus-2009.en.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.fsfe.org/donate/thankgnus-2009.en.html');">FSFE&#8217;s donors</a> and <a href="http://www.tarent.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.tarent.com/');">tarent GmbH</a> in particular, FSFE will be able to award three Fellowship grants (DE: Stipendium) each month for one year. These grants will cover the Fellowship contribution for people who have done exceptional things to bring Free Software forward, and will be awarded after evaluation of the individual applications. Candidacies that can be submitted to fellowship@fsfeurope.org.  In December, FSFE will announce the first three people who will receive the grants.</p>
<ul>
<li>Deutsch: <a href="http://fellowship.fsfe.org/grant.de.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://fellowship.fsfe.org/grant.de.html');">FSFE Fellowship Stipendium [http://fellowship.fsfe.org/grant.de.html]</a></li>
<li>English: <a href="http://fellowship.fsfe.org/grant.en.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://fellowship.fsfe.org/grant.en.html');">FSFE Fellowship Grant [http://fellowship.fsfe.org/grant.en.html]</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://phpugffm.de/index.php/fsfe-will-launch-the-fellowship-grants-project,2009-11,411.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>International PHP Conference 2009</title>
		<link>http://phpugffm.de/index.php/international-php-conference-2009,2009-10,406.html</link>
		<comments>http://phpugffm.de/index.php/international-php-conference-2009,2009-10,406.html#comments</comments>
		<pubDate>Tue, 27 Oct 2009 18:06:04 +0000</pubDate>
		<dc:creator>dc7590</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[Veranstaltungen]]></category>

		<guid isPermaLink="false">http://phpugffm.de/?p=406</guid>
		<description><![CDATA[ 

Die International PHP Conference bringt Developer, Webdesigner und IT-Professionals zusammen und zeigt, wie PHP als führende Webtechnologie auch in businesskritischen Applikationen eingesetzt werden kann.

Die Teilnehmer erhalten hochwertiges Wissen aus erster Hand, von führenden Experten in zahlreichen Sessions und Hands-on-Workshops verständlich aufbereitet.



Sichern Sie sich jetzt Ihr GRATIS-Netbook! Bei Buchung des Super Conference Pass erhalten Sie [...]]]></description>
			<content:encoded><![CDATA[<p><span style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"> </span></p>
<div style="margin: 0cm 0cm 0pt; text-align: left;">
<blockquote><p><span><span style="font-size: small;"><span style="font-size: 12px;">Die International PHP Conference bringt Developer, Webdesigner und IT-Professionals zusammen und zeigt, wie PHP als führende Webtechnologie auch in businesskritischen Applikationen eingesetzt werden kann.<br />
<span id="more-406"></span></span></span></span></p></blockquote>
<blockquote><p><span><span style="font-size: small;"><span style="font-size: 12px;">Die Teilnehmer erhalten hochwertiges Wissen aus erster Hand, von führenden Experten in zahlreichen Sessions und Hands-on-Workshops verständlich aufbereitet.</span></span></span></p></blockquote>
</div>
<div style="margin: 0cm 0cm 0pt;">
<div style="text-align: left;">
<blockquote><p><span style="font-size: 12px;">Sichern Sie sich jetzt Ihr GRATIS-Netbook! Bei Buchung des Super Conference Pass erhalten Sie ein exklusives Netbook inklusive aller bisher veröffentlichten PHP Magazine in digitaler Form mit Suchfunktion!</span></p></blockquote>
</div>
<div style="text-align: left;">
<blockquote><p><a style="color: #2a5db0;" href="http://www.phpconference.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.phpconference.com/');" target="_blank"><span style="color: #000000;"><span style="font-size: small;"><span style="font-size: 12px;">www.phpconference.com</span></span></span></a><img class="alignnone size-full wp-image-405" title="community-logo" src="http://phpugffm.de/wp-content/uploads/2009/10/community-logo.jpg" alt="community-logo" width="516" height="239" /></p></blockquote>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://phpugffm.de/index.php/international-php-conference-2009,2009-10,406.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gtugfra, pubsubhubbub und dergleichen</title>
		<link>http://phpugffm.de/index.php/gtugfra-pubsubhubbub-und-dergleichen,2009-08,403.html</link>
		<comments>http://phpugffm.de/index.php/gtugfra-pubsubhubbub-und-dergleichen,2009-08,403.html#comments</comments>
		<pubDate>Fri, 14 Aug 2009 11:00:43 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Home]]></category>

		<guid isPermaLink="false">http://phpugffm.de/index.php/gtugfra-pubsubhubbub-und-dergleichen,2009-08,403.html</guid>
		<description><![CDATA[Es ist soweit, die erste Google Technology User Group in Frankfurt trifft sich am 3. September in der Brotfabrik. Es geht natürlich um die Anwendung von Technology made by Google. Da hat sich ja so einiges angesammelt, so Dinge wie zB. PubSubHubbub um etwas mit einem besonders kryptischen Namen herauszugreifen.
]]></description>
			<content:encoded><![CDATA[<p>Es ist soweit, die erste <a href="http://sites.google.com/site/gtugfra/home" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://sites.google.com/site/gtugfra/home');">Google Technology User Group in Frankfurt</a> trifft sich am 3. September <a href="http://www.brotfabrik.info/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.brotfabrik.info/');">in der Brotfabrik</a>. Es geht natürlich um die Anwendung von <em>Technology made by Google</em>. Da hat sich ja so einiges angesammelt, so Dinge wie zB. <a href="http://code.google.com/p/pubsubhubbub/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://code.google.com/p/pubsubhubbub/');">PubSubHubbub</a> um etwas mit einem besonders kryptischen Namen herauszugreifen.</p>
]]></content:encoded>
			<wfw:commentRss>http://phpugffm.de/index.php/gtugfra-pubsubhubbub-und-dergleichen,2009-08,403.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebBrunch und Webmontag in Frankfurt (09.Aug  &amp; 10. Aug)</title>
		<link>http://phpugffm.de/index.php/webbrunch-und-webmontag-in-frankfurt-09aug-10-aug,2009-08,402.html</link>
		<comments>http://phpugffm.de/index.php/webbrunch-und-webmontag-in-frankfurt-09aug-10-aug,2009-08,402.html#comments</comments>
		<pubDate>Sat, 08 Aug 2009 08:53:20 +0000</pubDate>
		<dc:creator>dc7590</dc:creator>
				<category><![CDATA[Home]]></category>

		<guid isPermaLink="false">http://phpugffm.de/index.php/webbrunch-und-webmontag-in-frankfurt-09aug-10-aug,2009-08,402.html</guid>
		<description><![CDATA[Jens schreibt über der kommende Webmontag am 10 August in Frankfurt und WebBrunch am 9te August mit Chris Heilmann.  Looks like fun!
]]></description>
			<content:encoded><![CDATA[<p><a href="http://grochtdreis.de/weblog/2009/08/01/webmontag-und-webbrunch-in-frankfurt/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://grochtdreis.de/weblog/2009/08/01/webmontag-und-webbrunch-in-frankfurt/');" target="_blank">Jens schreibt</a> über der kommende <a href="http://www.webmontag.de/location/frankfurt//index" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.webmontag.de/location/frankfurt//index');" target="_blank">Webmontag</a> am 10 August in Frankfurt und <a href="http://devdusk.mixxt.de/networks/events/show_event.7871" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://devdusk.mixxt.de/networks/events/show_event.7871');" target="_blank">WebBrunch</a> am 9te August mit <a href="http://icant.co.uk/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://icant.co.uk/');" target="_blank">Chris Heilmann</a>.  Looks like fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://phpugffm.de/index.php/webbrunch-und-webmontag-in-frankfurt-09aug-10-aug,2009-08,402.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>365 Tage Bloggen: PHP hates me einfach immer noch!</title>
		<link>http://phpugffm.de/index.php/365-tage-bloggen-php-hates-me-einfach-immer-noch,2009-08,401.html</link>
		<comments>http://phpugffm.de/index.php/365-tage-bloggen-php-hates-me-einfach-immer-noch,2009-08,401.html#comments</comments>
		<pubDate>Mon, 03 Aug 2009 08:04:37 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projekte]]></category>

		<guid isPermaLink="false">http://phpugffm.de/index.php/365-tage-bloggen-php-hates-me-einfach-immer-noch,2009-08,401.html</guid>
		<description><![CDATA[Auf Schlag den heutigen Tag wird der beliebte deutschsprachige Blog PHP hates me (twitter @phphatesme) ein Jahr alt. Mit einer Sammlung von nun 320 Artikeln und etwa 2000 Kommentaren zur Entwicklung von und mit PHP, Projektmanagement und Softwaretechnik weist die Webseite mitlerweile eine beachtliche Menge an Inhalten auf. Die Interview Kolumne von Nils Langner wird [...]]]></description>
			<content:encoded><![CDATA[<p>Auf Schlag den heutigen Tag wird der beliebte deutschsprachige Blog <em><a href="http://www.phphatesme.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.phphatesme.com/');">PHP hates me</a></em> (twitter <em>@phphatesme</em>) ein Jahr alt. Mit einer Sammlung von nun 320 Artikeln und etwa 2000 Kommentaren zur Entwicklung von und mit PHP, Projektmanagement und Softwaretechnik weist die Webseite mitlerweile eine beachtliche Menge an Inhalten auf. Die <a href="http://www.phphatesme.com/archives/category/interviews/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.phphatesme.com/archives/category/interviews/');">Interview Kolumne von Nils Langner</a> wird mitlerweile nicht nur im Blog sondern auch in Papierform im <a href="http://it-republik.de/php/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://it-republik.de/php/');" title="Homepage des PHPmagazin, vormals auf http://www.phpmagazin.de/ zu finden.">PHPMagazin</a> veröffentlicht.</p>
<p>Zur Feier das Tages startet um 10 Uhr ein Gewinnspiel. Also jetzt. </p>
]]></content:encoded>
			<wfw:commentRss>http://phpugffm.de/index.php/365-tage-bloggen-php-hates-me-einfach-immer-noch,2009-08,401.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPUG Rhein Hessen</title>
		<link>http://phpugffm.de/index.php/phpug-rhein-hessen,2009-07,400.html</link>
		<comments>http://phpugffm.de/index.php/phpug-rhein-hessen,2009-07,400.html#comments</comments>
		<pubDate>Mon, 13 Jul 2009 22:41:18 +0000</pubDate>
		<dc:creator>dc7590</dc:creator>
				<category><![CDATA[Home]]></category>

		<guid isPermaLink="false">http://phpugffm.de/index.php/phpug-rhein-hessen,2009-07,400.html</guid>
		<description><![CDATA[Recently somone helped me think that it would be good to have a R-HUG.I doubt if it will ever happen  But you never know!All we need is a date, a location, a wlan and a beamer.Surely it can&#8217;t be that hard can it?
]]></description>
			<content:encoded><![CDATA[<p>Recently somone helped me think that it would be good to have a R-HUG.I doubt if it will ever happen <img src='http://phpugffm.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> But you never know!All we need is a date, a location, a wlan and a beamer.Surely it can&#8217;t be that hard can it?</p>
]]></content:encoded>
			<wfw:commentRss>http://phpugffm.de/index.php/phpug-rhein-hessen,2009-07,400.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nachtrag zu Onlinebanking mit PHP</title>
		<link>http://phpugffm.de/index.php/nachtrag-zu-onlinebanking-mit-php,2009-07,399.html</link>
		<comments>http://phpugffm.de/index.php/nachtrag-zu-onlinebanking-mit-php,2009-07,399.html#comments</comments>
		<pubDate>Mon, 06 Jul 2009 13:08:12 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[Material]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[hibiscus]]></category>
		<category><![CDATA[onlinebanking]]></category>

		<guid isPermaLink="false">http://phpugffm.de/index.php/nachtrag-zu-onlinebanking-mit-php,2009-07,399.html</guid>
		<description><![CDATA[Vor über zwei Jahren hatte ich mit dem Beitrag Onlinebanking mit PHP der über einen Vortrag bei der Usergroup berichtet auch Beispielquellcode mit veröffentlicht.
In diesem Code wird auf die Onlinebanking Software Hibiscus mittels der dortigen XML-RPC Schnittstelle zugegriffen. Dafür wird die Bibliothek XML-RPC for PHP verwendet. Natürlich ist der Quellcode mitlerweile veraltet. Auch ist er [...]]]></description>
			<content:encoded><![CDATA[<p>Vor über zwei Jahren hatte ich mit dem Beitrag <a href="http://phpugffm.de/index.php/onlinebanking-mit-php,2007-03,143.html" >Onlinebanking mit PHP</a> der über einen Vortrag bei der Usergroup berichtet auch Beispielquellcode mit veröffentlicht.</p>
<p>In diesem Code wird auf die <a href="http://www.willuhn.de/products/hibiscus/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.willuhn.de/products/hibiscus/');">Onlinebanking Software Hibiscus</a> mittels der dortigen XML-RPC Schnittstelle zugegriffen. Dafür wird die <a href="http://phpxmlrpc.sourceforge.net/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://phpxmlrpc.sourceforge.net/');">Bibliothek XML-RPC for PHP</a> verwendet. Natürlich ist der Quellcode mitlerweile veraltet. Auch ist er nicht mit der aktuellen Hibiscus Version getestet. Und die Bibliothek ist sicherlich auch weiter gepflegt worden. Und so kann es passieren, dass beim Beispielcode Fehler beim Anlegen von Überweisungen auftreten. Doch wie damit umgehen?<span id="more-399"></span></p>
<p>Dies hat wohl dazu geführt das viele Leute die hier den Beitrag gelesen haben und sich den Quellcode gezogen haben sich nicht an mich direkt als Autor sondern an den Autor von Hibiscus gewandt. Auch in den Kommentaren ist nicht viel zu finden. So habe ich erst seit einigen Tagen die Gelegenheit mich mit dem Problem zu beschäftigen. </p>
<p>Leider muss ich anfügen. Nun kann wohl Hibiscus selber am wenigsten was dafür, wenn die in PHP eingesetzte XML-RPC Bibliothek einen Fehler hat. Sie kann wohl offensichtlich nicht mit Namespaces umgehen, die RPC-Response enthält aber solche. Das zeigt die Antwort auch an, es handelt sich um <a href="http://ws.apache.org/xmlrpc/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://ws.apache.org/xmlrpc/');">die XML-RPC implementierung von Apache</a>. Es kann also zu einem Fehler kommen. Und dafür ist der Autor von Hibiscus nicht der naheliegenste Ansprechpartner. Wenn man Beispielcode nimmt, dann sollte man diesen als praktische Gelegenheit begreifen, ihn zu lesen und zu verstehen. Dazu gehört auch der Umgang mit Fehlern darin. Eigentlich sogar ein willkommener Anlass solch ein Fehler, stellt er doch quasi eine Prüfung dar, ob man verstanden hat wie es funktioniert, wenn man den Fehler löst. Ein einfaches <em>Copy and Paste</em> gibt einem diese Sicherheit nicht, sondern lässt einen in dem trügerischen Gefühl, ein schnelles Ergebnis erzielt zu haben. Dabei entzieht sich dieses Ergebnis der vollen eigenen Kontrolle.</p>
<p>Aber was tun? Da es sich bei allen Komponenten um quelloffene, Freie Software handelt drängen sich zwei Lösungen auf: Eine konkrete, der Fix oder Workaround, und eine strategischere, das Feature. Der Produzent sollte natürlich auch eingebunden sein, allerdings rate ich sehr dazu, Entwickler in freien Projekten nicht mit unausgegorenen Emails zu belästigen. Das stellt man am besten dadurch sicher, erstmal selber zu schauen, was der Auslöser des Fehlers ist. Vielleicht liegt der ja auch bei einem selber. Und was auch nervig ist: Wenn ein Benutzer einfach mal eine Mail an alle Adressen schickt die er hier oder da findet und meint: das könnte schon passen, was kümmerts mich, wenn ich andere für mich denken lassen kann.</p>
<h2>Eine Entwicklerin, die auf einen Fehler stösst, fängt automatisch an, ihn zu analysieren.</h2>
<p>Eine Entwicklerin, die auf einen Fehler stösst, fängt automatisch an, ihn zu analysieren. Ist die Fehlerursache bekannt, so kann sie gefixt werden. Dazu muss man meist sogar nur wenig Ahnung haben, was ein Programm da gerade macht. Ein komplettes Verständnis aller Komponenten und Hintergründe ist sicherlich hilfreich aber nicht zwingend. Heraus kommt dann ein Workaround evtl. wie dieser hier:</p>
<div class="dean_ch" style="white-space: nowrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> checkResponse<span class="br0">&#40;</span><span class="re0">$response</span>=<span class="kw2">null</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!<span class="re0">$response</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <a href="http://www.php.net/print" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.php.net/print');"><span class="kw3">print</span></a><span class="br0">&#40;</span><span class="st0">&quot;No response given<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <a href="http://www.php.net/exit" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.php.net/exit');"><span class="kw3">exit</span></a><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$response</span>-&gt;<span class="me1">faultCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> <span class="re0">$response</span>-&gt;<span class="me1">value</span><span class="br0">&#40;</span><span class="br0">&#41;</span> == <span class="nu0">0</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re0">$fstr</span>=<span class="re0">$response</span>-&gt;<span class="me1">faultString</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> <a href="http://www.php.net/strstr" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.php.net/strstr');"><span class="kw3">strstr</span></a><span class="br0">&#40;</span><span class="re0">$fstr</span>, <span class="st0">&#8216;EX:NIL&#8217;</span><span class="br0">&#41;</span> != <span class="kw2">false</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <a href="http://www.php.net/print" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.php.net/print');"><span class="kw3">print</span></a><span class="br0">&#40;</span><span class="st0">&quot;Error. Code: &quot;</span>.<span class="re0">$response</span>-&gt;<span class="me1">faultCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="st0">&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&quot;</span>.<span class="re0">$response</span>-&gt;<span class="me1">faultString</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <a href="http://www.php.net/exit" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.php.net/exit');"><span class="kw3">exit</span></a><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="co1">// &#8230;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* Im Hauptcode steht dann:</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$value</span> = <span class="re0">$response</span>-&gt;<span class="me1">value</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$value</span> != <span class="nu0">0</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$return</span> = <span class="re0">$value</span>-&gt;<span class="me1">scalarval</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$return</span>=<span class="st0">&quot;&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span> <a href="http://www.php.net/strlen" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.php.net/strlen');"><span class="kw3">strlen</span></a><span class="br0">&#40;</span><span class="re0">$return</span><span class="br0">&#41;</span> == <span class="nu0">0</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.php.net/echo" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.php.net/echo');"><span class="kw3">echo</span></a> <span class="st0">&#8216;&lt;p&gt;&amp;Uuml;berweisung wurde angelegt.&lt;/p&gt;&#8217;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// &#8230;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Das wäre also ein Fix oder Workaround. Wie alles sind natürlich auch Fehler relativ. Konkret ist mit einem Workaround also geholfen. Und zwar schnell und einfach. Steht es hingegen an, sich um den Kern des Problems zu kümmern, so ist ein wenig mehr Arbeit und Genauigkeit von Nöten. Hier ist der Fix aber nicht umsonst, hat er doch geholfen, den Fehler einzugrenzen und die Funktionsfähigkeit wieder herzustellen.</p>
<p>So stellt sich erstmal die Frage warum <em>genau</em> der Fehler zu Tage tritt und warum der Fix nun funktioniert. Die Eingrenzung des Fehlers auf seine ausschlaggebende Ursache. Bei diesem Beispiel ist es relativ einfach mit der Fehlerursache. Auch das Protokoll von XML-RPC ist relativ offen, den es basiert auf (recht einfachen) XML Dokumenten, die per HTTP ausgetauscht werden. So ist zum debuggen mittels PHP das XML der Antwort einsehbar indem der String ausgegeben wird:</p>
<div class="dean_ch" style="white-space: nowrap;">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">encoding</span>=<span class="st0">&quot;UTF-8&quot;</span><span class="re2">?&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;methodResponse</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">xmlns:ex</span>=<span class="st0">&quot;http://ws.apache.org/xmlrpc/namespaces/extensions&quot;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sc3"><span class="re1">&lt;params<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="sc3"><span class="re1">&lt;param<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sc3"><span class="re1">&lt;value<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;ex:nil</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sc3"><span class="re1">&lt;/value<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;/param<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;<span class="sc3"><span class="re1">&lt;/params<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/methodResponse<span class="re2">&gt;</span></span></span></div>
</li>
</ol>
</div>
<p>Der Fehler tritt hier auf, weil die PHP XML-RPC Bibliothek nichts mit dem Rückgabewert &#8220;&lt;ex:nil/&gt;&#8221; anfangen kann. Nun stellt sich die Frage, wie damit umgehen? Wo genau liegt der Fehler, in der PHP-Bibliothek oder in der Implementierung in der Java-Bibliothek von Apache? Wenns um Bibliotheken geht ist das oft ein Zeichen dafür, dass es sich hier um eine grundlegendere Frage handelt. Und das eine Lösung aufwendiger und auch problematischer sein kann. Dies aus zwei Gründen:</p>
<p>Zum einen werden Bibliotheken von vielen Programiererinnen und Anwendern in unterschiedlichen Anwendungen genutzt dessen allen Bedürfnisse eine Bibliothek unter einen Hut bekommen muss. Eine &#8220;Fehlerbehebung&#8221; die zu nicht erwartenen Ergebnissen führt kann zum Beispiel bestehende Anwendungen gefährden.</p>
<p>Zum anderen, weil wenn ein Fehler gefunden wird, ein Fehlerbericht an das Projekt der Bibliothek gemacht werden sollte. Dazu muss erstmal rausgefunden werden, wie dies gemacht wird und es ist oft nicht klar, wie schnell ein Fehler im Projekt behoben wird, nachdem er gemeldet wird.</p>
<h2>Mein Code, Dein Code, unser Code.</h2>
<p>In der Programmierung spricht man hier oft vom &#8220;Upstream&#8221;. Ich erstelle für die lokale Kopie meiner Bibliothek einen Patch, der das gewünschte Feature implementiert. Das Feature für die PHP-Bibliothek ausführlich formuliert wäre hier: <em>Die Unterstützung des ex:nil Rückgabewertes zwecks Kompabilität zur Apache XML-RPC Implementierung</em>. </p>
<p>Läuft der Patch bei mir und bin ich sicher, dass das auch für andere AnwenderInnen der Bibliothek Sinn macht, <em>upstreame</em> ich den Patch, in dem ich den dem Bibliotheksprojekt zur Verfügung stelle. Meist wird darüber diskutiert was für und was gegen den Patch spricht und der Patch entsprechend modifziert resp. erweitert. Wird der Patch akzeptiert, landet er meist im nächsten Release des Projektes.</p>
<h3>Keep Up the Upstream.</h3>
<p>Damit ist dann allen geholfen. Übrigens sind viele Entwicklerinnen dann für Feedback dankbar, wenn es um eine reale Fehlerlösung geht. So hat der Entwickler im Hibiscus Projekt sicherlich kein Interesse daran, PHP-Programmierern bei der Fehlersuche zu helfen, selbst wenn er ein ganz lieber ist und es mit den Anfragen auch generell recht freundlich hält. Hätte die Schnittstelle auf seiner Seite einen Fehler würden sich warscheinlich schon recht viele Leute beschwert haben&#8230; . Das <em>XML-RPC for PHP</em> Projekt hingegen hat aber vielleicht ein echtes Interesse daran, die Bibliothek kompatibel mit der Apache Implementierung zu halten. Jeder Fehler ist eine Chance ein Programm zu verbessern. Keep Up the Upstream.</p>
]]></content:encoded>
			<wfw:commentRss>http://phpugffm.de/index.php/nachtrag-zu-onlinebanking-mit-php,2009-07,399.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5.3 ist da!</title>
		<link>http://phpugffm.de/index.php/php-53-ist-da,2009-06,397.html</link>
		<comments>http://phpugffm.de/index.php/php-53-ist-da,2009-06,397.html#comments</comments>
		<pubDate>Tue, 30 Jun 2009 13:40:45 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Home]]></category>

		<guid isPermaLink="false">http://phpugffm.de/index.php/php-53-ist-da,2009-06,397.html</guid>
		<description><![CDATA[Finally ist eine neue Version da. Auf dem BBQ haben wir noch gescherzt, dass PHP 5.3 eigentlich PHP 6 ohne Unicode ist. Demenstprechend umfangreich sind die Veränderungen. Auf Heise gibt es einen ganz gut bebilderten Hintergrundartikel zu den neuen Features von Sebastian Bergmann.
]]></description>
			<content:encoded><![CDATA[<p>Finally ist eine neue Version da. Auf dem BBQ haben wir noch gescherzt, dass PHP 5.3 eigentlich PHP 6 ohne Unicode ist. Demenstprechend umfangreich sind die Veränderungen. Auf Heise gibt es <a href="http://www.heise.de/developer/Was-aendert-sich-mit-PHP-5-3--/artikel/140003" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.heise.de/developer/Was-aendert-sich-mit-PHP-5-3--/artikel/140003');" title="Artikel: Was ändert sich mit PHP 5.3? von Sebastian Bergmann">einen ganz gut bebilderten Hintergrundartikel zu den neuen Features</a> von Sebastian Bergmann.</p>
]]></content:encoded>
			<wfw:commentRss>http://phpugffm.de/index.php/php-53-ist-da,2009-06,397.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP BBQ</title>
		<link>http://phpugffm.de/index.php/php-bbq,2009-06,396.html</link>
		<comments>http://phpugffm.de/index.php/php-bbq,2009-06,396.html#comments</comments>
		<pubDate>Wed, 17 Jun 2009 05:01:22 +0000</pubDate>
		<dc:creator>dc7590</dc:creator>
				<category><![CDATA[Home]]></category>

		<guid isPermaLink="false">http://phpugffm.de/index.php/php-bbq,2009-06,396.html</guid>
		<description><![CDATA[ After a great night at the Brotfabrik we decided the BBQ was a good one idea and should be repeated again soon.
We had one talk scheduled but we didn&#8217;t quite get round to it, too much talking.
One crazy dude even suggested we hold a Winter barcamp in Mainz sometime in November.
Special thanks to Ulf [...]]]></description>
			<content:encoded><![CDATA[<p> After a great night at the <a href="http://www.brotfabrik.info" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.brotfabrik.info');" target="_blank">Brotfabrik</a> we decided the BBQ was a good one idea and should be repeated again soon.<br />
We had one talk scheduled but we didn&#8217;t quite get round to it, too much talking.<br />
One crazy dude even suggested we hold a Winter <a href="http://www.barcamp.org/#Germany" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.barcamp.org/#Germany');">barcamp</a> in Mainz sometime in November.<br />
Special thanks to <a href="http://www.flickr.com/photos/ulfwendel/3629860215/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.flickr.com/photos/ulfwendel/3629860215/');" target="_blank">Ulf</a> for pulling it all together!!<br />
Below are links to a few lasting memories.</p>
<p>Hashtag: phpbbq<br />
Next Stop: Karlsruhr (<a href="http://www.phpug-karlsruhe.de/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.phpug-karlsruhe.de/');">http://www.phpug-karlsruhe.de/</a>)</p>
<p><a href="http://blog.ulf-wendel.de/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://blog.ulf-wendel.de/');" target="_blank">http://blog.ulf-wendel.de/ </a></p>
<p><a href="http://www.flickr.com/photos/tags/phpbbq/show/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.flickr.com/photos/tags/phpbbq/show/');" target="_blank">http://www.flickr.com/photos/tags/phpbbq/show/</a></p>
<p><a href="http://search.twitter.com/search?q=phpbbq" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://search.twitter.com/search?q=phpbbq');" target="_blank">http://search.twitter.com/search?q=phpbbq</a></p>
]]></content:encoded>
			<wfw:commentRss>http://phpugffm.de/index.php/php-bbq,2009-06,396.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
