<?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>Sprachrohr &#187; Entwicklung</title>
	<atom:link href="http://robert-kummer.de/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://robert-kummer.de</link>
	<description>alles, was der robbi so interessant findet</description>
	<lastBuildDate>Thu, 29 Jul 2010 12:33:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
	<atom:link rel="hub" href="http://superfeedr.com/hubbub" />
			<item>
		<title>PayPal &#8211; Vergleich der Kosten mit dem neuen MicroPayments</title>
		<link>http://robert-kummer.de/2010/03/04/paypal-vergleich-der-kosten-mit-dem-neuen-micropayments/</link>
		<comments>http://robert-kummer.de/2010/03/04/paypal-vergleich-der-kosten-mit-dem-neuen-micropayments/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 11:13:36 +0000</pubDate>
		<dc:creator>rok</dc:creator>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Privates]]></category>
		<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[PayPal]]></category>

		<guid isPermaLink="false">http://robert-kummer.de/?p=430</guid>
		<description><![CDATA[Wir setzen PayPal bei unserer Applikation www.demobereich.de ein und da war eine Ankündigung über neue Gebühren für MicroPayments sehr interessant. Seit 17. Februar 2010 sind diese MicroPayments nun aktiv und verfügbar. Aber bevor wir das entwicklungstechnisch umsetzen erstmal eine kleine &#8230; <a href="http://robert-kummer.de/2010/03/04/paypal-vergleich-der-kosten-mit-dem-neuen-micropayments/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wir setzen <a  href="http://www.paypal.de" target="_blank">PayPal</a> bei unserer Applikation <a  href="http://www.demobereich.de" target="_blank">www.demobereich.de</a> ein und da war eine Ankündigung über neue Gebühren für MicroPayments sehr interessant.</p>
<p>Seit 17. Februar 2010 sind diese MicroPayments nun aktiv und verfügbar. Aber bevor wir das entwicklungstechnisch umsetzen erstmal eine kleine Break-Even-Analyse anstellen, um den Nutzen auch quantifizieren zu können.</p>
<p>Das Ergebnis findet sich in dieser Tabelle hier:</p>
<table border="0" cellspacing="0" cellpadding="5" width="100%" summary="Gebühren von PayPal und PayPal MicroPayments im Vergleich">
<thead>
<tr>
<th></th>
<th>PayPal</th>
<th>PayPal MicroPayments</th>
</tr>
</thead>
<tbody>
<tr>
<th>Fixkosten</th>
<td>0,35 EUR</td>
<td>0,10 EUR</td>
</tr>
<tr>
<th>umsatzbezogene Kosten</th>
<td>1,9 %</td>
<td>10,0 %</td>
</tr>
<tr>
<th>Gewinn bei Transaktion von 0,11 EUR</th>
<td>-0,242 EUR</td>
<td>-0,001 EUR</td>
</tr>
<tr>
<th> Gewinn bei Transaktion von 0,12 EUR</th>
<td>-0,232 EUR</td>
<td>0,008 EUR</td>
</tr>
<tr>
<th> Gewinn bei Transaktion von 0,35 EUR</th>
<td>-0,007 EUR</td>
<td>0,215 EUR</td>
</tr>
<tr>
<th>Gewinn bei Transaktion von 0,36 EUR</th>
<td>0,003 EUR</td>
<td>0,224 EUR</td>
</tr>
<tr>
<th>Gewinn bei Transaktion von 1,00 EUR</th>
<td>0,631 EUR</td>
<td>0,800 EUR</td>
</tr>
<tr>
<th>Gewinn bei Transaktion von 2,00 EUR</th>
<td>1,612 EUR</td>
<td>1,700 EUR</td>
</tr>
<tr>
<th>Gewinn bei Transaktion von 3,00 EUR</th>
<td>2,593 EUR</td>
<td>2,600 EUR</td>
</tr>
<tr>
<th>Gewinn bei Transaktion von 3,08 EUR</th>
<td>2,671 EUR</td>
<td>2,672 EUR</td>
</tr>
<tr>
<th>Gewinn bei Transaktion von 3,09 EUR</th>
<td>2,681 EUR</td>
<td>2,681 EUR</td>
</tr>
<tr>
<th>Gewinn bei Transaktion von 3,10 EUR</th>
<td>2,691 EUR</td>
<td>2,690 EUR</td>
</tr>
</tbody>
</table>
<p>Eine Transaktion sollte mind. 0,12 EUR für PayPal MicroPayments bzw. 0,36 EUR für PayPal kosten. PayPal MicroPayments macht nur Sinn, wenn die Transaktion zwischen 0,12 EUR und 3,08 EUR liegen, damit es Sinn macht.</p>
<p>Damit wird die Umsetzung für Demobereich wohl eher nicht passieren, aber vielleicht haben wir ja bald eine andere Einsatzmöglichkeit dafür.</p>
<p>Laut <a  href="https://micropayments.paypal-labs.com/" target="_blank">PayPal MicroPayments</a> kann man ein Konto nur mit einer Abrechnungsart versehen. Daher sollte man ein separates Konto für die MicroPayments haben.<br />
<h3 class='related_post_title'>Das könnte Sie auch interessieren:</h3>
<ul class='related_post'>
<li>Leider wurde kein verwandter Artikel gefunden</li>
</ul>
<p><a  class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://robert-kummer.de/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://robert-kummer.de/2010/03/04/paypal-vergleich-der-kosten-mit-dem-neuen-micropayments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wie suche ich in einem Array nach einem Textteil mit PHP?</title>
		<link>http://robert-kummer.de/2010/01/27/wie-suche-ich-in-einem-array-nach-einem-textteil-mit-php/</link>
		<comments>http://robert-kummer.de/2010/01/27/wie-suche-ich-in-einem-array-nach-einem-textteil-mit-php/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 16:30:20 +0000</pubDate>
		<dc:creator>rok</dc:creator>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://robert-kummer.de/?p=399</guid>
		<description><![CDATA[Diese Herausforderung hatte ich jüngst zu meistern. Ursprung war eine recht unsinnige Datenbankstruktur bei einem Kunden. Dort gibt es keine Normalisierung im Datenbankuniversum Aber nun genug gejammert. Auch damit muss man als Programmierer klar kommen. Die Problemstellung ist, dass eine &#8230; <a href="http://robert-kummer.de/2010/01/27/wie-suche-ich-in-einem-array-nach-einem-textteil-mit-php/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Diese Herausforderung hatte ich jüngst zu meistern. Ursprung war eine recht unsinnige Datenbankstruktur bei einem Kunden. Dort gibt es keine Normalisierung im Datenbankuniversum <img src='http://robert-kummer.de/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>Aber nun genug gejammert. Auch damit muss man als Programmierer klar kommen. Die Problemstellung ist, dass eine Hierarchie durch eine Zeichenfolge in einem Textfeld angegeben wird. Dabei können mehrere Hierarchien auftreten, die ebenfalls durch ein Zeichen getrennt werden. Das sieht dann so aus:</p>
<pre>2|15;2|8
</pre>
<p>Das Trennzeichen verschiedener Hierarchiedefinitionen ist das &#8220;;&#8221; (Semikolon). Die Hierarchieebenen werden mit dem &#8220;|&#8221; (Pipe) getrennt. Obige Darstellung signalisiert also ein Element, welches sich einmal in Hierarchie &#8220;2&#8243; -&gt; &#8220;15&#8243; und einmal in Hierarchie &#8220;2&#8243; -&gt; &#8220;8&#8243; befindet. Die Hierarchieebene &#8220;2&#8243; ist also eine Oberebene und besitzt mindestens zwei Unterebenen.</p>
<p>Nun wird diese Hierchie für eine Verlinkung genutzt. Da ist es natürlich sehr passend, wenn man den Link abhängig von den Hierarchieebenen zusammenbaut. Befinde ich mich gerade in der Ebene &#8220;15&#8243;, dann will ich auch den Link via &#8220;2&#8243; -&gt; &#8220;15&#8243; erhalten und in Ebene &#8220;8&#8243; eben umgekehrt.</p>
<p>Nach kurzem Suchen fand ich dann die <a  href="http://www.klamm.de/forum/archive/index.php/t-97472.html" target="_blank">Lösung</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> array_find<span style="color: #009900;">&#40;</span><span style="color: #000088;">$haystack</span><span style="color: #339933;">,</span> <span style="color: #000088;">$needle</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$iterator</span> <span style="color: #339933;">=</span> <span style="color: #990000;">create_function</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'$item'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'return strpos($item, \''</span><span style="color: #339933;">.</span><span style="color: #000088;">$needle</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'\')!==false;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #990000;">array_filter</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$haystack</span><span style="color: #339933;">,</span> <span style="color: #000088;">$iterator</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> array_contains<span style="color: #009900;">&#40;</span><span style="color: #000088;">$haystack</span><span style="color: #339933;">,</span> <span style="color: #000088;">$needle</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$iterator</span> <span style="color: #339933;">=</span> <span style="color: #990000;">create_function</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'$value, $item'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'return $value or strpos($item, \''</span><span style="color: #339933;">.</span><span style="color: #000088;">$needle</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'\')!==false;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #990000;">array_reduce</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$haystack</span><span style="color: #339933;">,</span> <span style="color: #000088;">$iterator</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Diese beiden Funktionen liefern einmal ein Array mit den gefundenen Elementen. Die andere ein Boolean, ob das gesuchte Element sich irgendwo in den Werten befindet.</p>
<p>Hier ein Beispiel der Anwendung:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$needle</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'foo'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$array</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'affe'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'barfoos'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'cherry'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'dilemma'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'eisberg'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'fastfood'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Das Array enthält irgendwo den String &quot;%s&quot;: [%s]'</span><span style="color: #339933;">.</span>PHP_EOL<span style="color: #339933;">,</span> <span style="color: #000088;">$needle</span><span style="color: #339933;">,</span> array_contains<span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #339933;">,</span> <span style="color: #000088;">$needle</span><span style="color: #009900;">&#41;</span> ? <span style="color: #0000ff;">'X'</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">'-'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Die folgenden Elemente enthalten den String &quot;%s&quot;: [%s]'</span><span style="color: #339933;">.</span>PHP_EOL<span style="color: #339933;">,</span> <span style="color: #000088;">$needle</span><span style="color: #339933;">,</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">','</span><span style="color: #339933;">,</span> array_find<span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #339933;">,</span> <span style="color: #000088;">$needle</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Die Ausgabe sieht dann so aus:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Das Array enthält irgendwo den String <span style="color: #ff0000;">&quot;foo&quot;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>X<span style="color: #7a0874; font-weight: bold;">&#93;</span>
Die folgenden Elemente enthalten den String <span style="color: #ff0000;">&quot;foo&quot;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>barfoos,fastfood<span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></div></div>

<p>Mit diesen Funktionen konnte ich nun sehr elegant &#8211; ohne Schleife &#8211; die Herausforderung bewältigen. Danke Google, Klamm und tleilax.<br />
<h3 class='related_post_title'>Das könnte Sie auch interessieren:</h3>
<ul class='related_post'>
<li><a  href="http://robert-kummer.de/2009/11/19/zend_xmlrpc_server-debuggen-so-gehts/" title="Zend_XmlRpc_Server debuggen &#8211; so gehts!">Zend_XmlRpc_Server debuggen &#8211; so gehts!</a></li>
<li><a  href="http://robert-kummer.de/2009/05/26/umlaute-mit-strtoupper-gehen-nicht/" title="Umlaute mit strtoupper() gehen nicht">Umlaute mit strtoupper() gehen nicht</a></li>
<li><a  href="http://robert-kummer.de/2009/05/17/einstieg-in-php-5-und-mysql-5/" title="Einstieg in PHP 5 und MySQL 5. Einführung in die Webprogrammierung (Gebundene Ausgabe)">Einstieg in PHP 5 und MySQL 5. Einführung in die Webprogrammierung (Gebundene Ausgabe)</a></li>
<li><a  href="http://robert-kummer.de/2009/05/08/php-und-mysql-easy-taschenbuch/" title="PHP und MySQL Easy: Dynamik für Ihre Webseiten. Leicht, klar, sofort (Taschenbuch)">PHP und MySQL Easy: Dynamik für Ihre Webseiten. Leicht, klar, sofort (Taschenbuch)</a></li>
<li><a  href="http://robert-kummer.de/2009/04/26/php-design-patterns/" title="PHP Design Patterns (Gebundene Ausgabe)">PHP Design Patterns (Gebundene Ausgabe)</a></li>
</ul>
<p><a  class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://robert-kummer.de/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://robert-kummer.de/2010/01/27/wie-suche-ich-in-einem-array-nach-einem-textteil-mit-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Datenbank-Backup mit dem MySQLDumper</title>
		<link>http://robert-kummer.de/2010/01/13/datenbank-backup-mit-dem-mysqldumper/</link>
		<comments>http://robert-kummer.de/2010/01/13/datenbank-backup-mit-dem-mysqldumper/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 18:27:25 +0000</pubDate>
		<dc:creator>rok</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[database]]></category>

		<guid isPermaLink="false">http://robert-kummer.de/?p=391</guid>
		<description><![CDATA[Ich hab heute mal eine &#8220;hübsche&#8221; Backup &#38; Restore Lösung gesucht, mit der ich automatisiert DB-Backups machen kann und in einer Weboberfläche die einzelnen Backups auch wiederherstellen kann. Diese Idee hatte ich offensichtlich nicht alleine. Nach kurzer Suche stieß ich &#8230; <a href="http://robert-kummer.de/2010/01/13/datenbank-backup-mit-dem-mysqldumper/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-394" title="MySQLDumper" src="http://robert-kummer.de/wp-content/uploads/mysqldumper.png" alt="" width="99" height="74" />Ich hab heute mal eine &#8220;hübsche&#8221; Backup &amp; Restore Lösung gesucht, mit der ich automatisiert DB-Backups machen kann und in einer Weboberfläche die einzelnen Backups auch wiederherstellen kann.</p>
<p><span id="more-391"></span></p>
<p>Diese Idee hatte ich offensichtlich nicht alleine. Nach kurzer Suche stieß ich auf den <a  href="http://www.mysqldumper.de/" target="_blank">MySQLDumper</a>. Dieser ermöglicht all die gesuchten Features und noch ein wenig mehr. Ich hab hier mal einen kleinen Auszug der aktuellen Version 1.24 zusammengestellt:</p>
<ul>
<li>Dialoggestützte Installation</li>
<li>Backup per PHP und Perl möglich (gerade wichtig bei Script-Timeouts in großen Datenbanken)</li>
<li>Benachrichtigung per E-Mail über ein erfolgtes Backup (da kann man sich sogar das Backupfile zusätzlich im Anhang schicken lassen)</li>
<li>Multi-Part-Backups für große Datenbanken möglich</li>
<li>Kopieren der Backups auf bis zu 3 FTP-Server</li>
<li>eigene SQL-Befehle vor und nach einem Backup datenbankbezogen einstellbar</li>
<li>hübsches Webinterface</li>
</ul>
<p>Natürlich bietet der MySQLDumper noch weitere Dinge, aber da könnt ihr euch auch einfach auf der <a  href="http://www.mysqldumper.de/funktionen/" target="_blank">Funktionsübersicht</a> dazu informieren.</p>
<h2>Best Practices im eigenen Einsatz</h2>
<p>Bei einem unserer Kundenserver hab ich den MySQLDumper jetzt mal installiert und einen Cronjob aufgesetzt, der allmorgentlich ein DB-Backup von allen Datenbanken anlegt. Als Einstellungen hab ich folgende getroffen:</p>
<ul>
<li>E-Mail-Benachrichtigung: ja</li>
<li>Backup aller Datenbanken</li>
<li>FTP-Server werde ich dann morgen einrichten, nachdem ich morgen mal das Restore testen werde</li>
</ul>
<p>Im Vorfeld hab ich noch einen eigenen Nutzer für den MySQLDumper angelegt in der Datenbank, damit dort nichts schlimmes passieren kann. Also grundsätzlich darf der Nutzer nur LOCK TABLES und SELECT Statements absetzen. Außerdem werde ich noch prüfen, ob er für den Restore-Vorgang noch weitere Rechte benötigt. Diese Rechte hab ich dann global gesetzt, damit ich nicht für jeden neue Kundendatenbank etwas tun muss. Der MySQLDumper sucht sich nämlich selbständig alle verfügbaren Datenbanken.</p>
<p>Alles in allem ein gutes Tool. Ob es in einem Live-Szenario durchhalten wird, wird sich zeigen. Es macht aber bisher einen sehr guten Eindruck.</p>
<p>Habt Ihr schon irgendwelche Erfahrungen mit dem MySQLDumper? Egal ob gute oder schlechte&#8230;dann kommentiert diesen Beitrag doch bitte.<br />
<h3 class='related_post_title'>Das könnte Sie auch interessieren:</h3>
<ul class='related_post'>
<li><a  href="http://robert-kummer.de/2010/07/23/kontrolle-ueber-den-mssql-server-erlangen/" title="Kontrolle über den MSSQL Server erlangen">Kontrolle über den MSSQL Server erlangen</a></li>
<li><a  href="http://robert-kummer.de/2009/12/24/neue-suchqualitaet-in-wordpress-mit-lucene/" title="Neue Suchqualität in WordPress mit Lucene">Neue Suchqualität in WordPress mit Lucene</a></li>
<li><a  href="http://robert-kummer.de/2009/04/24/sql-buddy-web-based-mysql-administration/" title="SQL Buddy &#8211; Web based MySQL administration">SQL Buddy &#8211; Web based MySQL administration</a></li>
</ul>
<p><a  class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://robert-kummer.de/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://robert-kummer.de/2010/01/13/datenbank-backup-mit-dem-mysqldumper/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Zend_XmlRpc_Server debuggen &#8211; so gehts!</title>
		<link>http://robert-kummer.de/2009/11/19/zend_xmlrpc_server-debuggen-so-gehts/</link>
		<comments>http://robert-kummer.de/2009/11/19/zend_xmlrpc_server-debuggen-so-gehts/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 20:31:47 +0000</pubDate>
		<dc:creator>rok</dc:creator>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[gsales]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[xmlrpc]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://robert-kummer.de/?p=362</guid>
		<description><![CDATA[Also ich hatte jetzt gerade wieder das Problem, dass mein GSales_Connector (XMLRPC-Schnittstelle zu GSales mit sehr erweitertem Funktionsumfang im Vergleich zur normalen Schnittstelle von GSales) ein wenig herumgezickt hat. Er lieferte Sachen wie folgendes: Exception: Failed to parse response ~~ &#8230; <a href="http://robert-kummer.de/2009/11/19/zend_xmlrpc_server-debuggen-so-gehts/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Also ich hatte jetzt gerade wieder das Problem, dass mein <a  title="project hosted on demobereich.de" href="http://www.demobereich.de">GSales_Connector</a> (XMLRPC-Schnittstelle zu <a  href="http://www.gsales.de/">GSales</a> mit sehr erweitertem Funktionsumfang im Vergleich zur normalen Schnittstelle von GSales) ein wenig herumgezickt hat. Er lieferte Sachen wie folgendes:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Exception: Failed to parse response
~~ <span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>..<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #000000; font-weight: bold;">/</span>library<span style="color: #000000; font-weight: bold;">/</span>Zend<span style="color: #000000; font-weight: bold;">/</span>XmlRpc<span style="color: #000000; font-weight: bold;">/</span>Client<span style="color: #000000; font-weight: bold;">/</span>ServerProxy.php<span style="color: #000000; font-weight: bold;">@</span><span style="color: #000000;">93</span>: Zend_XmlRpc_Client-<span style="color: #000000; font-weight: bold;">&gt;</span>call<span style="color: #7a0874; font-weight: bold;">&#40;</span>string, array<span style="color: #7a0874; font-weight: bold;">&#41;</span>
~~ <span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>..<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #000000; font-weight: bold;">/</span>library<span style="color: #000000; font-weight: bold;">/</span>GSales<span style="color: #000000; font-weight: bold;">/</span>SeriesInvoice.php<span style="color: #000000; font-weight: bold;">@</span><span style="color: #000000;">144</span>: Zend_XmlRpc_Client_ServerProxy-<span style="color: #000000; font-weight: bold;">&gt;</span>updateSeriesInvoicePosition<span style="color: #7a0874; font-weight: bold;">&#40;</span>integer, array<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>Nun dachte ich mir so, dass ich zum debuggen einfach <a  href="http://de.php.net/manual/en/function.mail.php">mail()</a> nutzen könne. Pustekuchen&#8230;nicht mal Dateien hat der nette <a  href="http://framework.zend.com/manual/de/zend.xmlrpc.server.html">Zend_XmlRpc_Server</a> geschrieben. Aber die Lösung des Problems ist so einfach, wie nützlich&#8230;leider kam ich nicht gleich darauf (muss wohl an der Uhrzeit liegen).</p>
<p>Meine Lösung:</p>
<ol>
<li>Zum Test einen kleinen Zend_XmlRpc_Client erstellen</li>
<li>Die &#8220;kaputte&#8221; Methode im Server mit einem weiteren @return-Typ versehen: string</li>
<li>in der &#8220;kaputten&#8221; Methode auf dem Server einfach per return &#8220;zeilenweise&#8221; die Zwischenergebnisse zurückgeben lassen</li>
<li>gefundenen Fehler fixen und vóila, alles ist schön</li>
</ol>
<p>Hier mein Testclient (mit HTTP-Auth):</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">set_include_path</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/pfad/zur/zf/library/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Zend/Http/Client.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Zend/XmlRpc/Client.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Zend/Debug.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Zend/Http/Client/Exception.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'http://xmlrpc-server.loc/xmlrpc.php'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$username</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'httpauth-user'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$password</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'httpauth-password'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$httpClient</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_Http_Client<span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$httpClient</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setAuth</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$username</span><span style="color: #339933;">,</span> <span style="color: #000088;">$password</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$client</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_XmlRpc_Client<span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #339933;">,</span> <span style="color: #000088;">$httpClient</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$proxy</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getProxy</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'module'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$intId</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">123</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$arrUpdateData</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
 <span style="color: #0000ff;">'bez3'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'klappt doch mit Ümlauten'</span><span style="color: #339933;">,</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$strUpdateData</span> <span style="color: #339933;">=</span> <span style="color: #990000;">http_build_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arrUpdateData</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
Zend_Debug<span style="color: #339933;">::</span><span style="color: #004000;">dump</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$proxy</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">kaputteMethode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$intId</span><span style="color: #339933;">,</span> <span style="color: #000088;">$strUpdateData</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Und hier ist ein Auszug aus der xmlrpc.php vom Server:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009933; font-style: italic;">/**
 * updates anything
 * @param int $pid
 * @param string $strUpdateData
 * @return bool|string
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> kaputteMethode<span style="color: #009900;">&#40;</span><span style="color: #000088;">$pid</span><span style="color: #339933;">,</span> <span style="color: #000088;">$strUpdateData</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
 <span style="color: #990000;">parse_str</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$strUpdateData</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arrUpdateData</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #339933;">..</span><span style="color: #009900;">&#93;</span>
 <span style="color: #b1b100;">return</span> <span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arrUpdateData</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$server</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_XmlRpc_Server<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$server</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addFunction</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'kaputteMethode'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'module'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$server</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">handle</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Also mir hat das sehr gut geholfen und leider fand ich bisher mit Google nichts dazu. Wer es anders macht oder besser kann, immer her damit! Was mich auch interessieren würde ist, ob ich mit dem Observer oder einer weiteren Exception-Definition per Zend_XmlRpc_Server_Fault etwas ähnliches hätte erreichen können. Ich glaube nicht, weiß es aber nicht so genau.<br />
<h3 class='related_post_title'>Das könnte Sie auch interessieren:</h3>
<ul class='related_post'>
<li><a  href="http://robert-kummer.de/2010/01/27/wie-suche-ich-in-einem-array-nach-einem-textteil-mit-php/" title="Wie suche ich in einem Array nach einem Textteil mit PHP?">Wie suche ich in einem Array nach einem Textteil mit PHP?</a></li>
<li><a  href="http://robert-kummer.de/2009/05/26/umlaute-mit-strtoupper-gehen-nicht/" title="Umlaute mit strtoupper() gehen nicht">Umlaute mit strtoupper() gehen nicht</a></li>
<li><a  href="http://robert-kummer.de/2009/05/17/einstieg-in-php-5-und-mysql-5/" title="Einstieg in PHP 5 und MySQL 5. Einführung in die Webprogrammierung (Gebundene Ausgabe)">Einstieg in PHP 5 und MySQL 5. Einführung in die Webprogrammierung (Gebundene Ausgabe)</a></li>
<li><a  href="http://robert-kummer.de/2009/05/08/php-und-mysql-easy-taschenbuch/" title="PHP und MySQL Easy: Dynamik für Ihre Webseiten. Leicht, klar, sofort (Taschenbuch)">PHP und MySQL Easy: Dynamik für Ihre Webseiten. Leicht, klar, sofort (Taschenbuch)</a></li>
<li><a  href="http://robert-kummer.de/2009/04/26/php-design-patterns/" title="PHP Design Patterns (Gebundene Ausgabe)">PHP Design Patterns (Gebundene Ausgabe)</a></li>
</ul>
<p><a  class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://robert-kummer.de/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://robert-kummer.de/2009/11/19/zend_xmlrpc_server-debuggen-so-gehts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>svn:special und die Betriebssysteme</title>
		<link>http://robert-kummer.de/2009/10/08/svnspecial-und-die-betriebssysteme/</link>
		<comments>http://robert-kummer.de/2009/10/08/svnspecial-und-die-betriebssysteme/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 12:27:43 +0000</pubDate>
		<dc:creator>rok</dc:creator>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://robert-kummer.de/?p=354</guid>
		<description><![CDATA[Aus aktuellem Anlaß muss ich mal kurz etwas zu Subversion schreiben. Folgende Herausforderung stellte sich mir gerade: Photo by LaserGuidedEin aktuelles Entwicklungsprojekt benutzt symbolische Links für bestimmte Dateien. Diese werden beim Export nur dann korrekt als symbolische Links erzeugt, wenn &#8230; <a href="http://robert-kummer.de/2009/10/08/svnspecial-und-die-betriebssysteme/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Aus aktuellem Anlaß muss ich mal kurz etwas zu <a  title="Subversion" href="http://subversion.tigris.org" target="_blank">Subversion</a> schreiben. Folgende Herausforderung stellte sich mir gerade:</p>
<p><span class="wp-decoratr-image"><img src="http://farm1.static.flickr.com/29/57002123_df40385b90_m.jpg" alt="Macro Music ♫♪" /><br />
<a  rel="external nofollow" href="http://www.flickr.com/photos/40551330@N00/57002123">Photo by LaserGuided</a></span>Ein aktuelles Entwicklungsprojekt benutzt symbolische Links für bestimmte Dateien. Diese werden beim Export nur dann korrekt als symbolische Links erzeugt, wenn das Property &#8220;svn:special&#8221; mit dem Wert &#8220;*&#8221; gesetzt ist. Dazu sollte man wissen, dass unter Linux dieses Property nicht vom Entwickler gesetzt werden soll/darf laut <a  title="Doku zu svn:special" href="http://svnbook.red-bean.com/en/1.1/ch07s02.html" target="_blank">Dokumentation</a>.</p>
<p>Unter Windows muss man es jedoch setzen, und zwar so: eine Datei erzeugen mit dem Inhalt &#8220;link pfad/datei.ext&#8221;. Dann das Property entsprechend setzen &#8211; ich nutze dazu Eclipse. Dann ein Commit und fertig.</p>
<p>Unter Linux muss man einen symbolischen Link erzeugen, diesen per Commit einchecken und dann wird das Property automatisch von Subversion gesetzt.</p>
<p>Beim Export / Deploy werden dann automatisch alle Symlinks korrekt erzeugt. Wenn die Datei allerdings schon mit dem fehlenden Property einmal erzeugt wurde, dann muss man diese erst löschen und dann einen neuen Export machen.</p>
<p>Mit &#8220;svn update&#8221; ist das glaube ich nicht so umständlich, hat da wer Erfahrung mit?</p>
<p>Kleiner Nachtrag: Unter Eclipse auf Ubuntu musste ich noch das Property manuell setzen, damit der erzeugte Symlink auch korrekt eingecheckt werden konnte.<br />
<h3 class='related_post_title'>Das könnte Sie auch interessieren:</h3>
<ul class='related_post'>
<li><a  href="http://robert-kummer.de/2009/10/07/die-grenzen-der-platte/" title="Die Grenzen der Platte&#8230;">Die Grenzen der Platte&#8230;</a></li>
<li><a  href="http://robert-kummer.de/2009/08/14/die-erste-million-episode-1/" title="Die erste Million &#8211; Episode 1">Die erste Million &#8211; Episode 1</a></li>
<li><a  href="http://robert-kummer.de/2009/04/30/ziffernblock-steuert-maus/" title="Ziffernblock steuert Maus">Ziffernblock steuert Maus</a></li>
<li><a  href="http://robert-kummer.de/2009/04/29/pyrenamer-mass-file-renamer/" title="pyRenamer &#8211; Mass file renamer">pyRenamer &#8211; Mass file renamer</a></li>
<li><a  href="http://robert-kummer.de/2009/03/05/versionierung-und-ticketverwaltung-fuer-lau/" title="Versionierung und Ticketverwaltung für lau">Versionierung und Ticketverwaltung für lau</a></li>
</ul>
<p><a  class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://robert-kummer.de/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://robert-kummer.de/2009/10/08/svnspecial-und-die-betriebssysteme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Umlaute mit strtoupper() gehen nicht</title>
		<link>http://robert-kummer.de/2009/05/26/umlaute-mit-strtoupper-gehen-nicht/</link>
		<comments>http://robert-kummer.de/2009/05/26/umlaute-mit-strtoupper-gehen-nicht/#comments</comments>
		<pubDate>Tue, 26 May 2009 12:48:21 +0000</pubDate>
		<dc:creator>rok</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://robert-kummer.de/?p=267</guid>
		<description><![CDATA[Das tolle an php ist ja eigentlich seine Einfachheit&#8230;aber manchmal könnte ich es an die Wand klatschen. Folgender Quellcode bringt kein großes &#8220;Ä&#8221;: echo strtoupper&#40;'ä'&#41;; Folgender Quellcode hingegen schon: $s = strtoupper&#40;'ä'&#41;; $s = strtr&#40;$s, array&#40; 'ä' =&#38;gt; 'Ä', 'ö' &#8230; <a href="http://robert-kummer.de/2009/05/26/umlaute-mit-strtoupper-gehen-nicht/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Das tolle an <a  href="http://de.php.net/" target="_blank">php</a> ist ja eigentlich seine Einfachheit&#8230;aber manchmal könnte ich es an die Wand klatschen.</p>
<p>Folgender Quellcode bringt kein großes &#8220;Ä&#8221;:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">echo</span> <span style="color: #990000;">strtoupper</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ä'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Folgender Quellcode hingegen schon:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$s</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtoupper</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ä'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$s</span>  <span style="color: #339933;">=</span> <span style="color: #990000;">strtr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
	<span style="color: #0000ff;">'ä'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'Ä'</span><span style="color: #339933;">,</span>
	<span style="color: #0000ff;">'ö'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'Ö'</span><span style="color: #339933;">,</span>
	<span style="color: #0000ff;">'ü'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'Ü'</span><span style="color: #339933;">,</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$s</span><span style="color: #339933;">;</span></pre></div></div>

<p>Tja, das kann schon echt nervig sein.<br />
<h3 class='related_post_title'>Das könnte Sie auch interessieren:</h3>
<ul class='related_post'>
<li><a  href="http://robert-kummer.de/2010/01/27/wie-suche-ich-in-einem-array-nach-einem-textteil-mit-php/" title="Wie suche ich in einem Array nach einem Textteil mit PHP?">Wie suche ich in einem Array nach einem Textteil mit PHP?</a></li>
<li><a  href="http://robert-kummer.de/2009/11/19/zend_xmlrpc_server-debuggen-so-gehts/" title="Zend_XmlRpc_Server debuggen &#8211; so gehts!">Zend_XmlRpc_Server debuggen &#8211; so gehts!</a></li>
<li><a  href="http://robert-kummer.de/2009/05/17/einstieg-in-php-5-und-mysql-5/" title="Einstieg in PHP 5 und MySQL 5. Einführung in die Webprogrammierung (Gebundene Ausgabe)">Einstieg in PHP 5 und MySQL 5. Einführung in die Webprogrammierung (Gebundene Ausgabe)</a></li>
<li><a  href="http://robert-kummer.de/2009/05/08/php-und-mysql-easy-taschenbuch/" title="PHP und MySQL Easy: Dynamik für Ihre Webseiten. Leicht, klar, sofort (Taschenbuch)">PHP und MySQL Easy: Dynamik für Ihre Webseiten. Leicht, klar, sofort (Taschenbuch)</a></li>
<li><a  href="http://robert-kummer.de/2009/04/26/php-design-patterns/" title="PHP Design Patterns (Gebundene Ausgabe)">PHP Design Patterns (Gebundene Ausgabe)</a></li>
</ul>
<p><a  class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://robert-kummer.de/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://robert-kummer.de/2009/05/26/umlaute-mit-strtoupper-gehen-nicht/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>pyRenamer &#8211; Mass file renamer</title>
		<link>http://robert-kummer.de/2009/04/29/pyrenamer-mass-file-renamer/</link>
		<comments>http://robert-kummer.de/2009/04/29/pyrenamer-mass-file-renamer/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 12:49:53 +0000</pubDate>
		<dc:creator>rok</dc:creator>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Privates]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://robert-kummer.de/?p=227</guid>
		<description><![CDATA[Wer kennt ihn nicht &#8211; den guten alten Total Commander? Eine sehr wichtige Funktion daran war für mich immer das Mehrfach-Umbennen. Da ich nun Ubuntu 9.04 nutze fehlt mir diese Funktion doch recht stark&#8230;sicherlich kann man das auf Konsole auch &#8230; <a href="http://robert-kummer.de/2009/04/29/pyrenamer-mass-file-renamer/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div id="attachment_231" class="wp-caption alignright" style="width: 160px"><a  href="http://robert-kummer.de/wp-content/uploads/pyrenamer.png" class="thickbox no_icon" rel="gallery-227" title="pyrenamer"><img class="size-thumbnail wp-image-231" title="pyrenamer" src="http://robert-kummer.de/wp-content/uploads/pyrenamer-150x150.png" alt="pyRenamer" width="150" height="150" /></a><p class="wp-caption-text">pyRenamer</p></div>
<p>Wer kennt ihn nicht &#8211; den guten alten <a  href="http://www.ghisler.com/deutsch.htm" target="_blank">Total Commander</a>? Eine sehr wichtige Funktion daran war für mich immer das Mehrfach-Umbennen.</p>
<p>Da ich nun Ubuntu 9.04 nutze fehlt mir diese Funktion doch recht stark&#8230;sicherlich kann man das auf Konsole auch &#8220;irgendwie&#8221; machen. Aber warum? Es gibt ein wunderbar schönes Tool für Ubuntu/Debian Gnome dafür: den <a  href="http://www.infinicode.org/code/pyrenamer/" target="_blank">pyRenamer</a>.</p>
<p>Er ist derzeit in <a  href="http://www.infinicode.org/code/pyrenamer/download.php" target="_blank">Version 0.6.0</a> vorhanden und kann recht viele Umbenennungsfunktionen anwenden:</p>
<ul>
<li>Musterersetzung</li>
<li>Zeichenersetzung</li>
<li>Groß- / Kleinschreibung</li>
<li>Sonderzeichenbehandlung</li>
<li>Einfügen von Zeichen/Zählern in Dateinamen</li>
<li>direkte Vorgabe benutzen</li>
<li>Bilder aufgrund von Metadaten umbenennen</li>
<li>Musikdateien aufgrund von Metadaten umbenennen</li>
</ul>
<p>Alles in allem ein sehr cooles fensterbasiertes Tool, welches eigentlich selbsterklärend ist.<br />
<h3 class='related_post_title'>Das könnte Sie auch interessieren:</h3>
<ul class='related_post'>
<li><a  href="http://robert-kummer.de/2009/10/08/svnspecial-und-die-betriebssysteme/" title="svn:special und die Betriebssysteme">svn:special und die Betriebssysteme</a></li>
<li><a  href="http://robert-kummer.de/2009/04/30/ziffernblock-steuert-maus/" title="Ziffernblock steuert Maus">Ziffernblock steuert Maus</a></li>
<li><a  href="http://robert-kummer.de/2009/04/24/sql-buddy-web-based-mysql-administration/" title="SQL Buddy &#8211; Web based MySQL administration">SQL Buddy &#8211; Web based MySQL administration</a></li>
<li><a  href="http://robert-kummer.de/2009/01/13/falsche-tastaturcodes-im-vmware-player/" title="Falsche Tastaturcodes im VMware Player">Falsche Tastaturcodes im VMware Player</a></li>
<li><a  href="http://robert-kummer.de/2008/12/01/include_path-fuer-virtual-host-umbiegen/" title="Include_Path für Virtual Host umbiegen">Include_Path für Virtual Host umbiegen</a></li>
</ul>
<p><a  class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://robert-kummer.de/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://robert-kummer.de/2009/04/29/pyrenamer-mass-file-renamer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Design Patterns (Gebundene Ausgabe)</title>
		<link>http://robert-kummer.de/2009/04/26/php-design-patterns/</link>
		<comments>http://robert-kummer.de/2009/04/26/php-design-patterns/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 07:12:24 +0000</pubDate>
		<dc:creator>rok</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[literatur]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://robert-kummer.de/?p=224</guid>
		<description><![CDATA[Entwurfsmuster und PHP scheinen sich irgendwie zu widersprechen: Muster gelten als kompliziert und komplex, PHP ist einfach und verständlich &#8212; warum schreibt also ein PHP-Kenner wie Stephan Schmidt ein Buch wie PHP Design Patterns? Ganz einfach: &#8220;Durch die Anleitungen in &#8230; <a href="http://robert-kummer.de/2009/04/26/php-design-patterns/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://www.amazon.de/PHP-Design-Patterns-Stephan-Schmidt/dp/389721864X/ref=sr_1_1/280-3042870-2571155?ie=UTF8&#038;s=books&#038;qid=1240729382&#038;sr=8-1?ie=UTF8&#038;tag=robertkummer-21"><img style="float: left; width: 150px; height: 150px; margin-right: 10px;" src="http://ecx.images-amazon.com/images/I/21MV1nl%2BK6L._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA198_SH20_OU03_.jpg" alt="PHP Design Patterns" /></a><br />
Entwurfsmuster und PHP scheinen sich irgendwie zu widersprechen: Muster gelten als kompliziert und komplex, PHP ist einfach und verständlich &#8212; warum schreibt also ein PHP-Kenner wie Stephan Schmidt ein Buch wie PHP Design Patterns? Ganz einfach: &#8220;Durch die Anleitungen in diesem Buch werden Design Patterns zu einem Werkzeug der PHP-Entwicklung, das Ihren Programmieralltag sowohl erleichtert als auch bereichert.&#8221;.  Schmidt setzt an mehreren Stellen an: die neuen Sprachkonstrukte in PHP, die von der Zend Engine 2 unterstützt werden, Objektgrundlagen bis hin zu Richtlinien, die beim Design einer Applikation beachtet werden sollten. An erster Stelle steht für ihn jedoch: guter Code in PHP und Spaß an Programmieren.  PHP Design Patterns richtet sich an die Adresse von PHP-erfahrenen Programmierern &#8212; PHP-Neulinge sollten zumindest auf dem Stand von Einführung in PHP 5 sicher sein, bevor sie sich an Muster wagen, für den Aufstieg von PHP 4 nach 5 hat Schmidt <a  title="More at Amazon" href="http://www.amazon.de/PHP-Design-Patterns-Stephan-Schmidt/dp/389721864X/ref=sr_1_1/280-3042870-2571155?ie=UTF8&#038;s=books&#038;qid=1240729382&#038;sr=8-1?ie=UTF8&#038;tag=robertkummer-21">(weiter&#8230;)</a><br />
<h3 class='related_post_title'>Das könnte Sie auch interessieren:</h3>
<ul class='related_post'>
<li><a  href="http://robert-kummer.de/2010/01/27/wie-suche-ich-in-einem-array-nach-einem-textteil-mit-php/" title="Wie suche ich in einem Array nach einem Textteil mit PHP?">Wie suche ich in einem Array nach einem Textteil mit PHP?</a></li>
<li><a  href="http://robert-kummer.de/2009/11/19/zend_xmlrpc_server-debuggen-so-gehts/" title="Zend_XmlRpc_Server debuggen &#8211; so gehts!">Zend_XmlRpc_Server debuggen &#8211; so gehts!</a></li>
<li><a  href="http://robert-kummer.de/2009/05/26/umlaute-mit-strtoupper-gehen-nicht/" title="Umlaute mit strtoupper() gehen nicht">Umlaute mit strtoupper() gehen nicht</a></li>
<li><a  href="http://robert-kummer.de/2009/05/17/einstieg-in-php-5-und-mysql-5/" title="Einstieg in PHP 5 und MySQL 5. Einführung in die Webprogrammierung (Gebundene Ausgabe)">Einstieg in PHP 5 und MySQL 5. Einführung in die Webprogrammierung (Gebundene Ausgabe)</a></li>
<li><a  href="http://robert-kummer.de/2009/05/08/php-und-mysql-easy-taschenbuch/" title="PHP und MySQL Easy: Dynamik für Ihre Webseiten. Leicht, klar, sofort (Taschenbuch)">PHP und MySQL Easy: Dynamik für Ihre Webseiten. Leicht, klar, sofort (Taschenbuch)</a></li>
</ul>
<p><a  class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://robert-kummer.de/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://robert-kummer.de/2009/04/26/php-design-patterns/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>SQL Buddy &#8211; Web based MySQL administration</title>
		<link>http://robert-kummer.de/2009/04/24/sql-buddy-web-based-mysql-administration/</link>
		<comments>http://robert-kummer.de/2009/04/24/sql-buddy-web-based-mysql-administration/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 08:21:54 +0000</pubDate>
		<dc:creator>rok</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://robert-kummer.de/?p=219</guid>
		<description><![CDATA[Heute will ich mal ein Tool vorstellen, welches einen adäquaten Ersatz für den allseits bekannten phpMyAdmin bieten kann. Und zwar ist das der SQL Buddy. Zur Benutzung benötigt man keinerlei Konfiguration, da alle Daten beim Login abgefragt werden. Aufpassen sollte &#8230; <a href="http://robert-kummer.de/2009/04/24/sql-buddy-web-based-mysql-administration/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a  rel="external nofollow" href="http://www.flickr.com/photos/37996589754@N01/8956688"><img class="alignright" style="border: 0pt none; margin-left: 8px; margin-right: 8px;" src="http://farm1.static.flickr.com/6/8956688_5e767acdb4_m.jpg" border="0" alt="folktunes.org database work" hspace="8" width="240" height="140" align="left" /></a>Heute will ich mal ein Tool vorstellen, welches einen adäquaten Ersatz für den allseits bekannten <a  title="phpMyAdmin" href="http://www.phpmyadmin.net/" target="_blank">phpMyAdmin</a> bieten kann. Und zwar ist das der <a  title="SQL Buddy" href="http://www.sqlbuddy.com/" target="_blank">SQL Buddy</a>.</p>
<p>Zur Benutzung benötigt man keinerlei Konfiguration, da alle Daten beim Login abgefragt werden. Aufpassen sollte man mit der Startseite des SQL Buddy: er hat bei mir lokal (WinXP, XAMPP) das Problem gehabt, dass er zu Beginn nicht von der Index-Seite auf die login.php ging. Also lieber die login.php direkt aufrufen, &#8220;dann klappts auch mit der Mutti&#8221;.</p>
<p>Der SQL Buddy besticht durch seine Einfachheit und aufgeräumten Oberfläche. Die Exportformate sind arg spärlich, wenn man den großen Bruder &#8211; sofern man ihn so nennen darf &#8211; phpMyAdmin sieht. Aber wenn man mal ehrlich ist, mehr als SQL braucht man nicht wirklich und das kann der kleine Buddy.</p>
<p>Es gibt auch ein zweites Designthema, wobei mir das jetzige Standardthema definitiv ausreichend gefällt.</p>
<p>Wer ein paar Screenshots sehen möchte, der wird <a  title="SQL Buddy Screenshots" href="http://www.sqlbuddy.com/screenshots/" target="_blank">hier</a> fündig.</p>
<p>Ein weiterer großer Vorteil ist die hohe Verfügbarkeit von <a  title="SQL Buddy Übersetzung" href="http://www.sqlbuddy.com/translations/" target="_blank">Übersetzungen</a>. Es sind quasi alle wichtigen vorhanden, alle fehlenden kann man live auf der Seite bearbeiten. Das ist echt mal eine geile Idee!</p>
<p>Mittlerweile wird das Projekt auf <a  title="Projekt auf Google Code" href="http://code.google.com/p/sql-buddy/" target="_blank">http://code.google.com/p/sql-buddy/</a> gehostet.</p>
<p>Ich hoffe, dass dieses Projekt noch ein bis zwei Schwächen, wie zum Beispiel die sinnlose 2. Menüdarstellung oder&#8230;hm, nun fällt mir keine weitere Schwäche ein. <img src='http://robert-kummer.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Hier mal noch kurz die Daten und Anforderungen der aktuellen <a  title="SQL Buddy Download" href="http://www.sqlbuddy.com/download/dl.php" target="_blank">Version 1.3.1</a>:</p>
<ul>
<li>277 Kb für die ZIP-Datei</li>
<li>PHP 4.3+</li>
<li>MySQL 4+</li>
<li>läuft in Mozilla Firefox, Safari, Opera 9.5 und Internet Explorer 7</li>
</ul>
<p>Ich werde den SQL Buddy auf jedenfall in unseren neuen Hosting-Service <a  title="demobereich.de" href="http://www.demobereich.de/" target="_blank">demobereich.de</a> mit integrieren in einer der nächsten Versionen.<br />
<h3 class='related_post_title'>Das könnte Sie auch interessieren:</h3>
<ul class='related_post'>
<li><a  href="http://robert-kummer.de/2009/05/17/einstieg-in-php-5-und-mysql-5/" title="Einstieg in PHP 5 und MySQL 5. Einführung in die Webprogrammierung (Gebundene Ausgabe)">Einstieg in PHP 5 und MySQL 5. Einführung in die Webprogrammierung (Gebundene Ausgabe)</a></li>
<li><a  href="http://robert-kummer.de/2009/05/08/php-und-mysql-easy-taschenbuch/" title="PHP und MySQL Easy: Dynamik für Ihre Webseiten. Leicht, klar, sofort (Taschenbuch)">PHP und MySQL Easy: Dynamik für Ihre Webseiten. Leicht, klar, sofort (Taschenbuch)</a></li>
<li><a  href="http://robert-kummer.de/2009/04/22/php-5-mysql-5-studienausgabe-broschiert/" title="PHP 5 / MySQL 5. Studienausgabe (Broschiert)">PHP 5 / MySQL 5. Studienausgabe (Broschiert)</a></li>
<li><a  href="http://robert-kummer.de/2009/03/05/versionierung-und-ticketverwaltung-fuer-lau/" title="Versionierung und Ticketverwaltung für lau">Versionierung und Ticketverwaltung für lau</a></li>
<li><a  href="http://robert-kummer.de/2010/07/23/kontrolle-ueber-den-mssql-server-erlangen/" title="Kontrolle über den MSSQL Server erlangen">Kontrolle über den MSSQL Server erlangen</a></li>
</ul>
<p><a  class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://robert-kummer.de/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://robert-kummer.de/2009/04/24/sql-buddy-web-based-mysql-administration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP Framework &#8211; A blank WordPress Theme Framework</title>
		<link>http://robert-kummer.de/2009/04/23/wp-framework-a-blank-wordpress-theme-framework/</link>
		<comments>http://robert-kummer.de/2009/04/23/wp-framework-a-blank-wordpress-theme-framework/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 06:54:10 +0000</pubDate>
		<dc:creator>rok</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://robert-kummer.de/?p=213</guid>
		<description><![CDATA[Während ich eigentlich über ein kleines und sehr hilfreiches Projekt im Web bloggen wollte, fiel mir im Changelog ein Eintrag bzgl. des WP-Frameworks auf. Also neugierig wie ich bin gleich mal geschaut &#8211; ich bin ja in kurzer Zeit zum &#8230; <a href="http://robert-kummer.de/2009/04/23/wp-framework-a-blank-wordpress-theme-framework/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a  rel="external nofollow" href="http://www.flickr.com/photos/25566432@N00/2574712880"><img class="alignright" style="border: 0pt none; margin-left: 8px; margin-right: 8px;" src="http://farm4.static.flickr.com/3178/2574712880_f71b39c644_m.jpg" border="0" alt="Ready for another WordCamp" hspace="8" width="240" height="230" align="left" /></a></p>
<p>Während ich eigentlich über ein kleines und sehr hilfreiches Projekt im Web bloggen wollte, fiel mir im Changelog ein Eintrag bzgl. des WP-Frameworks auf. Also neugierig wie ich bin gleich mal geschaut &#8211; ich bin ja in kurzer Zeit zum absoluten <a  title="WordPress" href="http://www.wordpress.org/" target="_blank">WordPress</a>-Fan avanciert.</p>
<p>Was ist also das <a  href="http://wpframework.com/">WP-Framework</a>? Nun, es ist quasi ein sauberes Theme, welches alle Notwendigkeiten mit sich bringt. Angefangen bei den einzelnen PHP-Vorlagen, über Artwork, bis hin zu <a  href="http://de.wikipedia.org/wiki/Suchmaschinenoptimierung" target="_blank"><acronym title="Search Engine Optimization">SEO</acronym></a>-freundlichen CSS-Klassen-Verwendungen.</p>
<p>Alles in allem ein sehr gelungenes Projekt, welches hoffentlich noch das ein oder andere Feature hinzufügen wird, wie zum Beispiel:</p>
<ul>
<li><a  href="http://de.wikipedia.org/wiki/Internationalisierung_(Softwareentwicklung)" target="_blank"><acronym title="Internationalization">I18N</acronym></a> &#8211; damit ich das Theme auch on-the-fly auf deutsch nutzen kann</li>
<li>eine zweite <a  title="WordPress Widgets" href="http://widgets.wordpress.com/" target="_blank">Widget-Area</a> oder Sidebar, damit ich auch diese Sidebar schnell und einfach aktivieren kann</li>
</ul>
<p>Seit dem 13. April gibt es das WP-Framework in <a  title="WP Framework 0.2.4.8" href="http://wordpress.org/extend/themes/download/wp-framework.0.2.4.8.zip" target="_blank">Version 0.2.4</a>. Diese Version setzt ein WordPress 2.7+ voraus.</p>
<p>Zugriff zum Repository gibt es unter <a  href="http://wpframework.googlecode.com/svn/">http://wpframework.googlecode.com/svn/</a>, der aktuelle Trunk kann folgendermaßen gezogen werden:</p>
<pre>svn co http://wpframework.googlecode.com/svn/trunk/</pre>
<p>Das Projekt, was ich ursprünglich hier vorstellen wollte heißt übrigens <a  title="Project Deploy" href="http://projectdeploy.org/" target="_blank">deploy</a>. Das werde ich alsbald nachholen.<br />
<h3 class='related_post_title'>Das könnte Sie auch interessieren:</h3>
<ul class='related_post'>
<li><a  href="http://robert-kummer.de/2009/04/13/robert-kummerde-v60-oder-wordpress-die-erste/" title="robert-kummer.de v6.0 oder WordPress, die erste">robert-kummer.de v6.0 oder WordPress, die erste</a></li>
<li><a  href="http://robert-kummer.de/2005/08/13/entwicklungshilfe/" title="Entwicklungshilfe">Entwicklungshilfe</a></li>
<li><a  href="http://robert-kummer.de/2010/01/27/wie-suche-ich-in-einem-array-nach-einem-textteil-mit-php/" title="Wie suche ich in einem Array nach einem Textteil mit PHP?">Wie suche ich in einem Array nach einem Textteil mit PHP?</a></li>
<li><a  href="http://robert-kummer.de/2009/12/24/neue-suchqualitaet-in-wordpress-mit-lucene/" title="Neue Suchqualität in WordPress mit Lucene">Neue Suchqualität in WordPress mit Lucene</a></li>
<li><a  href="http://robert-kummer.de/2009/11/19/zend_xmlrpc_server-debuggen-so-gehts/" title="Zend_XmlRpc_Server debuggen &#8211; so gehts!">Zend_XmlRpc_Server debuggen &#8211; so gehts!</a></li>
</ul>
<p><a  class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://robert-kummer.de/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://robert-kummer.de/2009/04/23/wp-framework-a-blank-wordpress-theme-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
