<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:admin="http://webns.net/mvcb/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
<channel>
    <title>Peter Rehm's Blog</title>
    <link>http://peter-rehm.de/</link>
    <description>apple,development,life &amp; more</description>
    <dc:language>de</dc:language>
    <generator>Serendipity 1.0.2 - http://www.s9y.org/</generator>
    <pubDate>Wed, 02 Jan 2008 10:19:09 GMT</pubDate>

    <image>
        <url>http://peter-rehm.de/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Peter Rehm's Blog - apple,development,life &amp; more</title>
        <link>http://peter-rehm.de/</link>
        <width>100</width>
        <height>21</height>
    </image>

<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/peterrehm" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="peterrehm" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
    <title>PEAR unter OSX Leopard installieren</title>
    <link>http://peter-rehm.de/2008/01/02/PEAR-unter-OSX-Leopard-installieren/</link>
            <category>PHP</category>
    
    <comments>http://peter-rehm.de/2008/01/02/PEAR-unter-OSX-Leopard-installieren/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=196</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=196</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    Im folgenden wird in aller kürze beschrieben, wie man PEAR unter&lt;br /&gt;
OSX 10.5 Leopard installiert. Dies sollte unter den vorherigen OSX&lt;br /&gt;
Versionen sicher ähnlich funktionieren.&lt;br /&gt;
&lt;br /&gt;
Auf meinem lokalen System habe ich PHP5 von entropy.ch am laufen, da&lt;br /&gt;
ich unbedingt die GD-Lib benötige. Dies hat nur Einfluss auf die Ablage&lt;br /&gt;
der php.ini. Dies muss eben von den auf dem jeweilig auf dem System vorhandenen&lt;br /&gt;
Gegebenheit abhängig gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Wir werden in /usr/local/ installieren, und dem System gestatten die TEMP-Files&lt;br /&gt;
in /usr/local/temp abzulegen.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;sudo&amp;#160;mkdir&amp;#160;/usr/local/temp&lt;br /&gt;
sudo&amp;#160;chmod&amp;#160;-R&amp;#160;777&amp;#160;/usr/local/temp&lt;br /&gt;
sudo&amp;#160;mkdir&amp;#160;/usr/local/share/pear&lt;br /&gt;
sudo&amp;#160;chmod&amp;#160;-R&amp;#160;777&amp;#160;/usr/local/share/pear&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Im nächsten Schritt wird go-pear ausgeführt.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;curl&amp;#160;http&amp;#58;//pear.php.net/go-pear&amp;#160;|&amp;#160;php&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Hier muss bei den Pfaden der 1. auf /usr/local geändert werden.&lt;br /&gt;
Alle anderen Einstellungen können in der Regel beibehalten werden.&lt;br /&gt;
&lt;br /&gt;
Während der Installation kommt dann die Warnung, dass der PEAR Pfad&lt;br /&gt;
noch nicht in der php.ini vorhanden ist, und es deswegen zu Problemen&lt;br /&gt;
mit der Verwendung von den PEAR Scripts kommen kann.&lt;br /&gt;
&lt;br /&gt;
Hier kommen wir an den Punkt wo es wichtig ist, zu wissen, wo die&lt;br /&gt;
Konfigurationsdatei des Webservers liegen muss. Dies kann man einfach&lt;br /&gt;
über ein kurzes Script herausfinden:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;&amp;#60;?&amp;#160;phpinfo&amp;#40;&amp;#41;;&amp;#160;?&amp;#62;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Im Browser die Datei ansehen und nach folgender Zeile suchen.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;Configuration&amp;#160;File&amp;#160;&amp;#40;php.ini&amp;#41;&amp;#160;Path	/usr/local/php5/lib&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Hier muss die php.ini für den Webserver liegen, die php.ini für&lt;br /&gt;
das Command-Line-Interface (CLI) unabhängig davon in /etc/&lt;br /&gt;
&lt;br /&gt;
Standardgemäß ist eine php.ini.default in /etc/. Diese kopieren&lt;br /&gt;
und modifizieren wir zunächst.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;sudo&amp;#160;cp&amp;#160;/etc/php.ini.default&amp;#160;/etc/php.ini&lt;br /&gt;
sudo&amp;#160;nano&amp;#160;/etc/php.ini&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Nun nach dem Eintrag include_path suchen und diesen um "/usr/local/share/pear"&lt;br /&gt;
ergänzen. Bei mir sah dies nach der Anpassung so aus.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;include_path=".&amp;#58;/usr/local/share/pear"&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Ist eine php.ini in dem Config-Path des Webservers vorhanden bearbeiten&lt;br /&gt;
wir diese, ansonsten kopieren wir die Datei /etc/php.ini an die gewünschte&lt;br /&gt;
Stelle&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;sudo&amp;#160;cp&amp;#160;/etc/php.ini&amp;#160;/usr/local/php5/lib/php.ini&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Abschließend muss noch der Webserver neu gestartet werden, dann ist PEAR&lt;br /&gt;
einsatzfähig.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;sudo&amp;#160;apachectl&amp;#160;restart&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Kann PEAR von der Konsole nicht mit dem Befehl pear aufgerufen werden,&lt;br /&gt;
ist /usr/local/bin nicht korrekt in den SHELL-Pfaden eingetragen, und sollte nachgetragen&lt;br /&gt;
werden. Tipp: echo $PATH zum überprüfen in der SHELL eingeben.&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Wed, 02 Jan 2008 11:16:31 +0100</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2008/01/02/196/</guid>
    <category>osx</category>
<category>pear</category>
<category>php</category>

</item>
<item>
    <title>Frohes Neues Jahr</title>
    <link>http://peter-rehm.de/2008/01/02/Frohes-Neues-Jahr/</link>
            <category>Verschiedenes</category>
    
    <comments>http://peter-rehm.de/2008/01/02/Frohes-Neues-Jahr/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=197</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=197</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    Ich wünsche allen meinen Lesern ein frohes und erfolgreiches Jahr 2008.&lt;br /&gt;
&lt;br /&gt;
Ich werde ab Februar 2008 wieder mein Engagement in diesem Blog verstärken.&lt;br /&gt;
&lt;br /&gt;
Als kleinen Vorgeschmack gibt es einen Artikel über PEAR unter OSX Leopard.&lt;br /&gt;
&lt;br /&gt;
Stay tuned... 
    </content:encoded>

    <pubDate>Wed, 02 Jan 2008 11:10:00 +0100</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2008/01/02/197/</guid>
    
</item>
<item>
    <title>jpgraph und utf-8 daten</title>
    <link>http://peter-rehm.de/2007/10/01/jpgraph-und-utf-8-daten/</link>
            <category>PHP</category>
    
    <comments>http://peter-rehm.de/2007/10/01/jpgraph-und-utf-8-daten/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=195</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=195</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    Wer sich wundert wieso die Texte der erzeugten Graphen mittels jpgraph&lt;br /&gt;
