<?xml version="1.0" encoding="utf-8" ?>

<rss version="0.91" >
<channel>
<title>web/code</title>
<link>http://webcode.lemme.at/</link>
<description>Blog über das Web, PHP, Joomla, Ajax, Javascript, Patterns, ...</description>
<language>de</language>
<image>
        <url>http://webcode.lemme.at/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: web/code - Blog über das Web, PHP, Joomla, Ajax, Javascript, Patterns, ...</title>
        <link>http://webcode.lemme.at/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Sektoid.</title>
    <link>http://webcode.lemme.at/archives/47-Sektoid..html</link>

    <description>
        &lt;object width=&quot;560&quot; height=&quot;340&quot;&gt;&lt;param value=&quot;http://www.youtube.com/v/1ZS8HqOGTbA&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;&quot; name=&quot;movie&quot; /&gt;&lt;param value=&quot;true&quot; name=&quot;allowFullScreen&quot; /&gt;&lt;param value=&quot;always&quot; name=&quot;allowscriptaccess&quot; /&gt;&lt;embed width=&quot;560&quot; height=&quot;340&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; type=&quot;application/x-shockwave-flash&quot; src=&quot;http://www.youtube.com/v/1ZS8HqOGTbA&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;&quot; /&gt;&lt;/object&gt; 
    </description>
</item>
<item>
    <title>How to inject a ManagedBean into a ManagedBean</title>
    <link>http://webcode.lemme.at/archives/46-How-to-inject-a-ManagedBean-into-a-ManagedBean.html</link>

    <description>
        &lt;p&gt;That&#039;s really easy, just use the @ManagedProperty annotation.&lt;/p&gt; 
&lt;p&gt;A Simple Example:&lt;/p&gt; 
&lt;p&gt; We got two managed beans, one for logging into the system and storing the user&#039;s state, and one for using a shopping cart. We got the LoginController &lt;br /&gt;&lt;/p&gt; 
&lt;pre class=&quot;Java&quot; name=&quot;code&quot;&gt;import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name = &quot;loginController&quot;)
@SessionScoped
public class LoginController {
	... // Do something...
}&lt;/pre&gt; 
&lt;p&gt;and the ShoppingCartController, where we want to use the LoginController:&lt;/p&gt; 
&lt;pre class=&quot;Java&quot; name=&quot;code&quot;&gt;import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class ShoppingCartController {
	
	// Inject some Enterprise Java bean (has nothing to do with the example)
	@EJB
	private BookingBean bookingBean;

	//Inject the LoginController (that&#039;s what we wanted to do )
	@ManagedProperty(&quot;#{loginController}&quot;)
	LoginController loginController;

	... // do the shopping cart stuff
}&lt;/pre&gt; 
&lt;p&gt; &lt;/p&gt;That is easy. If you know how :)&lt;br /&gt; 
    </description>
</item>
<item>
    <title>PHP hates me wird 500!</title>
    <link>http://webcode.lemme.at/archives/45-PHP-hates-me-wird-500!.html</link>

    <description>
        &lt;p&gt;Heute hat DER deutschsprachige PHP Blog seinen &lt;a href=&quot;http://www.phphatesme.com/blog/allgemein/500-mal-phphatesme-wir-feiern/&quot;&gt;500sten&lt;/a&gt; (und inzwischen auch schon seinen &lt;a href=&quot;http://www.phphatesme.com/blog/allgemein/das-gewinnspiel-geht-los/&quot;&gt;501ten&lt;/a&gt;) Eintrag veröffentlicht. Und das nur ca. 1 1/2 Jahre nach dem ersten Artikel. Das ist fast ein Artikel pro Tag! Gratulieren möchte ich Nils Langner und seinen Mitautoren aber eigentlich nicht zum 500 Eintrag, sondern zu den wahnsinnig interessanten Inhalten.&lt;/p&gt; 
