<?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>elektro:elch</title>
	<atom:link href="http://elektroelch.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://elektroelch.de</link>
	<description>Es ist nicht ungefährlich, wenn ein Volk lesen und schreiben kann.</description>
	<lastBuildDate>Fri, 11 May 2012 10:20:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<atom:link rel='hub' href='http://elektroelch.de/?pushpress=hub'/>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>WordPress: Aufregen über schlecht programmierte Plugins</title>
		<link>http://elektroelch.de/blog/2012/05/11/wordpress-aufregen-ueber-schlecht-programmierte-plugins/</link>
		<comments>http://elektroelch.de/blog/2012/05/11/wordpress-aufregen-ueber-schlecht-programmierte-plugins/#comments</comments>
		<pubDate>Fri, 11 May 2012 09:04:36 +0000</pubDate>
		<dc:creator>latz</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://elektroelch.de/?p=2744</guid>
		<description><![CDATA[Neulich stolperte ich über ein Plugin, das einen wirklichen Mehrwert liefert, aber leider so miserabel programmiert ist, dass ich niemanden mit gutem Gewissen den Einsatz empfehlen kann. Obwohl es schon eine größere Anzahl von &#8222;You&#8216;re doing it wrong&#8220;-Blogartikeln gibt, muss ich einfach einen weiteren Artikel darüber schreiben, da dieses nicht näher benannte Plugin so viele [...]]]></description>
			<content:encoded><![CDATA[<p>Neulich stolperte ich über ein Plugin, das einen wirklichen Mehrwert liefert, aber leider so miserabel programmiert ist, dass ich niemanden mit gutem Gewissen den Einsatz empfehlen kann. Obwohl es schon eine größere Anzahl von &#8222;You&#8216;re doing it wrong&#8220;-Blogartikeln gibt, muss ich einfach einen weiteren Artikel darüber schreiben, da dieses nicht näher benannte Plugin so viele Dinge gleichzeitig falsch macht.<br />
<span id="more-2744"></span></p>
<h3>Tabellen in der Datenbank erstellen</h3>
<p>WordPress liefert die notwendigen Tabellen und, noch besser, alle notwendigen Funktionen, um Daten in der Datenbank zu speichern. Es gibt zum Beispiel <code>wp_postmeta</code> um Daten zu speichern, die mit einem Artikel zusammenhängen oder <code>wp_usermeta</code> für Daten in Zusammenhang mit einem Benutzer.<br />
Um allgemeine Daten des Plugins zu speichern sollte man die Tabelle <code>wp_options</code> nutzen. Man muss nicht einmal für jeden Wert einen gesonderten Datensatz erstellen, sondern man kann die Daten in einem Array zusammenfassen, mit <code>serialize()</code> serialisieren und in einem einzelnen Datensatz speichern.<br />
(<b>Edit:</b> Schon seit der Version 2.0.1 ist es nicht mehr notwendig, die Daten selber zu serialisieren, da die update-* -Funktionen das automatisch machen.)<br />
Wie man sieht, ist es also gar nicht notwendig, eigene Tabellen oder SQL-Anweisungen erstellen.</p>
<h3>Ständig neue Daten anfordern</h3>
<p>Man muss Daten von externen Quellen nicht ständig erneuern, denn es ist sehr wahrscheinlich, dass sich die Daten über einen längeren Zeitraum nicht ändern. Mit einigen durchdachten WordPress-Funktionen kann man die Daten zwischenspeichern, indem man die &#8222;<a href="https://codex.wordpress.org/Transients_API">Transient API</a>&#8220; nutzt. Sie stellt Funktionen bereit, um Daten temporär zu speichern (<code><a href="https://codex.wordpress.org/Function_Reference/set_transient">set_transient</a></code>), abzurufen (<code><a href="https://codex.wordpress.org/Function_Reference/get_transient">get_transient</a></code>) und noch weitere, um temporäre Daten zu verwalten.</p>
<h3>Das Rad neu erfinden</h3>
<p>WordPress enthält eine Fülle an Funktionen, insbesondere für das Zusammenspiel mit der Datenbank. Bevor man also anfängt, eigene Datenbankroutinen zu schreiben, sollte man sich die Klasse <code>$wpdb</code> ansehen, die alles enthält um mit der Datenbank zu interagieren, desweiteren <code><a href="https://codex.wordpress.org/Function_Reference/add_user_meta">add_user_meta</a></code>, <code><a href="https://codex.wordpress.org/Function_Reference/add_post_meta">add_post_meta</a></code> und andere hilfreiche Funktionen um Daten zu speichern, zu ändern und zu löschen. Man sollte sich diese Funktionen ansehen, bevor man auch nur einen Gedanken daran verschwendet, eigene SQL-Statements zu erstellen. Neben der einfachen Verwendung ist man auf der sicheren Seite auch wenn sich das Datenbank-Design drastisch ändern sollte.</p>
<h3>Nach mir die Sintflut</h3>
<p>Selbst wenn dein Plugin die beste Erfindung seit geschnitten Brot sein mag und jeder es einsetzen sollte, wird es Nutzer geben, die der Meinung sind, dass es etwas Besseres gibt und es deinstallieren wollen. Man sollte deshalb darauf achten, dass man bei der Deinstallation alle Spuren des Plugins löscht. Bei der <b>Deinstalltion</b>, nicht bei der <b>Deaktivierung</b>, denn es kann durchaus passieren, das ein Benutzer das Plugin deaktiviert, um das Blog zu debuggen und anschließend sehr glücklich ist, dass die Einstellungen noch vorhanden sind.</p>
<p>Es gibt noch viele andere Sachen die man beim Programmieren eines Plugins falsch machen kann und ich hoffe sehr, dass <a href="http://twitter.com/nacin">@nacin</a> irgendwann ein Blog zu dem Thema eröffnet.</p>
]]></content:encoded>
			<wfw:commentRss>http://elektroelch.de/blog/2012/05/11/wordpress-aufregen-ueber-schlecht-programmierte-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geburtstag, schon wieder!</title>
		<link>http://elektroelch.de/blog/2012/02/28/geburtstag-schon-wieder/</link>
		<comments>http://elektroelch.de/blog/2012/02/28/geburtstag-schon-wieder/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 10:53:30 +0000</pubDate>
		<dc:creator>latz</dc:creator>
				<category><![CDATA[daily life]]></category>
		<category><![CDATA[birthday]]></category>
		<category><![CDATA[geburtstag]]></category>

		<guid isPermaLink="false">http://elektroelch.de/?p=2682</guid>
		<description><![CDATA[Überraschenderweise hatte ich dieses Jahr schon wieder Geburtstag. Herzlichen Dank an meine Ehefrau für diese tolle selbstgebackene Torte! Geschenke gab&#8217;s auch: Mario Kart für die WII (wollte ich schon immer haben, ohne das Spiel wirklich zu kennen) alle Star Trek Next Generation DVDs mit Aufsteller Motorola Razr V3 (das will ich schon seit Jahren haben), [...]]]></description>
			<content:encoded><![CDATA[<p>Überraschenderweise hatte ich dieses Jahr schon wieder Geburtstag.</p>
<p><a href="http://elektroelch.de/wp-content/uploads/2012/02/img_1697.jpg" rel="lightbox[2682]"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-medium wp-image-2683" title="Tolle Torte" src="http://elektroelch.de/wp-content/uploads/2012/02/img_1697-300x223.jpg" alt="" width="300" height="223" /></a></p>
<p>Herzlichen Dank an meine Ehefrau für diese tolle selbstgebackene Torte! Geschenke gab&#8217;s auch:</p>
<p><a href="http://elektroelch.de/wp-content/uploads/2012/02/geschenke.jpg" rel="lightbox[2682]"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-medium wp-image-2688" title="geschenke" src="http://elektroelch.de/wp-content/uploads/2012/02/geschenke-300x231.jpg" alt="" width="300" height="231" /></a></p>
<ul>
<li>Mario Kart für die WII (wollte ich schon immer haben, ohne das Spiel wirklich zu kennen)</li>
<li><span style="text-decoration: underline;">alle</span> Star Trek Next Generation DVDs mit Aufsteller</li>
<li>Motorola Razr V3 (das will ich schon seit Jahren haben), in stylischem schwarz</li>
<li>Johann-König-Buch</li>
<li>viele Mario-Barth-CDs/DVDs (ja, ich bin bekennender Mario-Barth-Fan)</li>
<li>eine schicke Donald-Duck-Lampe</li>
<li>eine kühle Eisbär-Mütze</li>
<li>viele, viele Schlümpfe</li>
<li>von meinen Eltern eine Gürteltasche für mein Victorinox-Messer, einen größeren Tank für die Senseo-Kaffeemaschine und ganz viel Tee (hier in Rheinhessen gibt&#8217;s nichts Vernünftiges zu kaufen)</li>
<li>von meiner Schwiegermutter den zweiten Teil der kompletten McGyver-Serie</li>
</ul>
<p>(ich hoffe, ich habe nichts vergessen). Abends ging dann in&#8217;s China-Restaurant, versuchen das Buffet zu plündern. Ging naturgemäß nicht, aber wir haben unser Bestes versucht. War ein schöner Tag.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://elektroelch.de/blog/2012/02/28/geburtstag-schon-wieder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mein Lieblings-Skript für Greasemonkey</title>
		<link>http://elektroelch.de/blog/2012/02/01/mein-lieblings-skript-fuer-greasemonkey/</link>
		<comments>http://elektroelch.de/blog/2012/02/01/mein-lieblings-skript-fuer-greasemonkey/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 13:29:43 +0000</pubDate>
		<dc:creator>latz</dc:creator>
				<category><![CDATA[internet]]></category>

		<guid isPermaLink="false">http://elektroelch.de/?p=2653</guid>
		<description><![CDATA[Greasemonkey ist ein praktisches Add-On für Firefox das es erlaubt, auf einfache Weise etwas Javascript auf einer Webseite auszuführen, nachdem sie geladen wurde. Zu meinen Lieblings-Skripts gehört &#8222;Jasper’s Google Reader subscribe&#8220; &#8230;und was macht es? Jedes Blog, fast jede Nachrichtenseite und viele andere Websites besitzen einen RSS-Feed. Sie sind sehr praktisch, allerdings ist es häufig [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://addons.mozilla.org/de/firefox/addon/greasemonkey/" title="Greasemonkey">Greasemonkey</a> ist ein praktisches Add-On für Firefox das es erlaubt, auf einfache Weise etwas Javascript auf einer Webseite auszuführen, nachdem sie geladen wurde.<br />
Zu meinen Lieblings-Skripts gehört &#8222;<a href="https://userscripts.org/scripts/show/2571">Jasper’s Google Reader subscribe</a>&#8220; &#8230;und was macht es?<br />
Jedes Blog, fast jede Nachrichtenseite und viele andere Websites besitzen einen RSS-Feed. Sie sind sehr praktisch, allerdings ist es häufig schwierig, den entsprechenden Link zu finden oder er wird auf der Seite gar nicht dargestellt. Dann ist die einzige Chance, den Link zu finden, eine Suche im Sourcecode. Den Code durchsuchen, während man vor einem Rechner sitzt? Lächerlich! Die Maschine soll das machen und genau dafür gibt es das Skript.<br />
Es sucht nach Zeichenketten die &#8222;rss, &#8222;atom&#8220; oder &#8222;rdf&#8220; enthalten und stellt es kleines Icon am oberen rechten Rand des Browsers dar:</p>
<p><img style=' display: block; margin-right: auto; margin-left: auto;'  src="http://elektroelch.de/wp-content/uploads/2012/02/dd4.png" alt="" title="Dd4" width="84" height="68" class="aligncenter size-full wp-image-2655" /></p>
<p>Bewegt man den Mauszeiger über das Icon werden Links zu allen gefundenen Feeds angezeigt:</p>
<p><a href="http://elektroelch.de/wp-content/uploads/2012/02/dd3.png" rel="lightbox[2653]"><img style=' display: block; margin-right: auto; margin-left: auto;'  src="http://elektroelch.de/wp-content/uploads/2012/02/dd3.png" alt="" title="Dd3" width="264" height="88" class="aligncenter size-full wp-image-2656" /></a></p>
<p>Wie man sieht wird nicht der der Haupt-Feed angezeigt, sondern auch der Kommentar-Feed sowie mögliche andere. </p>
<ul>
<li>
<a href="https://userscripts.org/scripts/show/2571">Download &#8222;Jasper’s Google Reader subscribe&#8220;</a>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://elektroelch.de/blog/2012/02/01/mein-lieblings-skript-fuer-greasemonkey/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Einfachere Plugin-Entwicklung durch Verschieben des Plugin-Verzeichnisses</title>
		<link>http://elektroelch.de/blog/2011/12/22/einfachere-plugin-entwicklung-durch-verschieben-des-plugin-verzeichnisses/</link>
		<comments>http://elektroelch.de/blog/2011/12/22/einfachere-plugin-entwicklung-durch-verschieben-des-plugin-verzeichnisses/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 12:49:30 +0000</pubDate>
		<dc:creator>latz</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://elektroelch.de/?p=2641</guid>
		<description><![CDATA[Als erfahrener Plugin-Programmierer testet man seine Plugins nicht nur mit der allerneuesten WordPress-Version, sondern auch mit vorherigen Versionen, denn es gibt eine Menge älterer WordPress-Installationen. Man hat also die verschiedensten Versionen auf dem Entwicklungsserver installiert und möchte sein neuesten Codeänderungen mit jeder dieser Versionen testen. Man könnte also bei jeder Codeänderung das Plugin manuell in [...]]]></description>
			<content:encoded><![CDATA[<p>Als erfahrener Plugin-Programmierer testet man seine Plugins nicht nur mit der allerneuesten WordPress-Version, sondern auch mit vorherigen Versionen, denn es gibt <a href="http://hackertarget.com/wordpress-infographic/">eine Menge älterer WordPress-Installationen</a>. Man hat also die verschiedensten Versionen auf dem Entwicklungsserver installiert und möchte sein neuesten Codeänderungen mit jeder dieser Versionen testen.<span id="more-2641"></span></p>
<p>Man könnte also bei jeder Codeänderung das Plugin manuell in die einzelnen Pluginverzeichnisse jeder Version kopieren&#8230; aber wir sind Programmierer, also ist dies keine Option, oder?</p>
<p>Wenn das Entwicklungssystem unter einem *nix-System läuft kann man versuchen, das Problem mit symbolischen Links zu lösen. Das klappt leider auch nicht, aber das ist kein Bug in WordPress, sondern <a href="https://bugs.php.net/bug.php?id=46260">in PHP</a>.</p>
<p>Glücklicherweise enthält WordPress ein paar Konstanten, mit denen man sich das Leben trotzdem einfacher<br />
machen kann: <code>WP_PLUGIN_DIR</code> und <code>WP_PLUGIN_URL</code>. Diese Konstanten zeigen auf das Pluginverzeichnis der jeweiligen WordPress-Installation. Sie sind seit WordPress 2.6 definiert und eine Unterstützung älterer Versionen ist nicht sehr sinnvoll.</p>
<p>Um die Plugins für jede WordPress-Installation zugänglich zu machen verschiebt man die Plugins einfach in ein zentrales Verzeichnis und definiert die Konstanten entsprechend:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'WP_PLUGIN_DIR'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'/var/www/plugins'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// oder mit XAMPP C:/xampp/htdocs/plugins</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'WP_PLUGIN_URL'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'http://localhost/plugins'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>In diesem Beispiel liegt die Plugins in &#8222;plugins&#8220; im Root-Verzeichns des Webservers. Wenn man jetzt die obigen Konstanten jeder WordPress-Installation auf dieses Verzeichnis verweisen lässt, kann man sehr einfach neuen Code mit jeder dieser Versionen testen.</p>
<p>(Danke <a href="http://profiles.wordpress.org/users/johnbillion">John Blackbourn</a> in der <a href="http://lists.automattic.com/mailman/listinfo/wp-hackers">wp-hackers-Liste</a> für die Idee.)</p>
<h3>Hinweis für Multisite-Benutzer (mit Dank an an <a href="http://www.bueltge.de">Frank</a>)</h3>
<p>Das funktioniert auch mit WordPress MultiSite:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">    <span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'WPMU_PLUGIN_DIR'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'/var/www/multisite-plugins'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'WPMU_PLUGIN_URL'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'http://localhost/multisite-plugins'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://elektroelch.de/blog/2011/12/22/einfachere-plugin-entwicklung-durch-verschieben-des-plugin-verzeichnisses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Die geheimnissvolle Selectbox in WordPress</title>
		<link>http://elektroelch.de/blog/2011/12/06/die-geheimnissvolle-selectbox-in-wordpress/</link>
		<comments>http://elektroelch.de/blog/2011/12/06/die-geheimnissvolle-selectbox-in-wordpress/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 14:50:49 +0000</pubDate>
		<dc:creator>latz</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://elektroelch.de/?p=2634</guid>
		<description><![CDATA[Neulich wollte ich auf der Optionsseite eines Plugins eine Selectbox mit 5 Einträgen erstellen. Nicht einfacher als das: &#60;select size=&#34;5&#34;&#62; &#60;option &#34;test1&#34; /&#62; &#60;option &#34;test2&#34; /&#62; &#60;option &#34;test3&#34; /&#62; &#60;option &#34;test4&#34; /&#62; &#60;option &#34;test5&#34; /&#62; &#60;option &#34;test6&#34; /&#62; &#60;/select&#62; Jeder, einschließlich mir, erwartet folgende Ausgabe: Tatsächlich wird aber folgendes angezeigt: Das Geheimnis liegt im stylesheet [...]]]></description>
			<content:encoded><![CDATA[<p>Neulich wollte ich auf der Optionsseite eines Plugins eine Selectbox mit 5 Einträgen erstellen. Nicht einfacher als das:</p>

<div class="wp_syntax"><div class="code"><pre class="xhtml" style="font-family:monospace;">&lt;select size=&quot;5&quot;&gt;
  &lt;option &quot;test1&quot; /&gt;
  &lt;option &quot;test2&quot; /&gt;
  &lt;option &quot;test3&quot; /&gt;
  &lt;option &quot;test4&quot; /&gt;
  &lt;option &quot;test5&quot; /&gt;
  &lt;option &quot;test6&quot; /&gt;
&lt;/select&gt;</pre></div></div>

<p>Jeder, einschließlich mir, erwartet folgende Ausgabe:<br />
<img style=' float: left; padding: 4px; margin: 0 7px 2px 0;'  src="http://elektroelch.de/net/files/2011/12/select1.png" alt="" title="select1" width="98" height="141" class="alignleft size-full wp-image-508" /><br clear="all"></p>
<p>Tatsächlich wird aber folgendes angezeigt:<br />
<img style=' float: left; padding: 4px; margin: 0 7px 2px 0;'  src="http://elektroelch.de/net/files/2011/12/select2.png" alt="" title="select2" width="88" height="60" class="alignleft size-full wp-image-509" /><br clear="all"></p>
<p>Das Geheimnis liegt im stylesheet des Admin-Bereichs:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#wpcontent</span> select <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2em</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">12px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Dadurch wird jede Selectbox auf einen Eintrag reduziert. Warum dies so definiert ist bleibt mir schleierhaft. Zu diesem Thema existiert auch ein <a href="http://core.trac.wordpress.org/ticket/10331">Ticket</a> im WordPress-Trackingsystem, in dem das Problem seit zwei Jahren diskutiert wird.</p>
<p>Die Lösung des Problems ist relativ einfach:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>select style<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;height:auto&quot;</span> size<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;5&quot;</span><span style="color: #339933;">&gt;</span></pre></div></div>

<p>Sieht einfach aus, hat mich aber eine Stunde meiner Lebenszeit gekostet.</p>
]]></content:encoded>
			<wfw:commentRss>http://elektroelch.de/blog/2011/12/06/die-geheimnissvolle-selectbox-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Barcamp Mainz 2011, Erlebnisse eines Anfängers (2. Tag)</title>
		<link>http://elektroelch.de/blog/2011/11/24/bcmz2011-2/</link>
		<comments>http://elektroelch.de/blog/2011/11/24/bcmz2011-2/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 09:28:12 +0000</pubDate>
		<dc:creator>latz</dc:creator>
				<category><![CDATA[Verschiedenes]]></category>

		<guid isPermaLink="false">http://elektroelch.de/?p=2574</guid>
		<description><![CDATA[Auftakt (Foto: netzkultur) Die Anfahrt zum Camp war heute noch einfacher als gestern, denn Sonntags morgens um 8:15 Uhr ist nicht wirklich viel auf den Straßen los. Parkplatz war auch wieder fast leer und so war der abschließende Fußweg sehr kurz. (Foto: netzkultur) Beim Frühstück war es heute wesentlich ruhiger als am Vortag, die meisten [...]]]></description>
			<content:encoded><![CDATA[<h3>Auftakt</h3>
<div class="wp-caption alignleft" style="width: 250px;;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: left;"><a href="https://secure.flickr.com/photos/netzkultur/6362338163/"><img class=" " src="https://farm7.staticflickr.com/6114/6362338163_1b7416183e_m.jpg" alt="" width="240" height="180" /></a>
<p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">(Foto: <a href="https://secure.flickr.com/photos/netzkultur/">netzkultur</a>)</p>
</div>
<p>Die Anfahrt zum Camp war heute noch einfacher als gestern, denn Sonntags morgens um 8:15 Uhr ist nicht wirklich viel auf den Straßen los. Parkplatz war auch wieder fast leer und so war der abschließende Fußweg sehr kurz.<br clear="all"/></p>
<div class="wp-caption alignright" style="width: 250px;;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: right;"><a href="https://secure.flickr.com/photos/netzkultur/6368791899/"><img class=" " src="https://farm7.staticflickr.com/6034/6368791899_96d1f0f69e_m.jpg" alt="" width="240" height="180" /></a>
<p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">(Foto: <a href="https://secure.flickr.com/photos/netzkultur/">netzkultur</a>)</p>
</div>
<p>Beim Frühstück war es heute wesentlich ruhiger als am Vortag, die meisten klammerten sich an einen Becher Kaffee, starrten auf ihren Monitor oder saßen einfach nur rum. Der erste Tag schien vielen noch in den Knochen zu stecken. Mir ging es nicht anders, 9 Uhr am Sonntag morgen ist auch nicht unbedingt meine bevorzugte Zeit, um wach zu sein. Nach zwei Bechern Kaffee (der wirklich lecker war) und drei halben Brötchen war ich dann bereit für die Sessionplanung.<br />
<span id="more-2574"></span><br />
Hier sah es zuerst so aus, als ob heute niemand etwas vortragen wollte, doch die Schlange wurde langsam länger. Die Themen machten heute einen etwas technischeren Eindruck als gestern, mehr Programmierung und und mehr Webdesign. Zum Glück wurden die Sessions so gelegt, dass ich an allen für mich interessanten Sessions teilnehmen konnte.<br clear="all"/></p>
<h3>Session 1: Software Craftmanship &amp; CodeRetreat (<a href="https://www.xing.com/profile/Benjamin_Reitzammer" title="Benjamin Reizammer">Benjamin Reitzammer</a>)</h3>
<p>Als Softwareentwickler (vulgo Programmier-Hure) ist man immer bestrebt, seine Fähigkeiten zu verbessern. Von Benjamins (<a href="http://www.twitter.com/benjamin">@benjamin</a>) Session habe ich mir Hinweise erhofft, wie ich mit Verstand und systematisch mein &#8222;Skills&#8220; aufbessern kann.<br />
Ich wurde nicht enttäuscht. Benjamin stellte in einer lockeren Art einige Pioniere des &#8222;Software craftmanships&#8220; und deren Ideen und Konzepte vor (leider habe ich vergessen die Namen mitzuschreiben).<br />
Ein Satz bleibt mir besonders im Gedächtnis &#8222;Es ist völlig in Ordnung, immer Softwareentwickler zu bleiben. Man muss keine &#8218;Karriere&#8216; machen.&#8220;</p>
<h3>Session 2: TDD Intro (<a href="http://www.ambestengestern.de/" title="Benjamin Reizammer">Benjamin Reitzammer</a>)</h3>
<p>Zufälligerweise war die nächste Session die ich besuchte wieder bei Benjamin. Die Idee des &#8222;Test Driven Development&#8220; hat mich schon immer interessiert, nur konnte ich mich nie aufraffen, mich intensiver damit zu beschäftigen.<br />
Der Ansatz dieser Session war interessant. Benjamin programmiert live und die Teilnehmer sagen ihm, was er schreiben soll. Als Aufgabenstellung wurde das &#8222;<a href="http://codingdojo.org/cgi-bin/wiki.pl?KataFizzBuzz" title="FizzBuzz">FizzBuzz</a>&#8222;-Problem gestellt. Gemeinsam wurde dann Schritt für Schritt eine Testklasse erarbeitet. Der Wissensstand der Teilnehmer war durchaus unterschiedlich, von &#8222;noch nie was mit TDD gemacht&#8220; bis &#8222;TDD-Profi&#8220;. Das kleine Programm und die dazugehörigen Tests wurden dann auch hauptsächlich von den Anfängern gebastelt und sie wurden dabei von den Erfahreneren immer wieder in die richtige Richtung gelotst. Ich denke, auf diese Weise haben beide etwas gelernt, die einen wie TDD prinzipiell funktioniert, die anderen, welche Probleme für Neulinge auftreten.<br />
Eine sehr gelungene dreiviertel Stunde. Leider war der Raum, ein sehr steiler Hörsaal, für diese Art Session maximal ungeeignet. Entweder konnte man weit vorne beim Vortragenden sitzen, musste sich aber den Kopf verrenken, um die Beamerprojektion zu sehen, oder man saß sehr weit hinten. Sehr diskussionsfördernd war das nicht; vielleicht sollte es bei der nächsten Sessionplanung möglich sein, anzugeben, ob es sich hauptsächlich um einen Vortrag handelt oder um eine eine Diskussion oder Gruppenarbeit.</p>
<h3>Mittagspause</h3>
<div class="wp-caption alignright" style="width: 250px;;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: right;"><a href="https://secure.flickr.com/photos/netzkultur/6369246725/"><img class=" " src="https://farm7.staticflickr.com/6101/6369246725_5000c2e87b_m.jpg" alt="" width="240" height="180" /></a>
<p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">(Foto: <a href="https://secure.flickr.com/photos/netzkultur/">netzkultur</a>)</p>
</div>
<p>Die Mittagspause fand am Sonntag im Untergeschoss statt. Es gab den Klassiker, Chili con Carne, sowie Kürbis- und Kartoffelsuppe. Dazu gab es Brötchen und Bretzel. Alles sehr lecker und sättigend. Anschließend gab es direkt den nachmittäglichen Kuchen, denn die Veranstaltung endete heute ja früher, so dass keine Zeit für ein ausgedehntes Kaffeekränzchen blieb. <br clear="all"/></p>
<h3>Session 3: Animation und Interaktivität fürs Web (<a href="http://martinkraft.net/">Martin Kraft</a>)</h3>
<p>Um es vorweg zu sagen: ich hatte mir von dieser Session etwas anderes erwartet, war am Ende aber nicht enttäuscht.<br />
Martin (<a href="http://www.twitter.com/martin_kraft">@martin_kraft</a>) fing mit einem historischen Überblick der Entwicklung von Webanimationen an, insbesondere Flash, und im Vergleich dazu die Entwicklung der Browser. Dabei arbeitete er heraus, dass Flash bis vor wenigen Monaten ständig weiter entwickelt wurde, während die Browserentwicklung stagnierte. Erst in letzter Zeit hat Google mit der Einführung von Chrome für Bewegung auf dem Markt gesorgt.<br />
Abschließend ging es darum, das Flash im Web noch lange nicht tot sei und HTML5 und CSS3 noch lange nicht so ausgereift seien, um Flash abzulösen. Dazu gab es durchaus unterschiedliche Meinungen, die eifrig diskutiert wurden. Ein abschließendes Ergebnis gab es natürlich nicht.</p>
<h3>Session 4: Zaubern mit WordPress (Felix Riesberg)</h3>
<p>WordPress ist mein Steckenpferd und deshalb war diese Session für mich Pflicht.<br />
Felix erklärte die Grundlagen von Hooks in WordPress und anschließend Filter und Aktionen etwas genauer. Näher erläutert wurde das Konzept durch eine Vielzahl an kurzen Beispielen, die Felix aus seiner Schnippselkiste zog. Diese Art der Präsentation war vielleicht für die Nicht-Programmierer unter den Teilnehmern etwas zu zügig, aber in der Kürze der Zeit konnten so wenigstens viele Beispiele für den Einsatz von Filtern und Aktionen gebracht werden.<br />
Am Ende sang Felix dann noch ein Loblied auf Webmatrix, was ich etwas nicht ganz so toll fand, weil es etwas den Charme einer Kaffeefahrt in die Runde brachte.</p>
<h3>Session 5: CSS3 im Praxiseinsatz (<a href="http://grochtdreis.de/weblog">Jens Grochtdreis</a>)</h3>
<p>CSS3 ist so ähnlich wie TDD, man will es sich unbedingt mal ansehen, aber wirklich Zeit und Muße findet man dafür dann doch nie.<br />
Man merkte Jens (<a href="http://www.twitter.com/flocke">@flocke</a>) sofort an, dass er Ahnung vom Thema hat und dass er sein Wissen auch gut an andere weitergeben kann. So war die Session dann auch sehr kurzweilig und informativ. Viele Bespiele veranschaulichten das Thema und etwas IE-Bashing durfte auch nicht fehlen, aber hier wurde es sogar begründet. Morgen fange ich mit CSS3 an, oder übermorgen, dann aber bestimmt!</p>
<h3>Abschluss</h3>
<div class="wp-caption alignright" style="width: 250px;;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: right;"><a href="https://secure.flickr.com/photos/netzkultur/6363779401/"><img class=" " src="https://farm7.staticflickr.com/6048/6363779401_5997dfe34d_m.jpg" alt="" width="240" height="180" /></a>
<p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">(Foto: <a href="https://secure.flickr.com/photos/netzkultur/">netzkultur</a>)</p>
</div>
<p>Um kurz nach vier war das Barcamp Rhein-Main, wie es offiziell hast, vorüber und wurde mit einer Versammlung aller Teilnehmer abgeschlossen. Alle waren anscheinend zufrieden, die Helfer immer noch guter Laune. Was will man mehr?<br />
Zum Schluss wurden alle noch &#8222;gezwungen&#8220; einer der Bierbänke mit <a href="http://twitpic.com/7gx4u6">nach oben zum LKW zu nehmen</a>, um die Helfer zu entlasten. Daran, dass dies wunderbar geklappt hat und wirklich keiner ohne Bank das Gebäude verlasen hat, kann man den Geist einer solchen Veranstaltung gut erkennen.</p>
<h3>Mein Resümee</h3>
<p>Das Barcamp Rhein-Main war eine sehr gelungene Veranstaltung, die hervorragend geplant war, vor allem wenn man bedenkt, dass jeder ehrenamtlich gearbeitet hat und alles in der Freizeit erledigt wurde. Besonders gut fand ich, dass auch die Leute ohne Laptop und Smartphone gedacht wurde und der Sessionplan auch ausgehängt wurde.<br />
Immer wenn ich erzähle, dass es nichts kostet an einem Barcamp teilzunehmen und dass man auch noch Essen und Trinken kostenlos bekommt, ernte ich ungläubige Blicke. Vor allem von Leuten, die für ihre letzte Konferenzteilnahme mehrere hundert Euro bezahlt, dort nichts Interessantes erfahren und nur Langweiler kennengelernt haben.<br />
Ich dagegen habe an diesem Wochenende vieles erfahren und gelernt. TDD werde ich mir auf jeden Fall ansehen, Timelapse-Fotografie würde ich auch gerne machen, mangels Ausrüstung wird das aber noch warten müssen. CSS3 wird meine Webseite demnächst auch verschönern und neue Seiten werden mit Selenium getestet. </p>
<p>Bis nächstes Jahr, wir sehen uns auf dem #bcrm 2012.</p>
<h3>Weitere Berichte über das #bcmz 2011</h3>
<ul>
<li>
     <a href="http://gruenderheld.blogspot.com/2011/11/mainz-2011-eindrucke-vom-ersten-tag-das.html">BarCamp Mainz 2011 &#8211; Eindrücke vom ersten Tag</a> (Gruenderheld.de)</li>
<li>
    <a href="http://danielrehn.wordpress.com/2011/11/19/barcamp-mainz-tag/">#bcmz: Barcamp Mainz – Tag 1</a> und <a href="http://danielrehn.wordpress.com/2011/11/20/bcmz-barcamp-mainz-tag-2/">#bcmz: Barcamp Mainz – Tag 2</a> (Daniel Rehn)</li>
<li><a href="http://www.nicokirch.de/meine-halbe-barcamp-taufe-barcamp-mainz-2011-bcmz/">Meine halbe BarCamp-Taufe: BarCamp Mainz 2011 #bcmz</a> (Nicos Blog)</li>
<li><a href="http://blog.carrot-solutions.de/2011/11/21/das-barcamp-mainz-2011-auch-bekannt-als-bcmz">Das Barcamp in Mainz 2011 &#8211; auch bekannt als: #bcmz</a> (Ralf Baums Blog)</li>
<li><a href="http://blog.mahrko.de/2011/11/22/rueckblick-auf-das-barcamp-mainz/">Rückblick auf das Barcamp Mainz</a> (mahrko)</li>
<li><a href="http://strangeoptics.blogspot.com/2011/11/notes-from-barcamp-bcmz-2011-in-mainz.html">Notes From The BarCamp #BCMZ 2011 In Mainz Day One</a> (strangeoptics)</li>
<li><a href="http://hubert-mayer.de/2011/11/barcamp-mainz-2011-bcmz-mein-rueckblick-auf-den-samstag/">Barcamp Mainz 2011 = #bcmz – mein Rückblick auf den Samstag</a> (Hubert Mayer)</li>
<li><a href="http://hubert-mayer.de/2011/11/barcamp-mainz-2011-bcmz-mein-rueckblick-auf-den-sonntag/">Barcamp Mainz 2011 = #bcmz – mein Rückblick auf den Sonntag</a> (Hubert Mayer) <em>(neu 26. Nov)</em></li>
<li><a href="http://www.blariog.net/2011/11/20/barcamp-mainz-bcmz/">BarCamp Mainz (#bcmz) (Mario Hannemer)
<li><a href="http://injelea-blog.de/2011/11/24/barcamp-mainz-2011-fotos-sessions-pr/">BarCamp Mainz 2011 – Fotos, Sessions, PR</a> (Frank Hamm) <em>(neu 25. Nov)</em></li>
<li><a href="https://www.youtube.com/watch?v=sKuUqSXikbs&#038;feature=youtu.be">Was Sie schon immer über Barcamps wissen wollten!</a> (auf dem #bcmz 2011 gedreht) <em>(neu 26. Nov)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://elektroelch.de/blog/2011/11/24/bcmz2011-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Barcamp Mainz 2011, Erlebnisse eines Anfängers (1. Tag)</title>
		<link>http://elektroelch.de/blog/2011/11/22/bcmz2011-1/</link>
		<comments>http://elektroelch.de/blog/2011/11/22/bcmz2011-1/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 10:19:17 +0000</pubDate>
		<dc:creator>latz</dc:creator>
				<category><![CDATA[Verschiedenes]]></category>

		<guid isPermaLink="false">http://elektroelch.de/?p=2503</guid>
		<description><![CDATA[(Foto: netzkultur) Das Barcamp Mainz war mein erstes &#8222;richtiges&#8220; Barcamp, dass das WordCamp Köln ja schon alle Sessions im Voraus geplant hatte. Ich hatte also keine Ahnung, was auf mich zu kam. Die Anfahrt war auf jeden Fall schon mal sehr angenehm, da ich nur 20 km vom Veranstaltungsort, der Uni Mainz, entfernt wohne. Also [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 250px;;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: left;"><a href="https://secure.flickr.com/photos/netzkultur/"><img class=" " src="https://farm7.staticflickr.com/6225/6362338663_b5e09bd7e9_m.jpg" alt="" width="240" height="180" /></a></p>
<p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">(Foto: <a href="https://secure.flickr.com/photos/netzkultur/">netzkultur</a>)</p>
</div>
<p>Das Barcamp Mainz war mein erstes &#8222;richtiges&#8220; <a title="Wikipedia: Barcamp" href="https://de.wikipedia.org/wiki/Barcamp">Barcamp</a>, dass das <a title="Wordcamp Köln" href="http://wordcamp.de/">WordCamp Köln</a> ja schon alle Sessions im Voraus geplant hatte. Ich hatte also keine Ahnung, was auf mich zu kam.</p>
<p>Die Anfahrt war auf jeden Fall schon mal sehr angenehm, da ich nur 20 km vom Veranstaltungsort, der <a title="Universität Mainz" href="http://www.uni-mainz.de/">Uni Mainz</a>, entfernt wohne. Also um kurz nach Acht auf die Autobahn, in Mainz zwei-, dreimal abgebogen und schon war ich da. Parken war kein großes Problem, da sich ein großer (und vor allem kostenloser) Parkplatz direkt vor dem Gebäude befand. Der Tag fing also schon mal gut an.<span id="more-2503"></span></p>
<h3>Der Vorlauf</h3>
<div class="wp-caption alignright" style="width: 250px;;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: right;"><a href="https://secure.flickr.com/photos/netzkultur/6362328207/"><img class=" " src="https://farm7.staticflickr.com/6234/6362328207_0a3d7f5923_m.jpg" alt="" width="240" height="180" /></a></p>
<p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">(Foto: <a href="https://secure.flickr.com/photos/netzkultur/">netzkultur</a>)</p>
</div>
<p>Der eigentlich Veranstaltungsort war einfach zu finden, Schilder wiesen den Weg. Die  Anmeldung ging zügig, als Gimmick gab es diesmal kein T-Shirt, sondern eine Stofftasche. Angesichts der frühen Stunde erfreute mich der Kaffeeduft, der aus Untergeschoss nach oben zog. Ich folgte ihm wie eine Comicfigur und fand mich vor der Auswahl zwischen Filterkaffee und einem Schicki-Micki-Kaffeautomaten. Da ich keine ausgesprochener Kaffeetrinker bin, entschied ich mich für den Filterkaffee, um die Schlange vor dem Automaten zu umgehen und war von der Qualität überrascht. Schnell noch zwei Sandwiches vom üppigen Frühstücksbuffet geschnappt und erstmal auf einer der vielen Sitzmöglichkeiten Platz genommen, um richtig wach zu werden. Zeit hatte ich genug, ich hatte mich nämlich mit dem Zeitplan versehen und die Sessionplaunung ging erst eine Stunde später los als von mir angenommen.</p>
<h3> Die Sessionplanung</h3>
<div class="wp-caption alignleft" style="width: 250px;;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: left;"><a href="https://secure.flickr.com/photos/triplesense/6362068839/"><img class=" " src="https://farm7.staticflickr.com/6052/6362068839_2dc06ba7af_m.jpg" alt="" width="240" height="180" /></a></p>
<p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">(Foto: <a href="https://secure.flickr.com/photos/triplesense/">triplesense</a>)</p>
</div>
<p>Auf eine allgemeine Vorstellungsrunde wurde verzichtet, jeder sollte sich einfach seinem Sitznachbarn vorstellen. Nun gut, damit kannte ich immerhin schon mal zwei neue Leute.<br />
Dem Aufruf zur Sessionvorstellung folgten ca. 40(!) Teilnehmer, dementsprechend lange hat es auch gedauert. Die potenziellen Referenten warn aber so gut drauf, dass selbst dieser Teil sehr unterhaltsam war.</p>
<h3></h3>
<h3>Session 1: Design of Experiments  (Stefan Moser)</h3>
<div class="wp-caption alignright" style="width: 250px;;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: right;"><a href="https://secure.flickr.com/photos/netzkultur/6363502657/"><img class=" " src="https://farm7.staticflickr.com/6236/6363502657_4295cb3a5c_m.jpg" alt="" width="240" height="180" /></a></p>
<p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">(Foto: <a href="https://secure.flickr.com/photos/netzkultur/">netzkultur</a>)</p>
</div>
<p>In der ersten Sessionrunde war kein  Thema, was mich wirklich interessierte, also entschloss ich mich dazu, das zu nehmen, das meinem üblichen Erfahrungsschatz am wenigsten entsprach, man will ja auch was Neues lernen.<br />
Ich hatte keine Ahnung was mich erwartete. Man merkte dem Referenten <a title="Stefan Moser" href="https://www.xing.com/profile/Stefan_Moser7" target="_blank">Stefan Moser</a> sofort an, dass er Ahnung und vor allem Leidenschaft für sein Thema hat. Kurz gesagt ging es darum, wie man Versuchsreihen auf ein Minimum reduzieren kann und trotzdem zu einem brauchbaren &#8222;nicht ganz Optimum&#8220; kommen kann. Hierdurch wird Zeit und vor allem Geld gespart und man kann zügig zur Produktion übergehen. Weitere Optimierungen sind dann immer noch möglich.<br />
Der Vortrag war sehr mathematisch aufgebaut und ich kann nicht behaupten, alles verstanden zu haben. Trotzdem hatte ich hinterher das Gefühl, etwas neues und interessantes gelernt zu haben, das ich momentan zwar nicht einsetzen kann, aber man weiß ja nie, was so in der nächsten Zeit auf einen zukommt.</p>
<h3>Session 2: Screencasting HowTo (Andreas Pilz)</h3>
<p>Screencasting ist etwas, was ich schon immer machen wollte und auf dem WordCamp hatte ich leider die entsprechende Session verpasst, die allerdings auch <a href="http://www.google.de/url?sa=t&amp;rct=j&amp;q=Wordcamp+Deutschland+screencasting&amp;source=web&amp;cd=8&amp;ved=0CFYQIDAH&amp;url=http%3A%2F%2Fwebcache.googleusercontent.com%2Fsearch%3Fq%3Dcache%3AhtBCG0C7z5kJ%3Afkblog.de%2Fwp%2Ffazit-wordcamp-koln-2011%2F%2BWordcamp%2BDeutschland%2Bscreencasting%26cd%3D8%26hl%3Dde%26ct%3Dclnk%26gl%3Dde%26client%3Dfirefox-a&amp;ei=VzPKTrDOHcqM-waR97kp&amp;usg=AFQjCNEBCe6qvAPR5bsWyz4-QCfO5aQ2EQ" target="_blank">nicht so toll gewesen sein soll</a>. Hier merkte man sehr schnell, das <a title="Andreas Pilz XING-Profil" href="https://www.xing.com/profile/Andreas_Pilz5">Andreas Pilz</a> (@<a title="Twitter account" href="http://www.twitter.com/startupbus">startupbus</a>) sehr viel Ahnung vom Thema hat und dies auch gut mitteilen kann.<br />
Als Hinweise nehme ich aus der Session mit, dass man einen Screencast sehr gut planen sollte und von Anfang an sich über das Zielpublikum klar sein sollte. Weiterhin ist eine gute Vorbereitung des Rechners notwendig, um ein immer gleich definiertes Umfeld zu haben.<br />
Besonderen Wert legte Andreas auf die Vertonung von Screencasts und wie wichtig es ist, professionelle Sprecher einzusetzen, wenn man ein gehobenes Publikum ansprechen möchte und evtl. sogar Geld für den Screencast verlangen möchte. Andreas nannte auch konkrete Preise und Möglichkeiten an Sprecher heran zu kommen.<br />
Obwohl Andreas ausschließlich <a title="Camtasia product page" href="http://www.techsmith.de/camtasia.asp">Camtasia </a>einsetzt, war dies keine Werbeveranstaltung und er wies auch auch auf andere Produkte hin.<br />
Insgesamt bin ich schlauer aus der Session herausgegangen und fühle mich motiviert, bei meinen nächsten OS-Projekten ein Screencast als Einführung zu erstellen.</p>
<ul>
<li><a href="http://www.learn2use.de/">Lear2Use</a></li>
</ul>
<h3>Interludium: Essen fassen</h3>
<p>Beim morgendlichen Einlass gab es für jeden Teilnehmer eine Essensmarke, die es ihm jetzt ermöglichte in der direkt angrenzenden <a title="Mensa der Uni Mainz" href="http://www.studentenwerk-mainz.de/mensa.html">Mensa </a>der<a title="Universität Mainz" href="http://www.uni-mainz.de/"> Uni Mainz</a> ein Mittagessen zu bekommen. Zu diesem Zweck war die Mensa im Ausgabebereich zweigeteilt: Selbstzahler mussten rechts abbiegen, Besitzer ein Essensmarke konnten diese in ein Topf und konnte sich dann eine Lasagne mit Fleisch oder Gemüse und einen Salat nehmen. Das erinnerte doch an die guten alten Zeiten&#8230;</p>
<h3>Session3: Programmieren in Scala  (<a title="Kim Stebel Xing-Profil" href="https://www.xing.com/profile/Kim_Stebel">Kim Stebel</a>)</h3>
<p>Ich interessiere mich immer für andere Programmiersprachen, bin aber im Allgemeinen zu faul, mich wirklich hinzusetzen und einen Lerntag einzulegen. Scala als funktionelle Sprache interessierte mich besonders, denn ich habe irgendwie nie so richtig verstanden, was denn nun so toll daran sein soll.<br />
Leider fand die Session in der sogenannten &#8222;Bierbank-Lounge&#8220; statt, denn es wurden mehr Sessions angeboten als Räume vorhanden waren. Diese &#8222;Lounge&#8220; stellte sich auch als größtes Problem heraus, denn Kim hatte nicht unbedingt die lauteste Stimme und da wir alle um ihn herum saßen, waren es auch schwierig für ihn, in eine bestimmte Richtung zu sprechen. Besonders störend war es aber, dass sich der Ort nur einige Meter vom gut frequentierten Verköstigungsbereich entfernt lag und das Kellergerschoss sehr gut den Schall transportierte. Alles zu verstehen war also das größte Problem.<br />
Die Session selber bestand aus Live-Programmierung in der Kommandozeile, was meiner Meinung nach auch sinnvoller ist, als ellenlange Codeschnippsel vorgeworfen zu bekommen, da man sogar davon lernt, wenn der Vortragende einen Fehler macht.<br />
Alles in allem eine Session die Lust auf funktionelle Programmierung gemacht, es muss ja nicht unbedingt <a title="Scala" href="http://www.scala-lang.org/">Scala </a>sein.</p>
<h3>Session 4: Selenium Quickstart (<a href="http://www.blariog.net/">Mario Hanneken</a>)</h3>
<p>Tests sind in der Programmierung momentan stark angesagt, warum sollten sie also vor der Web-&#8220;Programmierung&#8220; halt machen? Will man sein Geld in diesem Bereich verdienen, kann es ja auch nicht falsch sein, seine Arbeit regelmäßig zu überprüfen. Ich war also sehr gespannt auf die Session, die leider wieder in der &#8222;Bierbank-Lounge&#8220; stattfand und deshalb ähnliche Probleme wie Kims hatte.<br />
Mario (<a href="http://www.twitter.com/blariog">@blariog</a>)ist es gelungen, an einem einfachen Beispiel zu demonstrieren, wie wie man mit <a title="Selenium" href="http://seleniumhq.org/">Selenium</a> sein Frontend testen kann. Das Vorgehen gestaltet sich sehr einfach, da Selenium eine Rekorder-Funktion hat und man einfach einige Testfälle direkt im Browser eingibt und dann nach den Änderungen im Source der Webseite durch abspielen des gesamten Tests schnell überprüfen, ob das System immer noch korrekt arbeitet.<br />
Insgesamt eine Session, die einem vor Augen geführt hat, wie sinnvoll automatisierte Tests von Webseiten sind und mit welchen geringen Aufwand sie einzurichten sind.</p>
<h3>Interludium 2: Es ist Kuchen da!</h3>
<div class="wp-caption alignright" style="width: 250px;;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: right;"><a href="https://secure.flickr.com/photos/netzkultur/6363746927/"><img class=" " src="https://farm7.staticflickr.com/6233/6363746927_10995fc4de_m.jpg" alt="" width="240" height="180" /></a></p>
<p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">(Foto: <a href="https://secure.flickr.com/photos/netzkultur/">netzkultur</a>)</p>
</div>
<p>Eine nette Überraschung gab es gegen Nachmittag, als leckere (sehr leckere!) Muffins aufgefahren wurden. Das gab neue Energie für die folgenden Stunden.</p>
<h3>Session 5: Timelapse Ffm &#8211; Zeitraffer Videos (Marc Schmidt)</h3>
<div class="wp-caption alignleft" style="width: 250px;;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: left;"><a href="https://secure.flickr.com/photos/netzkultur/6363803095/"><img class=" " src="https://farm7.staticflickr.com/6055/6363803095_d0c20f960e_m.jpg" alt="" width="240" height="180" /></a></p>
<p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">(Foto: <a href="https://secure.flickr.com/photos/netzkultur/">netzkultur</a>)</p>
</div>
<p>Ich fotografiere gerne, wenn auch nicht gut. Mein besonderes Interesse wecken Projekte, die die Digitalfotografie mittels des Computers in Bereiche bringen, die für die analoge Technik unzugänglich sind.<br />
<a href="htto://nochsoeiner.wordpress.com">Marc Schmidt</a> (<a href="http://www.twitter.com/nochsoeiner">@nochsoeiner</a>)zeigt mit seinem Projekt &#8222;Timelapse FFM&#8220; (<a href="http://www.twitter.com/timelapseffm">@timelapseffm</a>), dass es nicht schwierig und teuer sein muss. Ein Mittelklasse-Kamera und einige Standardtools genügen ihm, um eindrucksvolle Zeitraffer-Videos von Frankfurt/Main zu machen. Zugegeben, Frankfurt ist natürlich ein gefundenes Fressen für Fotografen, aber man muss auch die Ideen haben und sie umzusetzen wissen. Marc wusste mit seinen Videos den Hörsaal zu begeistern, spontaner Applaus nach jeden Video belegte es.<br />
Etwas muss man aber doch in größerem Umfang investieren: Zeit. Nach Marcs Aussagen sollte man nicht zu viele soziale Kontakte haben und schon gar nicht Ehefrau und Kinder.<br />
Wieder eine Session, die mich motiviert hat, etwas  Neues ausprobieren zu wollen. Leider mangelt es mir hierfür im Moment aber an Zeit und Ausrüstung. Ich werde es aber auf jeden Fall auf meiner ToDo-Liste behalten.</p>
<ul>
<li><a href="https://www.youtube.com/user/nochsoeiner">TimelapseFFM bei youtube</a></li>
</ul>
<h3>Session 6: Abläufe mit PHP und Phing automatisieren (<a title="Christian Münch" href="http://blog.muench-worms.de/">Christian Münch</a>)</h3>
<p>Zum Abschluss des Tages gab es eine Session über die Automatisierung von wiederkehrenden Aufgaben bei der Entwicklung von PHP-Projekten. Ob es geschickt war, eine sehr technische Session zu so vorgerückter Stunde zu legen, ist fraglich, es fanden sich aber immerhin fünf Teilnehmer, die noch die nötige Aufmerksamkeit aufbringen wollten, um dem Thema zu folgen.<br />
Christian (<a href="http://www.twitter.com/cmuench">@cmuench</a>)gelang es aufzuzeigen, wie es mit Hilfe von &#8222;<a title="Phing Homepage" href="http://www.phing.info/trac/">phing</a>&#8220; möglich ist, die Auslieferung von PHP-Programmen zu vereinfachen, indem man automatisch Pakete schnürt, Daten in Repositories überträgt und vorher evtl. sogar noch ein paar Unit-Tests ausführt. Die Darstellung des Zusammenhangs zwischen den verschiedenen Konfigurationsdateien und eine Übersicht über die vielen, vielen sogenannten &#8222;Tasks&#8220; sollten es mir ermöglichen, bald meine WordPress-Plugins über ein Skript zu veröffentlichen.</p>
<ul>
<li><a href="http://www.slideshare.net/cmuench/ablufe-mit-phing-automatisieren">Slides der Session</a></li>
</ul>
<h3>Abschluss</h3>
<p>Insgesamt ein gelungener Tag, mit vielen Anregungen, die auf Umsetzung warten. Abends war ich hundemüde, so dass ich mir die Abschlusssession gespart habe und direkt nach Hause gefahren bin.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://elektroelch.de/blog/2011/11/22/bcmz2011-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress: Neuladen von Skripts und Stylesheets erzwingen</title>
		<link>http://elektroelch.de/blog/2011/10/21/wordpress-neuladen-von-skripts-und-stylesheets-erzwingen/</link>
		<comments>http://elektroelch.de/blog/2011/10/21/wordpress-neuladen-von-skripts-und-stylesheets-erzwingen/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 07:23:22 +0000</pubDate>
		<dc:creator>latz</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://elektroelch.de/?p=2436</guid>
		<description><![CDATA[Bei der Entwicklung von WordPress-Themes oder -Plugins taucht immer wieder das Problem auf, dass Skripte oder Stylesheets nicht direkt von der Quelle sondern aus einem Cache geladen werden, weil sie irgendwo auf dem Weg vom Server zum Browser zwischengespeichert werden. Es gibt verschiedenee Möglichkeiten dieses zu unterbinden, indem man z.B. den Browsercache in den Optionen [...]]]></description>
			<content:encoded><![CDATA[<p>Bei der Entwicklung von WordPress-Themes oder -Plugins taucht immer wieder das Problem auf, dass Skripte oder Stylesheets nicht direkt von der Quelle sondern aus einem Cache geladen werden, weil sie irgendwo auf dem Weg vom Server zum Browser zwischengespeichert werden. Es gibt verschiedenee Möglichkeiten dieses zu unterbinden, indem man z.B. den Browsercache in den Optionen ausschaltet oder ein Webentwicklungs-AddOn benutzt. Manchmal funktioniert das allerdings nicht, weil es die verschiedensten Möglichkeiten des Cachings gibt und man vielleicht nicht alle ausgeschaltet hat.<br />
<span id="more-2436"></span><br />
WordPress beinhaltet eine einfache Möglichkeit sicherzustellen, dass alle Stylesheets und Skripte direkt von der Quelle geladen werden, indem man einen Versions-Parameter definiert:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">wp_enqueue_script<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$handle</span><span style="color: #339933;">,</span> <span style="color: #000088;">$src</span><span style="color: #339933;">,</span> <span style="color: #000088;">$deps</span><span style="color: #339933;">,</span> <span style="color: #000088;">$ver</span><span style="color: #339933;">,</span> <span style="color: #000088;">$in_footer</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
wp_enqueue_style<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$handle</span><span style="color: #339933;">,</span> <span style="color: #000088;">$src</span><span style="color: #339933;">,</span> <span style="color: #000088;">$deps</span><span style="color: #339933;">,</span> <span style="color: #000088;">$ver</span><span style="color: #339933;">,</span> <span style="color: #000088;">$media</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Man erhöht den <code>$ver</code>-Parameter jedesmal, wenn die Datei geändert wird:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">wp_enqueue_script<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'my_script'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'my_script.js'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'0.11'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
wp_enqueue_style<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'my_style'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'my_style.css'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'0.11'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Die Url des Stylesheets/Plugins ändert sich zu &#8222;<code>.../my_script.js?ver=0.11</code>&#8220;, so dass jedes Cachingsystem erkennt, dass es sich um eine geänderte Datei handelt und lädt sie erneut, damit der Benutzer immer die aktuellste Version erhält.</p>
<p>Es ist allerdings mühselig, die Versionsnummer auf einer Entwicklungsumgebung jedes mal manuell zu ändern, wenn man etwas an der Datei geändert hat und wir sind Programmierer, richtig? Also automatisieren wir die Sache einfach:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">wp_enqueue_script<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'my_script'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'my_script.js'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
wp_enqueue_style<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'my_style'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'my_style.css'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Der Wert von <a href="http://php.net/manual/de/function.time.php">time()</a> ändert sich jede Sekunde und somit ändert sich auch die Versions-ID der Datei ständig und sie wird von der Quelle und nicht aus irgendeinem Cache geladen.</p>
<p>Etwas nachteilig ist allerdings, das man den zeitbasierten Parameter jefesmal gegen eine &#8222;echte&#8220; Versionsnummer austauschen muss, wenn man den Code an den Benutzer ausliefert, denn dieser soll ja immer noch den Vorteil des Cashing nutzen können. Erweitern wir also die Idee:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">define</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'VERSION'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'1.1'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> version_id<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> WP_DEBUG <span style="color: #009900;">&#41;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">return</span> VERSION<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
wp_enqueue_script<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'my_script'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'my_script.js'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> version_id<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
wp_enqueue_style<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'my_style'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'my_style.css'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> version_id<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Auf diese Weise kann man sicherstellen, das bei der Entwicklung alles direkt von der Quelle geladen wird, in einer Produktionsumgebung allerdings alle Caching-Möglichkeiten genutzt werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://elektroelch.de/blog/2011/10/21/wordpress-neuladen-von-skripts-und-stylesheets-erzwingen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress: Benutzern das Passwort-Feld entziehen</title>
		<link>http://elektroelch.de/blog/2011/09/29/wordpress-benutzern-das-passwort-feld-entziehen/</link>
		<comments>http://elektroelch.de/blog/2011/09/29/wordpress-benutzern-das-passwort-feld-entziehen/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 13:00:02 +0000</pubDate>
		<dc:creator>latz</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://elektroelch.de/?p=2427</guid>
		<description><![CDATA[Du hast also einen Benutzer erstellt und ihm ein gutes Passwort gegeben, damit die Sicherheit Deines Blogs nicht gefährdet wird? Leider kannst Du aber nicht sicher sein, dass der Benutzer dieses gute Passwort beibehält, denn er kann es ganz einfach auf seiner Profilesiete ändern. Dieses Problem kann allerdings mit einem Filter gelöst werden: if &#40; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://elektroelch.de/wp-content/uploads/2011/09/120px-crystal_clear_password.png" rel="lightbox[2427]"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;'  src="http://elektroelch.de/wp-content/uploads/2011/09/120px-crystal_clear_password.png" alt="" title="120px-Crystal_Clear_Password" width="120" height="120" class="alignleft size-full wp-image-2429" /></a>Du hast also einen Benutzer erstellt und ihm ein gutes Passwort gegeben, damit die Sicherheit Deines Blogs nicht gefährdet wird? Leider kannst Du aber nicht sicher sein, dass der Benutzer dieses gute Passwort beibehält, denn er kann es ganz einfach auf seiner Profilesiete ändern.<br />
Dieses Problem kann allerdings mit einem Filter gelöst werden:<br />
<span id="more-2427"></span></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> is_admin<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
  add_action<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'init'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'disable_password_fields'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">10</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> disable_password_fields<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span> current_user_can<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'administrator'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
    <span style="color: #000088;">$show_password_fields</span> <span style="color: #339933;">=</span> add_filter<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'show_password_fields'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'__return_false'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Jetzt kein nur noch ein Benutzer mit der Rolle &#8222;Administrator&#8220; das Passwort der Benutzer ändern und sicherstellen, dass sie gute Passwörter haben.</p>
]]></content:encoded>
			<wfw:commentRss>http://elektroelch.de/blog/2011/09/29/wordpress-benutzern-das-passwort-feld-entziehen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress: Titel kürzen</title>
		<link>http://elektroelch.de/blog/2011/08/15/wordpress-titel-kuerzen/</link>
		<comments>http://elektroelch.de/blog/2011/08/15/wordpress-titel-kuerzen/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 11:56:56 +0000</pubDate>
		<dc:creator>latz</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://elektroelch.de/?p=2377</guid>
		<description><![CDATA[Eine Frage, die immer wieder in WordPress-Foren auftaucht, ist, wie man den Titel auf eine bestimmte Anzahl Zeichen kürzen und ein &#8222;&#8230;&#8220; anfügen kann. Das Problem ist mit einigen Zeilen PHP schnell gelöst: 1 2 3 4 5 6 7 8 9 add_filter&#40; 'the_title', 'short_title' &#41;; function short_title&#40; $title &#41; &#123; $chars = 20; if [...]]]></description>
			<content:encoded><![CDATA[<p>Eine Frage, die immer wieder in WordPress-Foren auftaucht, ist, wie man den Titel auf eine bestimmte Anzahl Zeichen kürzen und ein &#8222;&hellip;&#8220; anfügen kann.</p>
<p>Das Problem ist mit einigen Zeilen PHP schnell gelöst:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">add_filter<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'the_title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'short_title'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">function</span> short_title<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$title</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$chars</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">20</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$title</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #000088;">$chars</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$title</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$title</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$chars</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$title</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot; &amp;hellip;&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #000088;">$title</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Die Variable <code>$chars</code> muss auf die Anzahl Zeichen gesetzt werden, die man maximal anzeigen möchte und in Zeile 6 muss der Platzhalter für den ausgelassenen Text eingefügt werden (<code>&amp;hellip;</code> ist typografisch richtige Version für drei Punkte, Ellipse genannt).</p>
<p>Nachteilig an dieser Lösung ist, dass der Titel mitten in einem Wort abgeschnitten werden könnte. Wenn man möchte, kann man die Funktion entsprechend erweitern:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">add_filter<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'the_title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'short_title'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">function</span> short_title<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$title</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$chars</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">20</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$title</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #000088;">$chars</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$title</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$title</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$chars</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="display:block;background-color: #ffc;">    <span style="color: #000088;">$title</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$title</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #990000;">strrpos</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$title</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">' '</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		</span>    <span style="color: #000088;">$title</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot; &amp;hellip;&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #000088;">$title</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Kopiert man diese Funktion in die <code>funtions.php</code> des Themes werden alle Aufrufe von <code>the_title</code> den eingefügten Angaben entsprechend gekürzt.</p>
]]></content:encoded>
			<wfw:commentRss>http://elektroelch.de/blog/2011/08/15/wordpress-titel-kuerzen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