in kryptischen Buchstaben dargestellt werden, obwohl gültige Daten in UTF-8&lt;br /&gt;
angeliefert wurden, ist nur einen kleinen Schritt von der Lösung entfernt.&lt;br /&gt;
&lt;br /&gt;
Die Ursache des Problems liegt darin dass die Standardschriftarten von jpgraph&lt;br /&gt;
kein UTF-8 darstellen können.&lt;br /&gt;
&lt;br /&gt;
Daher kann man sich einfach wie auch auf der jpgraph Seite angegeben ein&lt;br /&gt;
entsprechendes Schriftpaket herunterladen. Ich hab mich in meinem Fall für&lt;br /&gt;
Verda entschieden.Dies bekommt man hier: http://www.gnome.org/fonts/&lt;br /&gt;
&lt;br /&gt;
Die Schirften lädt man sich herunter und lädt Sie in ein beliebiges Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Nun muss nur noch das Verzeichnis der Library bekannt gemacht werden:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;DEFINE&amp;#40;"TTF_DIR",dirname&amp;#40;&lt;u&gt;_file_&lt;/u&gt;&amp;#41;&amp;#160;.&amp;#160;'/../../ttf-bitstream-vera-1.10/'&amp;#41;;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Nun muss man noch mittels SetFont angeben, wo welche Schrift eingesetzt werden&lt;br /&gt;
soll. Mir ist es allerdings nicht gelungen die Schriftart für die Beschriftung in den&lt;br /&gt;
Netzdiagrammen (jpgraph_radar.php) festzulegen, daher musste ich manuell&lt;br /&gt;
die Standardschrift ändern, indem ich in jpgraph.php und jpgraph_radar.php FF_FONT1&lt;br /&gt;
durch FF_VERA ersetzt habe.&lt;br /&gt;
&lt;br /&gt;
Nun sollten alle Umlaute auch angezeigt werden können. 
    </content:encoded>

    <pubDate>Mon, 01 Oct 2007 23:35:00 +0200</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2007/10/01/195/</guid>
    <category>jpgraph</category>
<category>php</category>
<category>utf8</category>

</item>
<item>
    <title>Weitere Lektion in der Umlautproblematik</title>
    <link>http://peter-rehm.de/2007/08/16/Weitere-Lektion-in-der-Umlautproblematik/</link>
            <category>PHP</category>
    
    <comments>http://peter-rehm.de/2007/08/16/Weitere-Lektion-in-der-Umlautproblematik/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=194</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=194</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    Nachdem ich in einem &lt;a href="http://peter-rehm.de/2006/11/18/UTF-8-in-Webapplikationen/"&gt;früheren Blog Eintrag&lt;/a&gt; empfohlen habe, alle Daten aus&lt;br /&gt;
Speicherplatzgründen die im UTF-8 Format sind in z.b. dem latin1 charset abzulegen,&lt;br /&gt;
muss ich dem nun komplett wiedersprechen.&lt;br /&gt;
Bei einem durchschnittlichen Projekt lädt man sich deutlich mehr Ärger auf,&lt;br /&gt;
als dass man dadurch Vorteile durch Speicherplatzersparnis erzielt.&lt;br /&gt;
&lt;br /&gt;
In meiner Situation sah das dann so aus, dass ich ca. 8 Stunden damit beschäftigt&lt;br /&gt;
war, alle Datenbanken meiner Kunden umzustellen, was enorm händische Arbeit&lt;br /&gt;
erforderte. &lt;br /&gt;
&lt;br /&gt;
Im Ist-Zustand war es nun auch so, dass mittels phpMyAdmin logischerweise&lt;br /&gt;
alle Umlaute kaputt angezeigt wurde, und man nicht oder nur mit hohem manuellen&lt;br /&gt;
Aufwand direkt die Daten bearbeiten konnte.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight:bold"&gt;Ausgangssituation&lt;/span&gt;&lt;br /&gt;
Datenbank mit latin1 als Standardcharset, alle Tabellen latin1, und UTF-8 Daten darin gespeichert.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight:bold"&gt;Ziel&lt;/span&gt;&lt;br /&gt;
Datenbank &amp;amp; Tabellen UTF-8, und alle Inhalte UTF-8&lt;br /&gt;
Ich habe mich für utf8_general_ci entschieden, der unterschied zu utf8_unicode_ci liegt nur in&lt;br /&gt;
der Abhandlung von Sortierreihenfolgen. Dies kann man aber im Detail dem MySQL Manual entnehmen.&lt;br /&gt;
&lt;br /&gt;
1.) Datenbank Backup erstellen&lt;br /&gt;
Gehen wir einfach mal auf nummer sicher, um die Daten auch sicher nicht&lt;br /&gt;
endgültig zu zerstören.&lt;br /&gt;
&lt;br /&gt;
2.) Umwandeln aller Tabellen voll automatisch, und davon sollen auch alle&lt;br /&gt;
Text und Varchar Felder umgewandelt werden. Manch einer wird hier noch anpassungen&lt;br /&gt;
vornehmen müssen, da ich keine Char Felder umwandle, da die nicht benötigt&lt;br /&gt;
werden. ACHTUNG! Das Script basiert wie alle meine Code Snippets auf adodb,&lt;br /&gt;
kann aber Problemlos auf die von MySQL zur Verfügung stehenden Funktionen &lt;br /&gt;
portiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;&amp;#60;?php&lt;br /&gt;
	//&amp;#160;fetch&amp;#160;all&amp;#160;tables&lt;br /&gt;
	$data&amp;#160;=&amp;#160;$cfg&amp;#91;'db'&amp;#93;-&amp;#62;pExecute&amp;#40;"SHOW&lt;br /&gt;
									TABLES"&amp;#41;;&lt;br /&gt;
	while&amp;#40;$row&amp;#160;=&amp;#160;$data-&amp;#62;FetchRow&amp;#40;&amp;#41;&amp;#41;&lt;br /&gt;
	{&lt;br /&gt;
		$sres&amp;#160;=&amp;#160;$cfg&amp;#91;'db'&amp;#93;-&amp;#62;pExecute&amp;#40;"DESCRIBE&amp;#160;".&amp;#40;$row&amp;#91;0&amp;#93;&amp;#41;&amp;#41;;&lt;br /&gt;
		while&amp;#40;&amp;#160;$column&amp;#160;=&amp;#160;$sres-&amp;#62;FetchRow&amp;#40;&amp;#41;&amp;#41;&lt;br /&gt;
		{&lt;br /&gt;
			//&amp;#160;if&amp;#160;column&amp;#160;is&amp;#160;text&amp;#160;or&amp;#160;varchar,&amp;#160;convert&lt;br /&gt;
			if&amp;#40;strpos&amp;#40;$column&amp;#91;'Type'&amp;#93;,'text'&amp;#41;!==false&amp;#160;||&amp;#160;strpos&amp;#40;$column&amp;#91;'Type'&amp;#93;,'char'&amp;#41;!==false&lt;br /&gt;
				||&amp;#160;strpos&amp;#40;$column&amp;#91;'Type'&amp;#93;,'varchar'&amp;#41;!==false&amp;#41;&lt;br /&gt;
			{&lt;br /&gt;
				$cfg&amp;#91;'db'&amp;#93;-&amp;#62;Execute&amp;#40;"ALTER&amp;#160;TABLE&amp;#160;".&amp;#40;$row&amp;#91;0&amp;#93;&amp;#41;."&amp;#160;CHANGE&amp;#160;".&amp;#40;$column&amp;#91;'Field'&amp;#93;&amp;#41;."&amp;#160;".&amp;#40;$column&amp;#91;'Field'&amp;#93;&amp;#41;."&amp;#160;".&amp;#40;$column&amp;#91;'Type'&amp;#93;&amp;#41;."&amp;#160;CHARACTER&amp;#160;SET&amp;#160;utf8&amp;#160;COLLATE&amp;#160;utf8_general_ci&amp;#160;NOT&amp;#160;NULL"&amp;#41;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		//&amp;#160;confert&amp;#160;now&amp;#160;also&amp;#160;full&amp;#160;table&lt;br /&gt;
		$cfg&amp;#91;'db'&amp;#93;-&amp;#62;Execute&amp;#40;"ALTER&amp;#160;TABLE&amp;#160;".$row&amp;#91;0&amp;#93;."&amp;#160;DEFAULT&amp;#160;CHARACTER&amp;#160;SET&amp;#160;utf8&amp;#160;COLLATE&amp;#160;utf8_general_ci"&amp;#41;;&lt;br /&gt;
	}&lt;br /&gt;
?&amp;#62;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
3.) Manuelles Umwandeln der Datenbank&lt;br /&gt;
Ich habe mich dazu entschieden die eigentliche Datenbank händisch umzuwandeln,&lt;br /&gt;
da ich mich eh mit der Datenbank verbinden musste. Dazu habe ich dann folgendes&lt;br /&gt;
SQL Statement eingegebn&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;ALTER&amp;#160;DATABASE&amp;#160;`dbname`&amp;#160;DEFAULT&amp;#160;CHARACTER&amp;#160;SET&amp;#160;utf8&amp;#160;COLLATE&amp;#160;utf8_general_ci&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
4.) Exportieren der Daten&lt;br /&gt;
Nun werden die Daten der kompletten Datenbank exportiert, nicht aber die &lt;br /&gt;
Struktur. Dies wird für die meisten am besten mittels einer grafischen Oberfläche&lt;br /&gt;
wie phpMyAdmin erledigt. Hier kann man dies mit weigen Mausklicks erreichen.&lt;br /&gt;
&lt;br /&gt;
5.) Umwandeln des Datendumps&lt;br /&gt;
Nun wandeln wir einfach noch die "kaputten Zeichen" zurück in UTF8.&lt;br /&gt;
In meinem Fall und in den meisten wird folgendes Script hinreichend sein.&lt;br /&gt;
Dazu muss eine Datei data.sql im gleichen Verzeichnis wie das eigentliche&lt;br /&gt;
PHP Skript sein.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;&amp;#60;?php&lt;br /&gt;
$str=file_get_contents&amp;#40;'data.sql'&amp;#41;;&lt;br /&gt;
&lt;br /&gt;
$bad_char=array&amp;#40;"Ã¤","Ã¶","Ã¼","Ã„","Ã–","Ãœ","ÃŸ"&amp;#41;;&lt;br /&gt;
$right=array&amp;#40;'ä','ö','ü','Ä','Ö','Ü','ß'&amp;#41;;&lt;br /&gt;
&lt;br /&gt;
$bla=str_replace&amp;#40;$bad_char,$right,$str&amp;#41;;&lt;br /&gt;
&lt;br /&gt;
echo&amp;#160;$bla;&lt;br /&gt;
&lt;br /&gt;
?&amp;#62;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
6.) Abschließende Arbeiten&lt;br /&gt;
Um die ganze Aktion abzuschließen, muss nur noch die Datenbank geleert werden,&lt;br /&gt;
un der neue Dump eingelesen werden. Dann sollte man die Umlaute alle&lt;br /&gt;
im entsprechenden Format in der Datenbank haben. &lt;br /&gt;
&lt;br /&gt;
Nun werden einige aber sicher zerstörte Umlaute in der Ausgabe haben,&lt;br /&gt;
und sich wundern warum. Dies liegt an der MySQL Verbindung die einen&lt;br /&gt;
Befehl zu beginn benötigt um UTF8 sauber zu behandeln.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;$cfg&amp;#91;'db'&amp;#93;-&amp;#62;Execute&amp;#40;"SET&amp;#160;names&amp;#160;utf8"&amp;#41;;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Nun sollte es endlich geschafft sein, und man sollte sich nun hoffentlich&lt;br /&gt;
wieder wichtigeren Dingen widmen können &lt;img src="http://peter-rehm.de/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /&gt;&lt;br /&gt;
&lt;br /&gt;
Achja, heikel ist dann auch das string handling an manchen stellen, daher sollte man auf&lt;br /&gt;
die mb_* funktionen von PHP zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 16 Aug 2007 02:38:50 +0200</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2007/08/16/194/</guid>
    <category>php</category>
