<?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>Hymnos - In Wirklichkeit Gar Nicht Anwesend &#187; PHP</title>
	<atom:link href="http://hymnos.existenz.ch/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://hymnos.existenz.ch</link>
	<description>Der Titel &#039;Hymnos&#039; erklärt sich durch eine Konzentration an Liegetönen und ihren Obertönen, die in der Mitte des Stückes den Eindruck eines Chores erwecken, der aber in Wirklichkeit gar nicht anwesend ist.</description>
	<lastBuildDate>Mon, 30 Aug 2010 18:09:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Upgrade von Eclipse PDT 2.1 zu 2.2: Breakpoints für XDebug löschen</title>
		<link>http://hymnos.existenz.ch/2010/08/26/upgrade-von-eclipse-pdt-2-1-zu-2-2-breakpoints-fur-xdebug-loschen/</link>
		<comments>http://hymnos.existenz.ch/2010/08/26/upgrade-von-eclipse-pdt-2-1-zu-2-2-breakpoints-fur-xdebug-loschen/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 11:03:05 +0000</pubDate>
		<dc:creator>christian</dc:creator>
				<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[PDT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[XDebug]]></category>

		<guid isPermaLink="false">http://hymnos.existenz.ch/?p=2415</guid>
		<description><![CDATA[Seit ich meinen Arbeits-PC auf Windows 7 aufgerüstet hatte und dabei alle Software auf den neuesten Stand gebracht habe, funktionierte XDebug, der Debugger für PHP, unter Eclipse PDT 2.2 (Helios) nicht mehr. Zahlreiche verschiedene Versionskombinationen von Apache, PHP und XDebug wollten schlichtwegs nicht miteinander kommunizieren. Und das Entwickeln ohne Debugger macht schlichtwegs weniger Spass.
Heute stolperte [...]]]></description>
			<content:encoded><![CDATA[<p>Seit ich meinen Arbeits-PC auf Windows 7 aufgerüstet hatte und dabei alle Software auf den neuesten Stand gebracht habe, funktionierte XDebug, der Debugger für PHP, unter Eclipse PDT 2.2 (Helios) nicht mehr. Zahlreiche verschiedene Versionskombinationen von Apache, PHP und XDebug wollten schlichtwegs nicht miteinander kommunizieren. Und das Entwickeln ohne Debugger macht schlichtwegs weniger Spass.</p>
<p>Heute stolperte ich zufällig über die Lösung: Es lag nicht an den Serverkomponenten, sondern an einem Clientproblem: Wegen eines <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312951">Eclipse-Bugs</a> stören die aus PDT 2.1 übernommenen Breakpoints den Debugger. Nachdem ich alle Breakpoints gelöscht hatte, funktionierte XDebug auch unter PDT 2.2 wieder einwandfrei.</p>
<p>Das Leben ist ohne dauerndes <a href="http://ch.php.net/manual/de/function.var-dump.php">var_dumpen</a> irgendwie schöner.</p>
]]></content:encoded>
			<wfw:commentRss>http://hymnos.existenz.ch/2010/08/26/upgrade-von-eclipse-pdt-2-1-zu-2-2-breakpoints-fur-xdebug-loschen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ich glaube, ich habe soeben ein OSS-Projekt zerstört</title>
		<link>http://hymnos.existenz.ch/2010/05/20/ich-glaube-ich-habe-soeben-ein-oss-projekt-zerstort/</link>
		<comments>http://hymnos.existenz.ch/2010/05/20/ich-glaube-ich-habe-soeben-ein-oss-projekt-zerstort/#comments</comments>
		<pubDate>Thu, 20 May 2010 07:13:35 +0000</pubDate>
		<dc:creator>christian</dc:creator>
				<category><![CDATA[Technologie]]></category>
		<category><![CDATA[OO]]></category>
		<category><![CDATA[OpenCart]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Reputation]]></category>
		<category><![CDATA[Shopping]]></category>

		<guid isPermaLink="false">http://hymnos.existenz.ch/?p=2275</guid>
		<description><![CDATA[Vielleicht nicht zerstört, aber dessen Reputation stark beschädigt.
Vor einigen Monaten bekam ich den Auftrag, einen Onlineladen einzurichten. Da wir vorwiegend PHP-Webapplikationen betreiben, sah ich mich nach einer Open Source-PHP-Lösung um. Der Platzhirsch Magento ist Overkill, das klassische osCommerce sieht langweilig aus, andere Lösungen kosten ein Vermögen oder haben ein komisches Preissystem.
Übrig blieb das nett aussehende [...]]]></description>
			<content:encoded><![CDATA[<p>Vielleicht nicht zerstört, aber dessen Reputation stark beschädigt.</p>
<p>Vor einigen Monaten bekam ich den Auftrag, einen Onlineladen einzurichten. Da wir vorwiegend PHP-Webapplikationen betreiben, sah ich mich nach einer Open Source-PHP-Lösung um. Der Platzhirsch Magento ist Overkill, das klassische osCommerce sieht langweilig aus, andere Lösungen kosten ein Vermögen oder haben ein komisches Preissystem.</p>
<p>Übrig blieb das nett aussehende <a href="http://www.opencart.com/">OpenCart</a>. Du kannst dir unsere Instanz unter <a href="http://www.meteo-shop.ch/">http://www.meteo-shop.ch/</a> ansehen.</p>
<p>Ah, wie ich vom Design und vom Backend geblendet wurde: Der Code hat einige gravierende Schwächen in seiner Objekt-orientierten Architektur. Er funktioniert zwar, macht aber den Entwicklern von Erweiterungen (In meinem Fall eine Saferpay- und eine Postcard-Zahlungslösung) das Leben schwer.</p>
<p>Open Source-Projekte leben vom Feedback und Austauch, also poste ich im Community-Forum von OpenCart einen längeren Artikel mit Verbesserungsvorschlägen, sowie in einem anderen Thread eine Vorlage für weitere Erweiterungen. Ich bin der Meinung, dass ich dabei differenziert und sachlich argumentiert habe, sowie meinen Willen zur Mitarbeit aufzeigte.</p>
<p>Die Antwort des Entwicklers: <em>Idiot.</em> Plus noch ein paar Beleidigungen und Vorwürfe mehr.</p>
<p>Damit war das Projekt für mich gestorben und diese Geschichte eigentlich abgeschlossen.</p>
<p>Einen Tag später, allerdings, hat jemand einen Linke auf den Thread auf der populären Diskussionsseite <a href="http://www.reddit.com/r/programming/comments/c60g1/how_not_to_respond_to_constructive_criticism/">auf Reddit gepostet</a> veröffentlicht, inklusive <a href="http://www.imgdash.com/uploads/89bf455cab.png">Screenshot des Dialoges</a>. Mit der Konsequenz, dass das Forum dem Ansturm nicht standhielt und offline gehen musste. Und dass die Reputation des OpenCart-Projektes jetzt ziemlich angeschlagen ist&#8230;</p>
<p>Tut mir leid, das war nicht Absicht. Aber etwas Schadenfreude verspüre ich trotzdem: Die Antwort des Entwicklers war völlig unqualifiziert und das negative Karma hat zu Recht eingeschlagen.</p>
]]></content:encoded>
			<wfw:commentRss>http://hymnos.existenz.ch/2010/05/20/ich-glaube-ich-habe-soeben-ein-oss-projekt-zerstort/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Viren und Käfer</title>
		<link>http://hymnos.existenz.ch/2010/03/11/viren-und-kafer/</link>
		<comments>http://hymnos.existenz.ch/2010/03/11/viren-und-kafer/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 09:36:44 +0000</pubDate>
		<dc:creator>christian</dc:creator>
				<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Virus]]></category>

		<guid isPermaLink="false">http://hymnos.existenz.ch/?p=2176</guid>
		<description><![CDATA[Mein Erkältungsvirus verträgt sich nicht so gut mit der Bugsuche in meinen PHP-Skripten:

    /**
     * Clear cache of the webservice
     * 
     */
    private function pingWebservice&#40;&#41; &#123;
        XWeb::ping&#40;$this-&#62;cfg&#91;'apiurl'&#93; . 'clearcache'&#41;;
 [...]]]></description>
			<content:encoded><![CDATA[<p>Mein Erkältungsvirus verträgt sich nicht so gut mit der Bugsuche in meinen PHP-Skripten:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">    <span style="color: #009933; font-style: italic;">/**
     * Clear cache of the webservice
     * 
     */</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> pingWebservice<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        XWeb<span style="color: #339933;">::</span><span style="color: #004000;">ping</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cfg</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'apiurl'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'clearcache'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">octopus</span><span style="color: #339933;">-</span><span style="color: #990000;">log</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Emptied API cache.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></div></div>

<p>Wer findet den Fehler?</p>
]]></content:encoded>
			<wfw:commentRss>http://hymnos.existenz.ch/2010/03/11/viren-und-kafer/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>mtChart &#8211; Graphenbibliothek für PHP</title>
		<link>http://hymnos.existenz.ch/2009/07/03/mtchart-graphenbibliothek-fur-php/</link>
		<comments>http://hymnos.existenz.ch/2009/07/03/mtchart-graphenbibliothek-fur-php/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 15:04:52 +0000</pubDate>
		<dc:creator>christian</dc:creator>
				<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Graph]]></category>
		<category><![CDATA[mtChart]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Visualisation]]></category>

		<guid isPermaLink="false">http://hymnos.existenz.ch/?p=1552</guid>
		<description><![CDATA[Nicht ohne Stolz präsentiere ich die aktuelle Version meiner Graphenbibliothek: mtChart V0.1.2 (GPL V3).
Jetzt fühle ich mich auch langsam revolutionär: Nach Jahren als Anwender und Nutzniesser von freier Software ist das das erste Mal dass ich mich an einem komplett eigenen Projekt versuche. Wobei ich hier auch nur auf bereits getane Arbeit aufbaue: mtChart ist [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/mtchart/"><img src="http://code.google.com/p/mtchart/logo?logo_id=1246357625" alt="mtChart Logo" align="left" border="0" /></a>Nicht ohne Stolz präsentiere ich die aktuelle Version meiner Graphenbibliothek: <a href="http://code.google.com/p/mtchart/">mtChart V0.1.2</a> (GPL V3).</p>
<p>Jetzt fühle ich mich auch langsam revolutionär: Nach Jahren als Anwender und Nutzniesser von freier Software ist das das erste Mal dass ich mich an einem komplett eigenen Projekt versuche. Wobei ich hier auch nur auf bereits getane Arbeit aufbaue: mtChart ist eine Abspaltung (Ein sogenannter Fork) von <a href="http://pchart.sourceforge.net/index.php">pChart</a>. Dank der offenen Lizenz konnte ich den Code dieses ins Stocken geratene Projekt einfach übernehmen und meinen Bedürfnissen anpassen.</p>
<p>Greif zu und geniesse.</p>
<p><img src="http://api.meteotest.ch/mtweb/v1/dachstation/tt/24h" alt="Temperatur Meteotest Dachstation" title="Temperatur Meteotest Dachstation" width="500" height="150" class="aligncenter size-full wp-image-1553" /><br />
<em>Beispiel: Lineplot aktueller Temperaturdaten (<a href="http://www.meteotest.ch/wetterprognosen/aktuelles_wetter/messwerte_bern/">Dachstation Meteotest</a>, Bern)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://hymnos.existenz.ch/2009/07/03/mtchart-graphenbibliothek-fur-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Drei Eclipse/PDT-Shortcuts</title>
		<link>http://hymnos.existenz.ch/2009/06/29/drei-eclipsepdt-shortcuts/</link>
		<comments>http://hymnos.existenz.ch/2009/06/29/drei-eclipsepdt-shortcuts/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 06:36:01 +0000</pubDate>
		<dc:creator>christian</dc:creator>
				<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[PDT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Shortcut]]></category>
		<category><![CDATA[Tastatur]]></category>
		<category><![CDATA[Tipp]]></category>

		<guid isPermaLink="false">http://hymnos.existenz.ch/?p=1538</guid>
		<description><![CDATA[Das sind meine Lieblingsshortcuts aus Eclipse (In der PDT-Inkarnation) welche ich nicht auf Anhieb kannte. Und welche dir einen Griff zur Maus ersparen können:

Ctrl-Shift-P: Von einer Klammer zum dazugehörenden Gegenstück springen.
Ctrl-O und Funktionsname: Schon beim Tippen werden die Funktionen gefiltert, mit den Cursortasten zur gewünschten Funktion bewegen und mit Enter zur Implementation springen.
Ctrl-Shift-R und Dateiname: [...]]]></description>
			<content:encoded><![CDATA[<p>Das sind meine Lieblingsshortcuts aus <a href="http://eclipse.org/">Eclipse</a> (In der <a href="http://www.eclipse.org/pdt/">PDT</a>-Inkarnation) welche ich nicht auf Anhieb kannte. Und welche dir einen Griff zur Maus ersparen können:</p>
<ul>
<li><em>Ctrl-Shift-P:</em> Von einer Klammer zum dazugehörenden Gegenstück springen.</li>
<li><em>Ctrl-O und Funktionsname:</em> Schon beim Tippen werden die Funktionen gefiltert, mit den Cursortasten zur gewünschten Funktion bewegen und mit Enter zur Implementation springen.</li>
<li><em>Ctrl-Shift-R und Dateiname:</em> Alle geöffneten Projekte nach einem Dateinamen durchsuchen und anspringen.</li>
</ul>
<p>Das sollte den Neid auf das unter Windows fehlende <a href="http://macromates.com/">Textmate</a> etwas lindern.</p>
]]></content:encoded>
			<wfw:commentRss>http://hymnos.existenz.ch/2009/06/29/drei-eclipsepdt-shortcuts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>foreach-Schlaufen mit Referenz abkürzen (PHP)</title>
		<link>http://hymnos.existenz.ch/2009/01/02/foreach-schlaufen-mit-referenz-abkurzen-php/</link>
		<comments>http://hymnos.existenz.ch/2009/01/02/foreach-schlaufen-mit-referenz-abkurzen-php/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 11:38:45 +0000</pubDate>
		<dc:creator>christian</dc:creator>
				<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://hymnos.existenz.ch/?p=697</guid>
		<description><![CDATA[Diesen Trick hatte ich offenbar überlesen: Um Array-Werte in einer foreach-Schlaufe zu verändern, kann man anstelle der üblichen Konstruktion hier:

  foreach&#40;$array as $index =&#62; $value&#41; &#123;
    $array&#91;$index&#93; = $value + 2;
  &#125;

&#8230;einfach die Werte per Referenz adressieren:

  foreach&#40;$array as &#38;$value&#41; &#123;
    $value += 2;
  &#125;

]]></description>
			<content:encoded><![CDATA[<p>Diesen Trick hatte ich offenbar überlesen: Um Array-Werte in einer <code>foreach</code>-Schlaufe zu verändern, kann man anstelle der üblichen Konstruktion hier:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">  <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$index</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$index</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$value</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></div></div>

<p>&#8230;einfach die Werte per Referenz adressieren:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">  <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span> <span style="color: #b1b100;">as</span> <span style="color: #339933;">&amp;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$value</span> <span style="color: #339933;">+=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://hymnos.existenz.ch/2009/01/02/foreach-schlaufen-mit-referenz-abkurzen-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sortieren nach Wert in einem assoziativen Array (PHP)</title>
		<link>http://hymnos.existenz.ch/2008/12/23/sortieren-nach-wert-in-einem-assoziativen-array-php/</link>
		<comments>http://hymnos.existenz.ch/2008/12/23/sortieren-nach-wert-in-einem-assoziativen-array-php/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 10:48:51 +0000</pubDate>
		<dc:creator>christian</dc:creator>
				<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[Assoziationen]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Sortierung]]></category>

		<guid isPermaLink="false">http://hymnos.existenz.ch/?p=698</guid>
		<description><![CDATA[PHP verfügt über ein Dutzend verschiedene Sortierfunktionen für Arrays, aber gelegentlich möchte ich ein assoziatives Array nach einem Feld im Array sortieren. Am einfachsten geht das mit einer Hilfsfunktion und usort:

function sortierNachFeld&#40;$a, $b&#41; &#123;
    return strnatcmp&#40;$a&#91;'feldname'&#93;, $b&#91;'feldname'&#93;&#41;;
&#125;
&#160;
usort&#40;$meinArray, 'sortierNachFeld'&#41;;

Die eigentliche Vergleichsfunktion (Hier: strnatcmp) muss ich natürlich den Anforderungen jeweils anpassen.
Etwas unschön ist der [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.php.net/">PHP</a> verfügt über ein Dutzend verschiedene Sortierfunktionen für Arrays, aber gelegentlich möchte ich ein assoziatives Array nach einem Feld im Array sortieren. Am einfachsten geht das mit einer Hilfsfunktion und <code>usort</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> sortierNachFeld<span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span><span style="color: #339933;">,</span> <span style="color: #000088;">$b</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">strnatcmp</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'feldname'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$b</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'feldname'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #990000;">usort</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$meinArray</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'sortierNachFeld'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Die eigentliche Vergleichsfunktion (Hier: <code>strnatcmp</code>) muss ich natürlich den Anforderungen jeweils anpassen.</p>
<p>Etwas unschön ist der hardgecodete Name des Feldes (<code>'feldname'</code>). Aber ich wüsste nicht wie man diesen flexibel ohne den hässlichen Umweg über globale Variabeln übergeben könnte.</p>
]]></content:encoded>
			<wfw:commentRss>http://hymnos.existenz.ch/2008/12/23/sortieren-nach-wert-in-einem-assoziativen-array-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