&lt;p&gt;PHP hates me unterscheidet sich nämlich nicht nur durch die Frequenz der Beiträge von anderen PHP Blogs. Vor allem die Gedanken, die sich die Autoren,allen voran Nils, über alltägliche Probleme eines (Web-)Entwicklers machen, machen den Blog für mich so lesenswert. Er formuliert viele Gedanken, über die man ab und zu mal drüberfällt aber nie zu Ende denkt aus, und die überaus eifrige Leserschaft gibt ausführlich und gesittet ihren Senf dazu. So soll es sein, danke! &lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>McDonalds.at und die Usability</title>
    <link>http://webcode.lemme.at/archives/44-McDonalds.at-und-die-Usability.html</link>

    <description>
        &lt;p&gt;kürzlich hat mich eine Freundin von mir gebeten, ihr bei einer Übung zu helfen. Konkret bei der Usability-Analyse von mcdonalds.at. Die Seite ist sicherlich ganz gut aufgebaut und recht ordentlich strukturiert, es steht mir wohl auch nicht zu hier viel zu kritisieren, die Seite wurde vermutlich von Experten erstellt und meine Seiten sind wohl auch nicht die besten. Aber eines ist wirklich arg: &lt;strong&gt;Die Seite benutzt Flash.&lt;/strong&gt; Und zwar ausschließlich. Keine Chance an Informationen zu kommen, keine Weiche, keine auch nur minimale HTML-Seite mit basic Infos. Nix.&lt;/p&gt; 
&lt;p&gt;Und das, Ladies and Gentleman, ist &lt;strong&gt;dumm und ignorant&lt;/strong&gt;. &lt;/p&gt; 
&lt;p&gt;Dumm deshalb, weil man damit freiwillig potentielle Kunden von der Webseite fernhält (z.B. unterstützen iPhone und Android kein Flash, zumindest nich Out-of-the-box) und ignorant, weil viele Menschen kein Flash installieren können (Sehbehinderte, alte, technisch nicht versierte Menschen, verschiedene Betriebssysteme) oder einfach nicht wollen.&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Reihenfolge der Index-Datei per .htaccess bestimmen</title>
    <link>http://webcode.lemme.at/archives/43-Reihenfolge-der-Index-Datei-per-.htaccess-bestimmen.html</link>

    <description>
        &lt;p&gt;Oft will man kurz eine Seite vor die eigentliche Homepage zwischenschalten, um die Seite beispielsweise temporär offline zu stellen. Also eine start.html vor der index.html oder index.php anzeigen.&lt;/p&gt; 
&lt;p&gt;Das ist recht einfach per .htaccess möglich:&lt;/p&gt; 
&lt;pre&gt; DirectoryIndex start.html index.html index.php&lt;/pre&gt; 
&lt;p&gt;Die Anweisung DirectoryIndex steuert also die Reihenfolge, in der nach der Startseite gesucht wird.
&lt;/p&gt; 
    </description>
</item>
<item>
    <title>HTML erlauben bei Usereingaben</title>
    <link>http://webcode.lemme.at/archives/42-HTML-erlauben-bei-Usereingaben.html</link>

    <description>
        &lt;p&gt;Joomla hat ab einer der letzten Versionen - ich glaube 1.5.14 - die durchaus vernünftige Eigenschaft, dass HTML in $_GET und $_POST Parametern automatisch gefiltert wird. Das ist zwar grundsätzlich gut, blöd ist es nur wenn man nichts davon weiß und dich die ganze Zeit wundert wieso vor verschiedenen Zeichen auf einmal nur mehr Slashes auftauchen, sprich diese escaped werden. Egal, nach langer Suche weiß ich jetzt wie man damit umgeht:&lt;/p&gt; 