<category>programmierung</category>
<category>utf8</category>

</item>
<item>
    <title>Zusammenhängende Formularfelder - Steuern des aktiven Feldes mit JS</title>
    <link>http://peter-rehm.de/2007/08/16/Zusammenhaengende-Formularfelder-Steuern-des-aktiven-Feldes-mit-JS/</link>
    
    <comments>http://peter-rehm.de/2007/08/16/Zusammenhaengende-Formularfelder-Steuern-des-aktiven-Feldes-mit-JS/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=193</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=193</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    Möchte man z.b. ausweisdaten, seriennummern oder ähnliches per HTML&lt;br /&gt;
Formular abfragen, möchte man es vielleicht erreichen, dass der Cursor&lt;br /&gt;
direkt von Feld zu Feld springt, nachdem die ausreichende Anzahl Zeichen&lt;br /&gt;
eingegeben wurde. Dies kann einfach mittels JavaScript erreicht werden.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;&amp;#60;script&amp;#160;type="text/javascript"&amp;#62;&lt;br /&gt;
&amp;#60;!--&lt;br /&gt;
function&amp;#160;skip_field&amp;#40;testid,length,next&amp;#41;&lt;br /&gt;
{&lt;br /&gt;
	var&amp;#160;doc=document.getElementById&amp;#40;testid&amp;#41;;&lt;br /&gt;
	if&amp;#40;doc.value.length&amp;#62;=length&amp;#41;&lt;br /&gt;
	{&lt;br /&gt;
		document.test.elements&amp;#91;next&amp;#93;.focus&amp;#40;&amp;#41;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
//--&amp;#62;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 16 Aug 2007 02:38:03 +0200</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2007/08/16/193/</guid>
    <category>ausweisdaten</category>
<category>javascript</category>

</item>
<item>
    <title>Dateien im Filemenager vom FCK Editor löschen</title>
    <link>http://peter-rehm.de/2007/08/02/Dateien-im-Filemenager-vom-FCK-Editor-loeschen/</link>
            <category>Programmierung</category>
    
    <comments>http://peter-rehm.de/2007/08/02/Dateien-im-Filemenager-vom-FCK-Editor-loeschen/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=192</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=192</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    Als ich heute gefragt wurde ob der FCKedit auch das Löschen von Dateien&lt;br /&gt;
ermöglicht war ich ganz erstaunt, dass er das nicht kann, und hab ihn dann&lt;br /&gt;
gleich in meinen Sourcen anhand der Erläuterungen von &lt;a href="http://www.bram.us/2006/10/18/my-tinymce-file-management-part-2-tinyfck-with-delete-option/"&gt;Bramus&lt;/a&gt;&lt;br /&gt;
ergänzt. Da sich allerdings einige Kleinigkeiten verändert haben, wollte ich &lt;br /&gt;
die einzelnen Schritte noch einmal auflisten.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterungen basieren fast komplett auf den Erklärungen von Bramus,&lt;br /&gt;
der dies in seinem Blog alles erwähnt. Danke hierfür.&lt;br /&gt;
&lt;br /&gt;
1.) Ablegen eines entsprechenden ICONS in &lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;editor/filemanager/browser/default/images/delete.gif&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
2.)  Anpassen der Datei frmresourceslist.html&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;editor/filemanager/browser/default/frmresourceslist.html&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Suchen der Zeile:&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;	var&amp;#160;sLink&amp;#160;=&amp;#160;'&amp;#60;a&amp;#160;href="#"&amp;#160;onclick="OpenFile&amp;#40;''&amp;#160;+&amp;#160;fileUrl&amp;#160;+&amp;#160;''&amp;#41;;return&amp;#160;false;"&amp;#62;'&amp;#160;;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Danach folgende Zeile einfügen.&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//&amp;#160;Added&amp;#160;by&amp;#160;Bramus!&lt;br /&gt;
	var&amp;#160;dLink&amp;#160;=&amp;#160;'&amp;#60;a&amp;#160;href="#"&amp;#160;title="Delete&amp;#160;file"&amp;#160;onclick="DeleteFile&amp;#40;''&amp;#160;+&amp;#160;escape&amp;#40;fileName&amp;#41;&amp;#160;+&amp;#160;''&amp;#41;;return&amp;#160;false;"&amp;#62;'&amp;#160;; &amp;#160; &amp;#160;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Dann folgenden Block:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;	return&amp;#160;'&amp;#60;tr&amp;#62;'&amp;#160;+&lt;br /&gt;
			'&amp;#60;td&amp;#160;width="16"&amp;#62;'&amp;#160;+&lt;br /&gt;
				sLink&amp;#160;+&amp;#160;&lt;br /&gt;
				'&amp;#60;img&amp;#160;alt=""&amp;#160;src="images/icons/'&amp;#160;+&amp;#160;sIcon&amp;#160;+&amp;#160;'.gif"&amp;#160;width="16"&amp;#160;height="16"&amp;#160;border="0"&amp;#62;&amp;#60;/a&amp;#62;'&amp;#160;+&lt;br /&gt;
			'&amp;#60;/td&amp;#62;&amp;#60;td&amp;#62;&amp;amp;nbsp;'&amp;#160;+&lt;br /&gt;
				sLink&amp;#160;+&amp;#160;&lt;br /&gt;
				fileName&amp;#160;+&amp;#160;&lt;br /&gt;
				'&amp;#60;/a&amp;#62;'&amp;#160;+&lt;br /&gt;
			'&amp;#60;/td&amp;#62;&amp;#60;td&amp;#160;align="right"&amp;#160;nowrap&amp;#62;&amp;amp;nbsp;'&amp;#160;+&lt;br /&gt;
				fileSize&amp;#160;+&amp;#160;&lt;br /&gt;
				'&amp;#160;KB'&amp;#160;+&lt;br /&gt;
		'&amp;#60;/td&amp;#62;&amp;#60;/tr&amp;#62;'&amp;#160;;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
durch diesen ersetzen. Hier wird das Bild dann eingefügt.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;	return&amp;#160;'&amp;#60;tr&amp;#62;'&amp;#160;+&lt;br /&gt;
			'&amp;#60;td&amp;#160;width="35"&amp;#62;'&amp;#160;+&lt;br /&gt;
				sLink&amp;#160;+&amp;#160;&lt;br /&gt;
				'&amp;#60;img&amp;#160;alt=""&amp;#160;src="images/icons/'&amp;#160;+&amp;#160;sIcon&amp;#160;+&amp;#160;'.gif"&amp;#160;width="16"&amp;#160;height="16"&amp;#160;border="0"&amp;#62;&amp;#60;/a&amp;#62;'&amp;#160;+&lt;br /&gt;
				dLink&amp;#160;+&amp;#160;'&amp;#60;img&amp;#160;alt=""&amp;#160;src="images/delete.gif"&amp;#160;width="16"&amp;#160;height="16"&amp;#160;border="0"&amp;#62;&amp;#60;/a&amp;#62;'&amp;#160;+&lt;br /&gt;
			'&amp;#60;/td&amp;#62;&amp;#60;td&amp;#62;&amp;amp;nbsp;'&amp;#160;+&lt;br /&gt;
				sLink&amp;#160;+&amp;#160;&lt;br /&gt;
				fileName&amp;#160;+&amp;#160;&lt;br /&gt;
				'&amp;#60;/a&amp;#62;'&amp;#160;+&lt;br /&gt;
			'&amp;#60;/td&amp;#62;&amp;#60;td&amp;#160;align="right"&amp;#160;nowrap&amp;#62;&amp;amp;nbsp;'&amp;#160;+&lt;br /&gt;
				fileSize&amp;#160;+&amp;#160;&lt;br /&gt;
				'&amp;#160;KB'&amp;#160;+&lt;br /&gt;
		'&amp;#60;/td&amp;#62;&amp;#60;/tr&amp;#62;'&amp;#160;;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Zuletzt in der Datei bevor &lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;window.onload&amp;#160;=&amp;#160;function&amp;#40;&amp;#41;&lt;br /&gt;
{&lt;br /&gt;
	window.top.IsLoadedResourcesList&amp;#160;=&amp;#160;true&amp;#160;;&lt;br /&gt;
}&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
folgenden Code Block einfügen&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;//&amp;#160;Added&amp;#160;by&amp;#160;Bramus!&lt;br /&gt;
function&amp;#160;DeleteFile&amp;#40;&amp;#160;fileName,&amp;#160;fileUrl&amp;#160;&amp;#41;&amp;#160;{&lt;br /&gt;
	if&amp;#160;&amp;#40;confirm&amp;#40;'Are&amp;#160;you&amp;#160;sure&amp;#160;you&amp;#160;wish&amp;#160;to&amp;#160;delete&amp;#160;'&amp;#160;+&amp;#160;unescape&amp;#40;fileName&amp;#41;&amp;#160;+&amp;#160;'?'&amp;#41;&amp;#41;&amp;#160;{&lt;br /&gt;
		oConnector.SendCommand&amp;#40;&amp;#160;'DeleteFile',&amp;#160;"FileName="&amp;#160;+&amp;#160;fileName,&amp;#160;DeleteFileCallBack&amp;#160;&amp;#41;&amp;#160;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&amp;#160;Added&amp;#160;by&amp;#160;Bramus!&lt;br /&gt;
function&amp;#160;DeleteFileCallBack&amp;#160;&amp;#40;&amp;#160;fckXml&amp;#160;&amp;#41;&amp;#160;{&lt;br /&gt;
	var&amp;#160;oNodes&amp;#160;=&amp;#160;fckXml.SelectNodes&amp;#40;&amp;#160;'Connector/Error'&amp;#160;&amp;#41;;&lt;br /&gt;
	if&amp;#160;&amp;#40;oNodes!=null&amp;#160;&amp;amp;&amp;amp;&amp;#160;oNodes.length&amp;#62;0&amp;#41;&amp;#160;{&lt;br /&gt;
		var&amp;#160;errNo&amp;#160;=&amp;#160;parseInt&amp;#40;oNodes&amp;#91;0&amp;#93;.attributes.getNamedItem&amp;#40;'number'&amp;#41;.value&amp;#41;&amp;#160;;&lt;br /&gt;
		switch&amp;#160;&amp;#40;errNo&amp;#41;&amp;#160;{&lt;br /&gt;
			case&amp;#160;0&amp;#160;&amp;#58;&lt;br /&gt;
				break;&lt;br /&gt;
			case&amp;#160;102&amp;#160;&amp;#58;&lt;br /&gt;
			case&amp;#160;103&amp;#160;&amp;#58;&lt;br /&gt;
				alert&amp;#40;oNodes&amp;#91;0&amp;#93;.attributes.getNamedItem&amp;#40;'originalDescription'&amp;#41;.value&amp;#41;;&lt;br /&gt;
				break;&lt;br /&gt;
			default&amp;#58;&lt;br /&gt;
			alert&amp;#40;'DFi&amp;#58;&amp;#160;Invalid&amp;#160;XML&amp;#160;response&amp;#160;from&amp;#160;connector..'&amp;#41;;&lt;br /&gt;
		}	 &amp;#160; &amp;#160; &amp;#160; &lt;br /&gt;
	}&amp;#160;else&amp;#160;{&lt;br /&gt;
		alert&amp;#40;'DFi&amp;#58;&amp;#160;Invalid&amp;#160;XML&amp;#160;response&amp;#160;from&amp;#160;connector.'&amp;#41;;&lt;br /&gt;
	}&lt;br /&gt;
	Refresh&amp;#40;&amp;#41;;&lt;br /&gt;
}&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
3.) Nun geht es an die PHP Funktionen in der commands.php&lt;br /&gt;
&lt;br /&gt;
In der folgenden Datei&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;editor/filemanager/browser/default/conmectors/commands.php&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
muss nur der folgende Code am ENDE vor den ?&gt; eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;function&amp;#160;DeleteFile&amp;#40;$resourceType,&amp;#160;$currentFolder&amp;#41;&amp;#160;{&lt;br /&gt;
	$sErrorNumber&amp;#160;=&amp;#160;'0'&amp;#160;;&lt;br /&gt;
	$sErrorMsg&amp;#160;=&amp;#160;''&amp;#160;;&lt;br /&gt;