&lt;pre class=&quot;html&quot; name=&quot;code&quot;&gt;$parameter = JRequest::getVar( &#039;parameter&#039;, &#039;&#039;, &#039;post&#039;, &#039;string&#039;, JREQUEST_ALLOWHTML );
&lt;/pre&gt; 
    </description>
</item>
<item>
    <title>Bildbearbeitung mit PHP</title>
    <link>http://webcode.lemme.at/archives/41-Bildbearbeitung-mit-PHP.html</link>

    <description>
        &lt;h3&gt;Dateien hochladen&lt;/h3&gt; 
&lt;p&gt;Dieser erste Teil hat noch nicht unbedingt was mit Bildverarbeitung zu tun, aber meistens kommen die Bilder ja über die PHP-Applikation erst auf den Server. &lt;/p&gt; 
&lt;p&gt;Um eine Datei auf den Webserver zu laden benötigt man ein Formular, das in seiner einfachsten Form ungefähr so aussehen könnte:&lt;/p&gt; 
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;&amp;lt;form name=&quot;uploadform&quot; method=&quot;post&quot; enctype=&quot;multipart/form-data&quot; action=&quot;&quot;&amp;gt;
	&amp;lt;input type=&quot;file&quot; name=&quot;thefile&quot; /&amp;gt;
	&amp;lt;input name=&quot;thesubmit&quot; type=&quot;submit&quot; value=&quot;Upload image&quot; /&amp;gt;
&amp;lt;/form&amp;gt;&lt;/pre&gt; 
&lt;p&gt;Wichtig ist, dass als Methode &lt;em&gt;POST&lt;/em&gt; angegeben wird und als &lt;a href=&quot;http://de.wikipedia.org/wiki/MIME&quot;&gt;MIME-Typ&lt;/a&gt; (enctype) &lt;em&gt;multipart/form-data&lt;/em&gt;, da der Dateiupload sonst nicht funktioniert.&lt;/p&gt; 
&lt;p&gt;Im Ziel-Script (das im &lt;em&gt;action&lt;/em&gt;-Attribut angegeben werden kann, wenn nichts angegeben wird, wird das selbe Script wieder geladen) kann man nun die hochgeladene Datei überprüfen und in ein Verzeichnis seiner Wahl kopieren:&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;&amp;lt;?php
//überprüfen, ob das Formular gesendet wurde
if(isset($_POST[&#039;thesubmit&#039;])){
	//Metadaten, die uns PHP über die Datei liefert ausgeben
	echo $_FILES[&#039;thefile&#039;][&#039;name&#039;] . &quot;&amp;lt;br /&amp;gt;&quot;;
	echo $_FILES[&#039;thefile&#039;][&#039;type&#039;] . &quot;&amp;lt;br /&amp;gt;&quot;;
	echo $_FILES[&#039;thefile&#039;][&#039;tmp_name&#039;] . &quot;&amp;lt;br /&amp;gt;&quot;;
	echo $_FILES[&#039;thefile&#039;][&#039;error&#039;] . &quot;&amp;lt;br /&amp;gt;&quot;;
	echo $_FILES[&#039;thefile&#039;][&#039;size&#039;] . &quot;&amp;lt;br /&amp;gt;&quot;;

	//überprüfen des MIME-Typs
	$mime = $_FILES[&#039;thefile&#039;][&#039;type&#039;];
	if($mime == &#039;image/gif&#039; || $mime == &#039;image/jpeg&#039; || $mime == &#039;image/png&#039;){
		//aktueller Pfad und Dateiname des Bildes
		$oldfile = $_FILES[&#039;thefile&#039;][&#039;tmp_name&#039;];
		//vorgesehener Pfad und Dateiname des Bildes
		$newfile = &#039;uploads/&#039;.$_FILES[&#039;thefile&#039;][&#039;name&#039;];
		//datei kopieren
		move_uploaded_file($oldfile, $newfile);
	}
}
?&amp;gt;&lt;/pre&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;Das Bild wird also hochgeladen, überprüft ob es sich um ein Bild handelt, dann wird es aus dem Temporären Verzeichnis in ein beliebiges neues kopiert, in unserem Fall &lt;em&gt;uploads/&lt;/em&gt;, mit dem Originalnamen dahinter.&lt;/p&gt; 
&lt;p class=&quot;attention&quot;&gt;&lt;strong&gt;Achtung!&lt;/strong&gt; Die Überprüfung des MIME-Typs (oder auch der Dateiendung) genügt noch nicht als sichere Überprüfung der Datei. Eine bessere Methode ist, mit den weiter unten vorgestellten Funktionen zu prüfen, ob das Bild tatsächlich eine Höhe und eine Breite hat. Ist auch keine 100% sichere Methode, aber schon mal besser als gar keine. &lt;br /&gt;Auch der Dateiname sollte geändert werden, der Originalname sollte niemals übernommen werden.&lt;/p&gt; 
&lt;h3&gt;Bild von Datei laden&lt;/h3&gt; 
&lt;p&gt;
Dafür gibts drei Funktionen für gif, jpeg und png:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;resource imagecreatefromgif ( string $filename )&lt;/li&gt; 
&lt;li&gt;
resource imagecreatefromjpeg ( string $filename )&lt;/li&gt; 
&lt;li&gt;
resource imagecreatefrompng( string $filename )&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;
Dadurch erhält man einen Zeiger auf die Grafik, z.B.:&lt;/p&gt; 
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;$image = imagecreatefrompng( &#039;einbild.png&#039; ); 
&lt;/pre&gt; 
&lt;h3&gt;Daten eines Bildes - Metadaten&lt;/h3&gt; 
&lt;p&gt;Für viele Anwendungen in der Bildverarbeitung ist es wichtig, Daten über das Bild zu erhalten. Dazu gehören unter anderem Höhe, Breite, Typ, Farbtiefe usw. Die gängigste Funktion für diese Metadaten ist &lt;em&gt;getimagesize()&lt;/em&gt;. Diese Funktion liefert ein Array mit 7 Elementen, die verschiedene Metainformationen beinhalten.&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;Index &lt;em&gt;0&lt;/em&gt; Breite des Bildes&lt;/li&gt; 
&lt;li&gt;Index &lt;em&gt;1&lt;/em&gt; Höhe des Bildes&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;Index &lt;em&gt;2&lt;/em&gt; ist eine der IMAGETYPE-Konstanten (IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_SWF, IMAGETYPE_PSD, IMAGETYPE_BMP, IMAGETYPE_WBMP, IMAGETYPE_XBM, IMAGETYPE_TIFF_II, IMAGETYPE_TIFF_MM, IMAGETYPE_IFF, IMAGETYPE_JB2, IMAGETYPE_JPC, IMAGETYPE_JP2, IMAGETYPE_JPX, IMAGETYPE_SWC, IMAGETYPE_ICO)&lt;/li&gt; 
&lt;li&gt;Index &lt;em&gt;3&lt;/em&gt; Textstring im Format &#039;height=&amp;quot;yyy&amp;quot; width=&amp;quot;xxx&amp;quot;&#039;für ein IMG-Tag.&lt;/li&gt; 
&lt;li&gt;Index &lt;em&gt;mime&lt;/em&gt; Der MIME Typ des Bildes&lt;/li&gt; 
&lt;li&gt;Index &lt;em&gt;channels&lt;/em&gt; 3 für RGB und 4 für CMYK Bilder.&lt;/li&gt; 
&lt;li&gt;Index &lt;em&gt;bits&lt;/em&gt; Die Farbtiefe in Bit pro Farbe .&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Größe eines Bildes ändern&lt;/h3&gt; 
&lt;p&gt;Um ein Bild zu skalieren, braucht man mehrere Funktionen, die man am besten in einer Funktion zusammenfasst: &lt;br /&gt;&lt;/p&gt; 
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;public static function scaleImage($image, $maxwidth, $maxheight){
	list($image_width, $image_height) = getimagesize($file);
	if($image_width &amp;gt; $image_height){
		$new_image_width = $maxwidth;
		$new_image_height = $image_height*($maxheight/$image_height);
	}else{
		$new_image_height = $maxheight;
		$new_image_width = $image_width * ($maxwidth/$image_width);
	}
	$new_image = imagecreatetruecolor(round($new_image_width),
	round($new_image_height));
	imagecopyresized($new_image, $image, 0, 0, 0, 0, $new_image_width,
	$new_image_height, $image_width, $image_height);
	return $new_image;
}&lt;/pre&gt; 
&lt;p&gt;
Die Funktion nimmt als Parameter einen Zeiger und die gewünschte maximale Breite und maxiamle Höhe entgegen. Je nachdem, ob Höhe oder Breite größer ist, wird dann der andere Wert berechnet.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Danach wird ein neues Bild mit der berchneten Größe erstellt.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Schlußendlich kopiert die Funktion imagecopyresized() das alte Bild in das neue Bild.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Die verwendeten Funktionen:&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;resource imagecreatetruecolor ( int $width , int $height )
bool imagecopyresized ($to, $from, $to_x, $to_y, $from_x, $from_y, $to_w, $to_h, $from_w, $from_h)&lt;/pre&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;h3&gt;Bild speichern bzw. ausgeben&lt;/h3&gt; 
&lt;p&gt;Um ein Bild zu speichern oder im Dokument auszugeben gibt es wieder für jedes Format die entsprechenden Funktionen:&lt;br /&gt;&lt;/p&gt; 
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;bool imagegif ( resource $image [, string $filename ] )
bool imagejpeg ( resource $image [, string $filename [, int $quality ]] )
bool imagepng ( resource $image [, string $filename [, int $quality [, int $filters ]]] )&lt;/pre&gt; 
&lt;p&gt;Das Bild wird einfach im Skript ausgegeben, wenn kein Dateiname angegeben ist.&lt;/p&gt; 
&lt;p&gt;Die Qualität wird für JPEGs von 0-100 und bei PNGs von 0-9 angegeben. &lt;/p&gt; 
&lt;p&gt;$filters kann eine der Konstanten PNG_NO_FILTER, PNG_FILTER_NONE, PNG_FILTER_SUB , PNG_FILTER_UP, PNG_FILTER_AVG, PNG_FILTER_PAETH oder PNG_ALL_FILTERS sein.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Neues, leeres Bild erstellen&lt;/h3&gt; 
&lt;p&gt;Das geschieht durch die Funktion&lt;br /&gt;&lt;/p&gt; 
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;resource imagecreate ( int $width , int $height )&lt;/pre&gt; 
&lt;p&gt;Einfach Breite und Höhe angeben und den zurückgegebenen Zeiger in einer Variable speichern.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Farben definieren&lt;/h3&gt; 
&lt;p&gt;Zu Beginn ist die Farbpalette des Bildes leer, das heißt man muss jede neue Farbe vor jeder Operation definieren:&lt;br /&gt;&lt;/p&gt; 
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;int imagecolorallocate ( resource $image , int $red , int $green , int $blue )&lt;/pre&gt; 
&lt;p&gt;Also z.B.:&lt;/p&gt; 
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;$white = imageColorAllocate($image, 255, 255, 255)&lt;/pre&gt; 
&lt;p&gt;Diese Farbe kann dann manchen Funktionen mitgegeben werden.&lt;/p&gt; 
&lt;p&gt;Außerdem legt der erste Aufruf der Funktion den Hintergrund der Grafik fest, außer sie wurde mittels imagecreatetruecolor() erstellt.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Ausschnitt eines Bildes in ein anderes kopieren&lt;/h3&gt; 
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;bool imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )
&lt;/pre&gt; 
&lt;h3&gt;Text einfügen&lt;/h3&gt; 
&lt;p&gt;Zeichenketten kann man mithilfe der Funktion&lt;/p&gt; 
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;bool imagestring ( resource $image , int $font , int $x , int $y , string $string , int $color )&lt;/pre&gt; 
&lt;p&gt;ausgeben, wobei die Parameter für das Bild, die Schriftart (1-5), die Position, die auszugebende Zeichenkette und die Farbe stehen.&lt;/p&gt; 
&lt;p&gt;Für weitere Schriftarten siehe die Funktion&lt;/p&gt; 
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;int imageloadfont ( string $file )
&lt;/pre&gt; 
&lt;h3&gt;Zeichnen&lt;/h3&gt; 
&lt;p&gt;Man kann in ein Bild verschiedene Formen zeichnen, dafür gibt’s unter anderem die folgenden Funktionen:&lt;br /&gt;&lt;/p&gt; 
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;bool imagesetpixel ( resource $image , int $x , int $y , int $color )
bool imageline ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )
bool imagerectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )
bool imagefilledrectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 ,int $color )
bool imageellipse ( resource $image , int $cx , int $cy , int $width , int $height , int $color )
bool imagefilledellipse ( resource $image , int $cx , int $cy , int $width , int $height, int $color )
bool imagearc ( resource $image , int $cx , int $cy , int $width , int $height , int $start , int $end , int $color )
bool imagepolygon ( resource $image , array $points , int $num_points , int $color )&lt;/pre&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
    </description>
</item>
<item>
    <title>5 JavaScript WYSIWYG Editoren</title>
    <link>http://webcode.lemme.at/archives/40-5-JavaScript-WYSIWYG-Editoren.html</link>

    <description>
        &lt;p&gt;&lt;a href=&quot;http://woorkup.com/2009/10/06/5-powerful-wysiwyg-editors-for-web-based-applications/&quot; title=&quot;Antonio Lupetti&quot;&gt;Antonio Lupetti&lt;/a&gt; stellt in einem seiner letzten Posts eine schöne Übersicht von 5 guten Rich Text Editoren vor, die in HTML-Seiten (z.B. textarea-Element) eingebunden werden können, darunter Altbekanntes und mir bis jetzt Unbekanntes auf der Liste:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;a href=&quot;http://developer.yahoo.com/yui/examples/editor/&quot; title=&quot;YUI Rich Text Editor&quot;&gt;Yahoo! UI Rich Text Editor&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;&lt;a href=&quot;http://tinymce.moxiecode.com/index.php&quot; title=&quot;TinyMCE&quot;&gt;TinyMCE&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;&lt;a href=&quot;http://nicedit.com/index.php&quot; title=&quot;NicEdit&quot;&gt;NicEdit&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;&lt;a href=&quot;http://ckeditor.com/demo&quot; title=&quot;CKEditor&quot;&gt;CKEditor&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;&lt;a href=&quot;http://www.openwebware.com/&quot; title=&quot;openWYSIWYG&quot;&gt;openWYSIWYG &lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Auf den ersten Blick gefällt mir der NicEditor sehr gut (wenn man die Funktionen des TinyMCE nicht benötigt), ich hab ihn mir aber noch nicht wirklich angesehen...&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Auslegungssache</title>
    <link>http://webcode.lemme.at/archives/39-Auslegungssache.html</link>

    <description>
        &lt;p&gt;
Noch selten hat man mir so deutlich vor Augen geführt wie
unterschiedlich man Studien auslegen, bzw. welche unterschiedlichen
Sachen man herauslesen kann. Die &lt;a href=&quot;http://www.europeanvaluesstudy.eu/&quot; title=&quot;European Values Study&quot;&gt;Europäische Wertestudie&lt;/a&gt; wurde nun zum 5. Mal erhoben (in Ö übrigens von &lt;a href=&quot;http://www.univie.ac.at/ktf/content/site/pt/forschung/wertestudie2008/article/2928.html?SWS=g2qhqm61c8m7sun9adabqo0tu5&quot; title=&quot;Katholisch Theologische Fakultät&quot;&gt;denen hier&lt;/a&gt;). &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;derStandard.at und DiePresse.com haben darüber berichtet.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://derstandard.at/1244460578904/Wertestudie-Studie-Sehnsucht-nach-dem-starken-Mann&quot; title=&quot;Der Standard&quot;&gt;Der Standard&lt;/a&gt;:&lt;/p&gt;
&lt;h3&gt;&lt;em&gt;Studie: Sehnsucht nach dem &amp;quot;starken Mann&amp;quot;&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Autoritätsgläubig statt liberal, ausländerfeindlich statt weltoffen - Die aktuelle Wertestudie belegt, dass diese Einstellungen in der Bevölkerung angestiegen sind&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Und &lt;a href=&quot;http://diepresse.com/home/politik/innenpolitik/487085/index.do?_vl_backlink=/home/politik/index.do&quot; title=&quot;Die Presse&quot;&gt;die Presse&lt;/a&gt;:&lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;&lt;em&gt;Wertestudie: Politik bei Österreichern &amp;quot;unten durch&amp;quot;&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Wie Österreich denkt. Faktoren für Glück sind Familie, hohe Bildung und nicht in Wien leben. Die Arbeitszufriedenheit sinkt. Wer mit Partner und Kindern lebt, ist glücklicher.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Interessant, wo da was priorisiert wird. Da entsprechen wohl beide Zeitungen ihrem Klischee...&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Google Maps API V3</title>
    <link>http://webcode.lemme.at/archives/37-Google-Maps-API-V3.html</link>

    <description>
        
&lt;p&gt;Google hat vor Kurzem einen ersten Ausblick auf die &lt;a href=&quot;http://code.google.com/intl/de-DE/apis/maps/documentation/v3/&quot; title=&quot;Google Maps API V3 Dokumentation&quot;&gt;Version 3 der Maps API&lt;/a&gt; veröffentlicht. Neue Features sind mir beim ersten Blick nicht aufgefallen, dafür aber zwei Änderungen der Naming Konventionen:&lt;/p&gt;&lt;h3&gt;google.maps.* Namespace&lt;/h3&gt;&lt;p&gt;Die erste wichtige Änderung ist das Wegfallen des G-Präfix. So wird aus einem &lt;i&gt;GMarker&lt;/i&gt; ein &lt;i&gt;Marker&lt;/i&gt;, aus &lt;i&gt;GLatLng&lt;/i&gt; wird &lt;i&gt;LatLng&lt;/i&gt; und so weiter... Das heißt, eigentlich stimmt das so nicht. Denn die Maps API ist nun ganz in den Namespace der &lt;a href=&quot;http://code.google.com/intl/de-DE/apis/ajax/&quot; title=&quot;Google Ajax APIs&quot;&gt;Google Ajax APIs&lt;/a&gt; integriert und damit wird aus &lt;i&gt;GMarker&lt;/i&gt; ein &lt;i&gt;google.maps.Marker&lt;/i&gt;, aus &lt;i&gt;GLatLng&lt;/i&gt; wird &lt;i&gt;google.maps.LatLng&lt;/i&gt; usw.&lt;/p&gt;&lt;p&gt;Eine Inkonsistenz, die mir beim ersten Drüberlesen aufgefallen ist, ist dass aus dem guten alten &lt;i&gt;GEvent&lt;/i&gt; nicht etwa &lt;span class=&quot;sourceRowText&quot;&gt;&lt;i&gt;google.maps.Event&lt;/i&gt; geworden ist, sondern &lt;/span&gt;&lt;span class=&quot;sourceRowText&quot;&gt;&lt;i&gt;google.maps.event&lt;/i&gt; (kleingeschrieben!).&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;Underscore statt Camel Case&lt;span class=&quot;sourceRowText&quot;&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;Das zweite, was mir beim Blick auf die &lt;a href=&quot;http://code.google.com/intl/de-DE/apis/maps/documentation/v3/reference.html&quot; title=&quot;Google Maps API Referenz&quot;&gt;API Referenz&lt;/a&gt; auffällt ist, dass Methoden nicht mehr in Camel Case, sondern mit Unterstrichen geschrieben werden. Und das nicht mal konsistent. So existieren für das Map Objekt etwa die Methoden setOptions() und set_center(). Das ist meiner Meinung nach nicht nur unnötig, verwirrend und auch seltsam, sondern auch deswegen blöd, weil immer ein Zeichen mehr getippt werden muss und diese Art der Schreibweise in Javascript Libraries eigentlich überhaupt nicht state of the Art ist.&lt;/p&gt;&lt;p&gt;Wenn man einen Blick in die Referenz wagt wird man sehen, dass irgendwie noch zu wenig da ist (bzw. zu wenig dokumentiert ist) um sich ernsthaft mit der V3 zu beschäftigen. Aber bin mal gespannt ob die neue Version auch neue Features wie z.B. Reverse Geocoding ohne Workarounds...&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Upload Problem mit dem Internet Explorer</title>
    <link>http://webcode.lemme.at/archives/36-Upload-Problem-mit-dem-Internet-Explorer.html</link>

    <description>
        
&lt;p&gt;Schön, wieder mal eine Stunde mit dem IE verschi$$en...&lt;/p&gt;&lt;p&gt;Ich hab eine kleine PHP-Anwendung mit Bilderupload geschrieben, die auch ganz gut funktioniert hat - in allen Browsern ausser dem Liebling aller Webdesigner, dem Internet Explorer.&lt;/p&gt;&lt;p&gt;Das Problem war, dass der Internet Explorer beim Hochladen die MIME-Typen der Dateien verändert, siehe &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms775147.aspx&quot;&gt;hier&lt;/a&gt;. Und diese MIME Type Detection macht aus image/png ein image/x-png und aus image/jpg ein image/pjpg, was meiner Ansicht nach äusserst hirnrissig ist.&lt;/p&gt;&lt;p&gt;Also Lösung: Wenn im Uploadskript (z.B. wie bei mir PHP) auf MIME-Typen überprüft werden soll, dann auch die Typen &lt;b&gt;image/x-png&lt;/b&gt; und &lt;b&gt;image/pjpg&lt;/b&gt; beachten!&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Funktionierender, simpler gif zu ico Konverter</title>
    <link>http://webcode.lemme.at/archives/35-Funktionierender,-simpler-gif-zu-ico-Konverter.html</link>

    <description>
        
&lt;p&gt;Endlich hab ich einen funktionierenden und einfachen gif zu ico online Konverter für &lt;a href=&quot;http://de.wikipedia.org/wiki/Favicon&quot;&gt;Favicons&lt;/a&gt; gefunden. Jedes mal neu suchen und 10 verschiedene Konverter und Generatoren ausprobieren, bis ein gscheiter dabei ist macht ja auch keinen Spaß.&lt;/p&gt;&lt;p&gt;Also merken: &lt;a href=&quot;http://www.html-kit.com/favicon/&quot;&gt;http://www.html-kit.com/favicon/&lt;/a&gt;&lt;/p&gt;&lt;p /&gt; 
    </description>
</item>
<item>
    <title>Suchmaschinenfreundliche Urls mit mod_rewrite Problem</title>
    <link>http://webcode.lemme.at/archives/34-Suchmaschinenfreundliche-Urls-mit-mod_rewrite-Problem.html</link>

    <description>
        
&lt;p&gt;Also irgendwie verkommt das hier ja schon fast zu einem reinen Joomla-Blog...&lt;/p&gt;&lt;p&gt;Egal :)&lt;/p&gt;&lt;p&gt;Hab gestern ein Joomla auf einen 1und1 Webspace installiert und irgendwie haben die Suchmaschinenfreundlichen URLS mit mod_rewrite nicht funktioniert und der Server hat mir die ganze Zeit den Status &amp;quot;500 -Internal server error&amp;quot; zurückgegeben. Die Lösung des Problems liegt in der .htaccess-Datei. Warum ist mir ein Rätsel (wie so circa alles, was sich in einer htaccess befindet).&lt;/p&gt;&lt;p&gt;Es müssen einfach zwei Zeilen geändert werden:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Die Zeile &lt;b&gt;&amp;quot;Options +FollowSymLinks&amp;quot;&lt;/b&gt; muß auskommentiert werden, sprich einfach in &lt;b&gt;&amp;quot;#Options +FollowSymLinks&amp;quot;&lt;/b&gt; ändern.&lt;/li&gt;&lt;li&gt;Bei der Zeile &lt;b&gt;&amp;quot;#RewriteBase / &amp;quot;&lt;/b&gt; soll der Kommentar (das &amp;quot;#&amp;quot;) entfernt werden, also in &lt;b&gt;&amp;quot;RewriteBase / &amp;quot;&lt;/b&gt; ändern. Falls Joomla in einem Unterverzeichnis relativ zum Document Root installiert wird (beispielsweise &amp;quot;http://domain.com/cms/&amp;quot; muss die Zeile dementsprechend in &lt;b&gt;&amp;quot;RewriteBase /cms/ &amp;quot; &lt;/b&gt;geändert werden.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Lösung gefunden auf &lt;a href=&quot;http://www.joomlaportal.de/allgemeine-fragen-zu-joomla-1-5/159239-search-engine-optimization-wiki-fuer-joomla-1-5-7-mit-urls-und-meta.html&quot;&gt;joomlaportal.de&lt;/a&gt; (wie so oft)&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Your Design Sucks</title>
    <link>http://webcode.lemme.at/archives/33-Your-Design-Sucks.html</link>

    <description>
        
Ziemlich guter Vortrag von &lt;a href=&quot;http://www.boagworld.com/&quot;&gt;Paul Boag&lt;/a&gt; zum Thema (Web-)Design und Kundenwünsche. Er erklärt welche Probleme auftreten können, wenn man für einen Kunden ein Design entwickelt und wie man am besten damit umgeht. &lt;p&gt;Unbedingt sehenswert!&lt;/p&gt;
&lt;object width=&quot;500&quot; height=&quot;313&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=2017783&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1&quot; /&gt;&lt;embed width=&quot;500&quot; height=&quot;313&quot; src=&quot;http://vimeo.com/moogaloop.swf?clip_id=2017783&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; /&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/2017783&quot;&gt;Your design sucks!&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user378578&quot;&gt;Paul Boag&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;&lt;p&gt;Via &lt;a href=&quot;http://praegnanz.de/weblog/your-design-sucks&quot;&gt;praegnanz.de&lt;/a&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Google Maps API Error when using Wikipedia overlay</title>
    <link>http://webcode.lemme.at/archives/32-Google-Maps-API-Error-when-using-Wikipedia-overlay.html</link>

    <description>
        
&lt;h3&gt;Error &amp;quot;i[hb] is not a function&amp;quot;&lt;/h3&gt;&lt;p&gt;In the current version of the Maps API you may have problems with the wikipedia or the Panoramio layer. &lt;/p&gt;&lt;p&gt;Load the previous version instead, which is according to &lt;a href=&quot;http://groups.google.de/group/Google-Maps-API/browse_thread/thread/e95cdeda124db5b5?fwc=1&quot; title=&quot;Google Groops&quot;&gt;this thread&lt;/a&gt; v2.149. Load it using&lt;/p&gt;&lt;pre class=&quot;javascript&quot; name=&quot;code&quot;&gt;google.load(&amp;quot;maps&amp;quot;, &amp;quot;2.149&amp;quot;);&lt;/pre&gt;&lt;p&gt;or&lt;/p&gt;&lt;pre class=&quot;html&quot; name=&quot;code&quot;&gt;&amp;lt;script src=&amp;quot;http://www.google.com/maps?file=googleapi&amp;amp;v=2.149&amp;amp;key=YOUR_KEY&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;
&amp;lt;/script&amp;gt;&lt;/pre&gt;
 
    </description>
</item>

</channel>
</rss>