&lt;br /&gt;
	if&amp;#160;&amp;#40;&amp;#160;isset&amp;#40;&amp;#160;$_GET&amp;#91;'FileName'&amp;#93;&amp;#160;&amp;#41;&amp;#160;&amp;#41;&amp;#160;{&lt;br /&gt;
&lt;br /&gt;
		//&amp;#160;Map&amp;#160;the&amp;#160;virtual&amp;#160;path&amp;#160;to&amp;#160;the&amp;#160;local&amp;#160;server&amp;#160;path.&lt;br /&gt;
		$sServerDir&amp;#160;=&amp;#160;ServerMapFolder&amp;#40;&amp;#160;$resourceType,&amp;#160;$currentFolder&amp;#160;&amp;#41;&amp;#160;;&lt;br /&gt;
&lt;br /&gt;
		$sFileName&amp;#160;=&amp;#160;$_GET&amp;#91;'FileName'&amp;#93;&amp;#160;;&lt;br /&gt;
&lt;br /&gt;
		if&amp;#160;&amp;#40;&amp;#160;strpos&amp;#40;&amp;#160;$sFileName,&amp;#160;'..'&amp;#160;&amp;#41;&amp;#160;!==&amp;#160;FALSE&amp;#160;&amp;#41;&amp;#160;{&lt;br /&gt;
			$sErrorNumber&amp;#160;=&amp;#160;'102'&amp;#160;;&amp;#160;//&amp;#160;Invalid&amp;#160;file&amp;#160;name.&lt;br /&gt;
			$sErrorMsg&amp;#160;=&amp;#160;'Invalid&amp;#160;file&amp;#160;name';&lt;br /&gt;
		}&amp;#160;else&amp;#160;{&lt;br /&gt;
			if&amp;#160;&amp;#40;&amp;#160;@unlink&amp;#40;$sServerDir.$sFileName&amp;#41;&amp;#160;&amp;#41;&amp;#160;{&lt;br /&gt;
				$sErrorNumber&amp;#160;=&amp;#160;'0'&amp;#160;;&amp;#160;//&amp;#160;deleted&lt;br /&gt;
			}&amp;#160;else&amp;#160;{&lt;br /&gt;
				$sErrorNumber&amp;#160;=&amp;#160;'103'&amp;#160;;&amp;#160;//&amp;#160;not&amp;#160;deleted&lt;br /&gt;
				$sErrorMsg&amp;#160;=&amp;#160;'Could&amp;#160;not&amp;#160;delete&amp;#160;file&amp;#160;'.$sServerDir.$sFileName;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&amp;#160;else&amp;#160;{&lt;br /&gt;
		$sErrorNumber&amp;#160;=&amp;#160;'102'&amp;#160;;&amp;#160;//&amp;#160;no&amp;#160;file&amp;#160;set&lt;br /&gt;
		$sErrorMsg&amp;#160;=&amp;#160;'No&amp;#160;file&amp;#160;specified';&lt;br /&gt;
	}&lt;br /&gt;
	 &amp;#160; &lt;br /&gt;
	//&amp;#160;Create&amp;#160;the&amp;#160;"Error"&amp;#160;node.&lt;br /&gt;
	echo&amp;#160;'&amp;#60;Error&amp;#160;number="'&amp;#160;.&amp;#160;$sErrorNumber&amp;#160;.&amp;#160;'"&amp;#160;originalDescription="'&amp;#160;.&amp;#160;ConvertToXmlAttribute&amp;#40;&amp;#160;$sErrorMsg&amp;#160;&amp;#41;&amp;#160;.&amp;#160;'"&amp;#160;/&amp;#62;'&amp;#160;;&lt;br /&gt;
}&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
4.) Anpassen des Connectors&lt;br /&gt;
&lt;br /&gt;
Im Connector muss noch das Switch Statement angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;editor/filemanager/browser/default/conmectors/commands.php&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Sollte nur um folgendes ergänzt werden:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;		case&amp;#160;'DeleteFile'&amp;#160;&amp;#58;&lt;br /&gt;
			DeleteFile&amp;#40;&amp;#160;$sResourceType,&amp;#160;$sCurrentFolder&amp;#160;&amp;#41;&amp;#160;;&lt;br /&gt;
			break&amp;#160;;	&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
In der 2.4.3 sieht das ganze dann so aus&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;	//&amp;#160;Execute&amp;#160;the&amp;#160;required&amp;#160;command.&lt;br /&gt;
	switch&amp;#160;&amp;#40;&amp;#160;$sCommand&amp;#160;&amp;#41;&lt;br /&gt;
	{&lt;br /&gt;
		case&amp;#160;'GetFolders'&amp;#160;&amp;#58;&lt;br /&gt;
			GetFolders&amp;#40;&amp;#160;$sResourceType,&amp;#160;$sCurrentFolder&amp;#160;&amp;#41;&amp;#160;;&lt;br /&gt;
			break&amp;#160;;&lt;br /&gt;
		case&amp;#160;'GetFoldersAndFiles'&amp;#160;&amp;#58;&lt;br /&gt;
			GetFoldersAndFiles&amp;#40;&amp;#160;$sResourceType,&amp;#160;$sCurrentFolder&amp;#160;&amp;#41;&amp;#160;;&lt;br /&gt;
			break&amp;#160;;&lt;br /&gt;
		case&amp;#160;'CreateFolder'&amp;#160;&amp;#58;&lt;br /&gt;
			CreateFolder&amp;#40;&amp;#160;$sResourceType,&amp;#160;$sCurrentFolder&amp;#160;&amp;#41;&amp;#160;;&lt;br /&gt;
			break&amp;#160;;&lt;br /&gt;
			&lt;br /&gt;
		case&amp;#160;'DeleteFile'&amp;#160;&amp;#58;&lt;br /&gt;
			DeleteFile&amp;#40;&amp;#160;$sResourceType,&amp;#160;$sCurrentFolder&amp;#160;&amp;#41;&amp;#160;;&lt;br /&gt;
			break&amp;#160;;			&lt;br /&gt;
			&lt;br /&gt;
	}&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Viel Spaß damit! 
    </content:encoded>

    <pubDate>Thu, 02 Aug 2007 22:51:33 +0200</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2007/08/02/192/</guid>
    <category>fck</category>

</item>
<item>
    <title>MacBook Pro Daten unwiederruflich löschen</title>
    <link>http://peter-rehm.de/2007/07/22/MacBook-Pro-Daten-unwiederruflich-loeschen/</link>
            <category>Apple</category>
    
    <comments>http://peter-rehm.de/2007/07/22/MacBook-Pro-Daten-unwiederruflich-loeschen/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=191</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=191</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    Wenn man einen Laptop abgibt, ist man immer wieder vor dem Problem,&lt;br /&gt;
dass alle Daten unbedingt weg sein sollten, wenn der Laptop dann weg ist.&lt;br /&gt;
&lt;br /&gt;
Apple hat hier eine einfach Lösung Parat. Einfach von der mitgelieferten CD &lt;br /&gt;
booten (Beim starten die [alt] Taste gedrückt halten) und dann das Festplatten-&lt;br /&gt;
Dienstprogramm starten, das man unter Dienstprogramme im Menü findet.&lt;br /&gt;
&lt;br /&gt;
Die gewünschte Partition/Festplatte auswählen, und dann auf das Register Löschen&lt;br /&gt;
klicken. Unter Sicherheitsoptionen kann man nun wählen, wie man die Platte&lt;br /&gt;
löschen möchte.&lt;br /&gt;
&lt;br /&gt;
Ich hab immer die 7-Fache Löschung bisher beorzugt.&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sun, 22 Jul 2007 18:02:15 +0200</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2007/07/22/191/</guid>
    <category>formattieren</category>
<category>macbook pro</category>

</item>
<item>
    <title>$Id Zeilen mit Subversion</title>
    <link>http://peter-rehm.de/2007/07/08/Id-Zeilen-mit-Subversion/</link>
            <category>Programmierung</category>
    
    <comments>http://peter-rehm.de/2007/07/08/Id-Zeilen-mit-Subversion/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=190</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=190</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    In den meisten Quellcodes die man so liest ist eine Id Zeile am Dateianfang zu finden,&lt;br /&gt;
die ungefähr so aussieht:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;/&amp;#42;&amp;#160;$Id&amp;#58;&amp;#160;test.cpp&amp;#160;3&amp;#160;2007-07-08&amp;#160;12&amp;#58;28&amp;#58;37Z&amp;#160;peterrehm&amp;#160;$&amp;#160;&amp;#42;/&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Dies bedeutet dass man die datei test.cpp sieht, zuletzt geändert in Revision 3 um 12:28 am 08.07.2007 von dem Benutzer peterrehm.&lt;br /&gt;
Dies ermöglicht einen schnellen Überblick über die Datei.&lt;br /&gt;
Die Information wird von Subversion selbst verwaltet.&lt;br /&gt;
Damit Subversion das tut, sind ein paar kleine Einstellungen notwendig.&lt;br /&gt;
&lt;br /&gt;
1. Aktivieren der Keywors für die gewünschten Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;svn&amp;#160;propset&amp;#160;svn&amp;#58;keywords&amp;#160;"Id"&amp;#160;test.cpp&amp;#160;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
2. Definieren eines Platzhalters in der Quelldatei&lt;br /&gt;
&lt;br /&gt;
Dazu einfach einen Code wie folgt in die Datei einfügen, je nach&lt;br /&gt;
Programmiersprache eben in entsprechender Kommentierung.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;/&amp;#42;&amp;#160;$Id$&amp;#160;&amp;#42;/&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
3. Datei committen&lt;br /&gt;
&lt;br /&gt;
Mit dem nächsten Commit wird dann automatisch die eingefügt Zeile ersetzt.&lt;br /&gt;
Dies wird auch bei jedem weiteren Commit passieren. Die Id Zeile ist aber nicht&lt;br /&gt;
für SVN diffs relevant, auch wenn man selbst versuchen sollte die zu ändern,&lt;br /&gt;
also wenn man das Datum ändert, wird das nicht mit übertragen.&lt;br /&gt;
&lt;br /&gt;
Die Dateiinformation bleibt solange bestehen bis man eine neuere Version committet,&lt;br /&gt;
oder ein anderer Benutzer des SVN Repositorys das übernimmt. Allerdings wird die&lt;br /&gt;
Zeile dann auch erst mit dem nächsten update aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Als letzte Information bleibt vielleicht noch zu nennen, dass ein $Log$ Keyword von&lt;br /&gt;
den SVN Entwicklern ausdrücklich nicht implementiert werden. Darauf wird in der&lt;br /&gt;
&lt;a href="http://subversion.tigris.org/faq.html#log-in-source"&gt;FAQ&lt;/a&gt; verwiesen.&lt;br /&gt;
&lt;br /&gt;
Update: Fehler wurde behoben, Danke Sebastian!&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sun, 08 Jul 2007 16:44:04 +0200</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2007/07/08/190/</guid>
    <category>subversion</category>

</item>
<item>
    <title>gängige PHP Fehler - Tipps &amp; Tricks</title>
    <link>http://peter-rehm.de/2007/06/07/gaengige-PHP-Fehler-Tipps-Tricks/</link>
            <category>PHP</category>
    
    <comments>http://peter-rehm.de/2007/06/07/gaengige-PHP-Fehler-Tipps-Tricks/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=189</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=189</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    Neulich wurde ich gebeten, mir "kurz" ein kleines PHP Skript anzusehen,&lt;br /&gt;
und bei der Fehlersuche zu helfen. Dabei ist mit allerdings sehr schnell&lt;br /&gt;
aufgefallen dass einige grundlegende Unschönheiten zu finden sind.&lt;br /&gt;
&lt;br /&gt;
Daher will ich anhand des mir zugesandten Codes einige Tipps zur PHP Entwicklung&lt;br /&gt;
geben.&lt;br /&gt;
&lt;br /&gt;
&lt;ol style="list-style:none;"&gt;&lt;br /&gt;
	&lt;li&gt;&lt;br /&gt;
		&lt;strong&gt;register_globals&lt;/strong&gt;&lt;br /&gt;
		&lt;p&gt;Ein immer wieder auftrendes Problem ist die register globals Geschichte,&lt;br /&gt;
		da PHP einem lange Zeit die Freiheit ließ, auf die POST Variable 'test' auf&lt;br /&gt;
		zwei Arten zuzugreifen. Entweder als $test, oder per $_POST['test'].&lt;br /&gt;
		Nutzt man erstere Variante kann man sich nie sicher sein, woher der&lt;br /&gt;
		Inhalt der Variablen eigentlich stammt, und man vergisst leicht einen&lt;br /&gt;
		vielleicht gefährlichen Inhalt zu escapen. Sofern die Möglichkeit besteht&lt;br /&gt;
		ist es sogar empfehlenswert register_globals auszuschalten. Aber man&lt;br /&gt;
		sollte es sich zumindest immer angewöhnen, auf POST/GET/REQUEST variablen&lt;br /&gt;
		immer mittels den dafür vorgesehenen superglobalen Arrays zuzugreifen.&lt;/p&gt;&lt;br /&gt;
	&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;&lt;br /&gt;
		&lt;strong&gt;SQL Injections&lt;/strong&gt;&lt;br /&gt;
		&lt;p&gt;Eine große Gefahr stellen vor allem im Zusammenhang mit register_globals&lt;br /&gt;
		die SQL Injections dar, über die nicht gewollter SQL Code eingeschleußt &lt;br /&gt;
		werden kann. Um hier nicht auszuschweifen sollte man sich immer angewöhnen,&lt;br /&gt;
		Inhalt der manipuliert sein kann, zu escapen. Eine einfach Möglichkeit&lt;br /&gt;
		hierzu bietet mysql_real_escape_string(). Man sollte sich wenigstens &lt;br /&gt;
		angewöhnen den Inhalt immer zu escapen. Es empfiehlt sich auch eine&lt;br /&gt;
		eigene Funktion dafür zu nehmen, dass man später auch noch andere &lt;br /&gt;
		Verfahren einsetzen könnte, indem man nur eine Funktion überarbeiten &lt;br /&gt;
		muss. Hier ein Beispiel:&lt;/p&gt;&lt;br /&gt;
		&lt;br /&gt;
		&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;/&amp;#42;&amp;#42;&lt;br /&gt;
&amp;#42;	easy&amp;#160;accesible&amp;#160;handle&amp;#160;to&amp;#160;escape&amp;#160;all&amp;#160;db&amp;#160;strings&lt;br /&gt;
&amp;#42;	@param&amp;#160;string&amp;#160;$string&amp;#160;string&amp;#160;which&amp;#160;should&amp;#160;be&amp;#160;escaped&amp;#160;to&amp;#160;be&amp;#160;put&amp;#160;into&amp;#160;an&amp;#160;sql&amp;#160;statement&lt;br /&gt;
&amp;#42;	@return&amp;#160;string&amp;#160;returns&amp;#160;the&amp;#160;escaped&amp;#160;string&lt;br /&gt;
&amp;#42;/&lt;br /&gt;
function&amp;#160;escapeDB&amp;#40;$string&amp;#41;&lt;br /&gt;
{&lt;br /&gt;
	global&amp;#160;$run;&lt;br /&gt;
	if&amp;#40;is_numeric&amp;#40;$string&amp;#41;&amp;#41;&lt;br /&gt;
	{&lt;br /&gt;
		return&amp;#160;$string;&lt;br /&gt;
	}&amp;#160;else&amp;#160;{&lt;br /&gt;
		return&amp;#160;$run&amp;#91;'db'&amp;#93;-&amp;#62;qstr&amp;#40;$string,get_magic_quotes_gpc&amp;#40;&amp;#41;&amp;#41;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
		&lt;/div&gt;&lt;br /&gt;
	&lt;/li&gt;	&lt;br /&gt;
	&lt;li&gt;&lt;br /&gt;
		&lt;strong&gt;Variablen&lt;/strong&gt;&lt;br /&gt;
		&lt;p&gt;Man sollte Variablen immer klein schreiben, und Umlaute sollten nicht&lt;br /&gt;
		eingesetzt werden. Es ist meist auch recht angenehm die äquivalente englische&lt;br /&gt;
		Bezeichnung für Variablen zu verwenden. EIn unschönes Beispiel:&lt;/p&gt;&lt;br /&gt;
		&lt;br /&gt;
		&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;		&amp;#160;'$Arbeitsverhaeltnis',&amp;#160;'$Kündigungsfrist',&amp;#160;'$Sonstiges'&lt;br /&gt;
		&lt;/div&gt;&lt;br /&gt;
	&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;&lt;br /&gt;
		&lt;strong&gt;Fehlermeldungen&lt;/strong&gt;&lt;br /&gt;
		&lt;p&gt;Fehlermeldungen sollte man am besten immer beherzigen. PHP kennt verschiedene&lt;br /&gt;
		Modi, je nach "wichtigkeit" eines Fehlers. Meist werden die NOTICE's&lt;br /&gt;
		ausgeblendet. Allerdings sind NOTICES oft auch recht hilfreich, &lt;br /&gt;
		da man erkennt wo man z.B. eine noch nicht initialisierte Variable &lt;br /&gt;
		verwendet. Es empfiehlt sich meistens alle Fehlermeldungen anzuzeigen.&lt;br /&gt;
		Die macht man wie folgt:&lt;/p&gt;&lt;br /&gt;
		&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;		error_reporting&amp;#40;E_ALL&amp;#41;;&lt;br /&gt;
		&lt;/div&gt;&lt;br /&gt;
		&lt;p&gt;Vor allem gefährlich ist das manuelle Unterdrücken von Fehlermeldungen&lt;br /&gt;
		mittels dem @ Operator. Diesen sollte man auch nicht einsetzen, da dadurch&lt;br /&gt;
		die Fehlersuche oft erschwert sein kann.&lt;/p&gt;&lt;br /&gt;
	&lt;/li&gt;&lt;br /&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
Dies mal nur als kurze Zusammenfassung. 
    </content:encoded>

    <pubDate>Thu, 07 Jun 2007 15:49:13 +0200</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2007/06/07/189/</guid>
    <category>development</category>
<category>php</category>

</item>
<item>
    <title>Bootcamp - Tastatur und Maus geht nicht mehr</title>
    <link>http://peter-rehm.de/2007/05/28/Bootcamp-Tastatur-und-Maus-geht-nicht-mehr/</link>
            <category>Apple</category>
    
    <comments>http://peter-rehm.de/2007/05/28/Bootcamp-Tastatur-und-Maus-geht-nicht-mehr/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=188</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=188</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    Ich habe heute etwas mit Bootcam unter meinem MacBook gespielt. Alles lief nach Plan nur hatte ich nach der&lt;br /&gt;
Installation der Treiber auf einmal weder Tastatur noch Maus. Das rührt daher, dass man auf keinen Fall eines&lt;br /&gt;
der aufpoppenden Fenster mit der Aufforderung zur Treiberinstallation anrühren sollte.&lt;br /&gt;
&lt;br /&gt;
Sobald man das macht, ist alles dahin &lt;img src="http://peter-rehm.de/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /&gt;&lt;br /&gt;
&lt;br /&gt;
Die Fenster verschwinden automatisch wieder! 
    </content:encoded>

    <pubDate>Mon, 28 May 2007 00:11:05 +0200</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2007/05/28/188/</guid>
    <category>apple</category>
<category>bootcamp</category>
<category>windows</category>

</item>
<item>
    <title>Focus von beliebigen HTML Elementen entfernen</title>
    <link>http://peter-rehm.de/2007/04/30/Focus-von-beliebigen-HTML-Elementen-entfernen/</link>
            <category>Programmierung</category>
    
    <comments>http://peter-rehm.de/2007/04/30/Focus-von-beliebigen-HTML-Elementen-entfernen/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=187</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=187</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    Hat man ein Element geklickt, und dadurch z.B. einen AJAX Request ausgelöst,&lt;br /&gt;
bleibt meist ein Focus auf dem Element. Dies wäre an sich nicht weiter schlimm.&lt;br /&gt;
würde der nicht so übel aussehen!&lt;br /&gt;
&lt;br /&gt;
&lt;img src="images/focus.jpg" alt="focus nach geklicktem element" /&gt;&lt;br /&gt;
&lt;br /&gt;
Diesen Focus kann man einfach mit der JavaScript Methode &lt;strong&gt;blur()&lt;/strong&gt; entfernen.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;&amp;#60;a&amp;#160;href="#bla"&amp;#160;onfocus="this.blur&amp;#40;&amp;#41;"&amp;#62;bla&amp;#60;/a&amp;#62;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
oder wie in meinem Fall mit Prototype:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;$&amp;#40;'element'&amp;#41;.blur&amp;#40;&amp;#41;;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Mon, 30 Apr 2007 22:40:30 +0200</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2007/04/30/187/</guid>
    <category>ajax</category>
<category>html</category>
<category>javascript</category>
<category>webdevelopment</category>

</item>
<item>
    <title>Internet Explorer 6 &amp; 7, Focus auf Input Elemente nach AJAX Request</title>
    <link>http://peter-rehm.de/2007/04/29/Internet-Explorer-6-7,-Focus-auf-Input-Elemente-nach-AJAX-Request/</link>
            <category>Programmierung</category>
    
    <comments>http://peter-rehm.de/2007/04/29/Internet-Explorer-6-7,-Focus-auf-Input-Elemente-nach-AJAX-Request/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=186</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=186</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    Bei einem aktuellen Projekt trat ein seltsames Problem auf.&lt;br /&gt;
In jedem Formular wird auf das erste Feld manuell ein focus() gesetzt,&lt;br /&gt;
dass man sehr benutzerfreundlich durch die Felder tabben kann und&lt;br /&gt;
sofort loslegen kann.&lt;br /&gt;
&lt;br /&gt;
Nachdem ich wie gewohnt zunächst alles in Safari &amp;amp; Firefox entwickelt habe,&lt;br /&gt;
war ich sehr erstaunt, dass das focus() nicht an allen Stellen des Projektes&lt;br /&gt;
zu sehen war. Nach kurzer Zeit habe ich entdeckt, dass der Focus nur bei&lt;br /&gt;
den Seiten nicht angezeigt wird, wo der Inhalt per AJAX nachgeladen wurde.&lt;br /&gt;
&lt;br /&gt;
Es gibt eine sehr einfache wenn auch sehr unschöne Lösung für das Problem.&lt;br /&gt;
Man kann den Focus einfach doppelt aufrufen, das habe ich dann in einer&lt;br /&gt;
Funktion implementiert, um es einfach wieder zu entfernen, wenn eine andere&lt;br /&gt;
Lösung möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="bb-code-title"&gt;CODE:&lt;/div&gt;&lt;div class="bb-code"&gt;function&amp;#160;focus&amp;#40;name&amp;#41;&lt;br /&gt;
{&lt;br /&gt;
	$&amp;#40;name&amp;#41;.focus&amp;#40;&amp;#41;;&lt;br /&gt;
	//&amp;#160;called&amp;#160;focus&amp;#160;twice&amp;#160;due&amp;#160;to&amp;#160;a&amp;#160;bug&amp;#160;with&amp;#160;ie!!!&lt;br /&gt;
	$&amp;#40;name&amp;#41;.focus&amp;#40;&amp;#41;;	&lt;br /&gt;
}&lt;/div&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sun, 29 Apr 2007 15:34:47 +0200</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2007/04/29/186/</guid>
    <category>internet explorer</category>
<category>javascript</category>

</item>
<item>
    <title>Kommentare</title>
    <link>http://peter-rehm.de/2007/04/27/Kommentare/</link>
            <category>Verschiedenes</category>
    
    <comments>http://peter-rehm.de/2007/04/27/Kommentare/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=185</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=185</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    Kommentare sind wieder aktiviert! 
    </content:encoded>

    <pubDate>Fri, 27 Apr 2007 22:46:33 +0200</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2007/04/27/185/</guid>
    
</item>
<item>
    <title>Komische Zeichen in UTF8 aka BOM (Byte order Mark)</title>
    <link>http://peter-rehm.de/2007/04/09/Komische-Zeichen-in-UTF8-aka-BOM-Byte-order-Mark/</link>
            <category>Programmierung</category>
    
    <comments>http://peter-rehm.de/2007/04/09/Komische-Zeichen-in-UTF8-aka-BOM-Byte-order-Mark/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=184</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=184</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    Schon lange hab ich mich über die "komischen" Zeichen geärgert, die der Texteditor meines Vertrauens BBEdit am Anfang jeder UTF-8 Datei eingefügt hat. Ich hab dann sogar andere Texteditoren engesetzt, und irgendwie hatte ich immer das gleiche Problem.&lt;br /&gt;
&lt;br /&gt;
Vor allem war ärgerlich, dass ich damit immer wieder nahezu unbrauchbare Dateien ausgeliefert habe, da der IE z.B. eine CSS Datei mit BOM auch einfach mal so ignorieren kann.&lt;br /&gt;
&lt;br /&gt;
Heute habe ich des Rätsels Lösung gefunden. Eben das besagt BOM. Das Teufelszeug.&lt;br /&gt;
&lt;br /&gt;
BOM = Bytereihenfolge-Markierung und wird dazu verwendet um z.B eine UTF-8 Datei als UTF-8 kodiert zu markieren.&lt;br /&gt;
Dies macht beim Datenaustausch sicher sinn, kann aber bei der Web oder C++ Entwicklung sich als sehr hinderlich erweisen. Die UTF-8-Kodierung des BOM besteht aus der Bytesequenz EF BB BF, die in den ISO-8859-1-Zeichen ï»¿ erscheint.&lt;br /&gt;
&lt;br /&gt;
Ich habe nun in BBEdit UTF-8 ohne BOM eingestellt und werde damit hoffentlich endlich Frieden finden &lt;img src="http://peter-rehm.de/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /&gt; 
    </content:encoded>

    <pubDate>Mon, 09 Apr 2007 22:28:42 +0200</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2007/04/09/184/</guid>
    <category>bbedit</category>
<category>charset</category>
<category>utf8</category>

</item>
<item>
    <title>Home Zone - Automatisches Auswählen von Einstellungen anhand der Umgebung</title>
    <link>http://peter-rehm.de/2007/04/06/Home-Zone-Automatisches-Auswaehlen-von-Einstellungen-anhand-der-Umgebung/</link>
            <category>Apple</category>
    
    <comments>http://peter-rehm.de/2007/04/06/Home-Zone-Automatisches-Auswaehlen-von-Einstellungen-anhand-der-Umgebung/#comments</comments>
    <wfw:comment>http://peter-rehm.de/wfwcomment.php?cid=183</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://peter-rehm.de/rss.php?version=2.0&amp;type=comments&amp;cid=183</wfw:commentRss>
    

    <author>nospam@example.com (Peter Rehm)</author>
    <content:encoded>
    Seitdem ich viel unterwegs bin und täglich zwischen Hochschule und meinem Zuhause hin und her pendle,&lt;br /&gt;
musste ich jeden Tag zwischen 2 Umgebungen wechseln.&lt;br /&gt;
&lt;br /&gt;
Das ist an sich nicht sehr problematisch, aber wenn man dann vergisst den Lautsprecher auszumachen ist&lt;br /&gt;
das eher doof. &lt;br /&gt;
&lt;br /&gt;
Aber ich würde darüber nicht so berichten, wenn es noch keine Lösung geben würde &lt;img src="http://peter-rehm.de/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /&gt;&lt;br /&gt;
Die Lösung heisst Home Zone. Damit kann man einstellen, bei welcher Umgebung welche&lt;br /&gt;
Einstellungen vorgenommen werden sollen. &lt;br /&gt;
&lt;br /&gt;
Man kann bisher folgende Werte einstellen Lassen: Netzwerkumgebung, Lautsprecher an/aus schalten, Eine Datei öffnen,&lt;br /&gt;
iTunes öffnen, Drucker einstellen und vieles mehr. Leider fehlt mir bisher noch das ausschalten&lt;br /&gt;
von Bluetooth.&lt;br /&gt;
&lt;br /&gt;
Homezone bekommt Ihr hier: http://metaquark.de/homezone/ 
    </content:encoded>

    <pubDate>Fri, 06 Apr 2007 20:47:43 +0200</pubDate>
    <guid isPermaLink="false">http://peter-rehm.de/2007/04/06/183/</guid>
    <category>apple</category>
<category>homezone</category>

</item>

</channel>
</rss>
