<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Perl-Blog</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/" />
    <link rel="self" type="application/atom+xml" href="http://www.perl-blog.de/atom.xml" />
    <id>tag:www.perl-blog.de,2008-12-08://5</id>
    <updated>2010-08-12T21:26:13Z</updated>
    <subtitle>Ein Blog über die Programmiersprache Perl und so manches, was irgendwie damit zu tun hat (natürlich BETA!)</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.34-de</generator>

<entry>
    <title>Asynchrone Datenbankzugriffe im Hintergrund mit PostgreSQL und DBD::Pg</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2010/08/async-dbi.html" />
    <id>tag:www.perl-blog.de,2010://5.694</id>

    <published>2010-08-12T21:23:23Z</published>
    <updated>2010-08-12T21:26:13Z</updated>

    <summary>Mit PostgreSQL und DBI sowie DBD::Pg ist es möglich, SQL-Queries im Hintergrund asynchron laufen zu lassen – und währenddessen in Perl weitere Berechnungen anzustellen, anstatt nur auf die Daten zu warten. Insbesondere bei Multi-Core-CPUs oder einer Trennung von Datenbankserver und...</summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
        <category term="Datenbanken" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Performance-Optimierung" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="PostgreSQL" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="dbdpg" label="DBD::Pg" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="dbi" label="DBI" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="Perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="postgresql" label="PostgreSQL" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="asynchron" label="asynchron" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p>Mit <a href="http://www.postgresql.org/">PostgreSQL</a> und <a class="ext" href="http://search.cpan.org/dist/DBI/DBI.pm">DBI</a> sowie <a class="ext" href="http://search.cpan.org/dist/DBD-Pg/Pg.pm">DBD::Pg</a> ist es möglich, SQL-Queries im Hintergrund asynchron laufen zu lassen – und währenddessen in Perl weitere Berechnungen anzustellen, anstatt nur auf die Daten zu warten. Insbesondere bei Multi-Core-CPUs oder einer Trennung von Datenbankserver und Anwendung ist dies eine sehr praktische Sache.</p>
<p>Und einfach ist es obendrein!</p>
<p>Bei dem jeweiligen Aufruf von <em>$dbh-&gt;do</em>, <em>$dbh-&gt;prepare</em> oder <em>$dbh-&gt;prepare_cached</em> muss nur das Attribut&nbsp;PG_ASYNC hinzugefügt werden. Besonders praktisch ist das bei INSERT und UPDATE Queries, wenn also keine Rückgabewerte ausgewertet werden müssen, da kann man im neuen Query einfach noch auf den Rest des alten warten:</p>
<pre>use DBD::Pg qw(:async);    # Async-Konstanten einbinden

# ... und später Query vorbereiten:

my $sth = $self-&gt;dbh-&gt;prepare( "INSERT INTO table ...", 
          { pg_async =&gt; PG_ASYNC + PG_OLDQUERY_WAIT } );

# ... und dann zum Beispiel in einer Schleife aufrufen
while ( my @parameter = calculate_next_insert() )
    {
    $sth-&gt;execute( @parameter );
    }

# ...

</pre>
<p>Wenn man also zwischen mehreren INSERT-Statements noch Eingabedaten berechnen muss, kann dies Zeit sparen. Vor weiteren Queries oder dem Commit sollte man dann noch mit $dbh-&gt;pg_result() auf das Ergebnis des letzten asynchronen Queries warten.</p>
<p>Mehr Beispiele und die Darstellung aller Features gibt es in der <a class="ext" href="http://search.cpan.org/dist/DBD-Pg/Pg.pm#Asynchronous_Queries">DBD::Pg Dokumentation</a>.</p>
<p>&nbsp;</p>]]>
        
    </content>
</entry>

<entry>
    <title>Call for Papers: 12. Deutscher Perl-Workshop 2010: „Modern Perl“</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2010/02/pws-12-cfp.html" />
    <id>tag:www.perl-blog.de,2010://5.581</id>

    <published>2010-02-17T20:42:23Z</published>
    <updated>2010-02-17T21:09:40Z</updated>

    <summary>Vom 7. bis 9. Juni 2010 findet der 12. Deutsche Perl-Workshop in Schorndorf bei Stuttgart statt. Zielgruppe des Workshops sind alle Perl-Anwender und die, die es werden wollen. Der Workshop steht und fällt mit den Vorträgen, die 5, 20 oder...</summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
        <category term="Perl-Workshop" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Termine" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Veranstaltungen" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="modernperl" label="Modern Perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pws" label="PWS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="Perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perlworkshop" label="Perl-Workshop" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="schorndorf" label="Schorndorf" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="stuttgart" label="Stuttgart" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p>Vom 7. bis 9. Juni 2010 findet der <a class="ext" href="http://www.perl-workshop.de/de/">12. Deutsche Perl-Workshop</a> in Schorndorf bei Stuttgart statt. Zielgruppe des Workshops sind alle Perl-Anwender und die, die es werden wollen.</p>
<p>Der Workshop steht und fällt mit den Vorträgen, die 5, 20 oder 40 Minuten lang sein können.&nbsp;</p>
<p>Alle Themen, die mit Perl oder dem Perl-Umfeld, insbesondere dem Thema „Modern Perl“, zu tun haben, können als Vorträge für den Workshop interessant sein. Die Einreichungsfrist für Vorschläge wurde auf Freitag, den 05. März 2010 verlängert.&nbsp;</p>
<p>&nbsp;&nbsp;<a class="ext" href="http://conferences.yapceurope.org/gpw2010">http://conferences.yapceurope.org/gpw2010</a></p>
<p>Der Deutsche Perl-Workshop ist die jährliche Konferenz meist deutschsprachiger Anwender und Entwickler der dynamischen Open-Source-Programmiersprache Perl. Der Schwerpunkt des von der Deutscher Perl-Workshop GbR und der <a class="ext" href="http://www.region-stuttgart.de/">Wirtschaftsförderung Region Stuttgart</a> (WRS) verstaltelten Workshops ist „Modern Perl“. Dabei spielen zum Beispiel die Module Catalyst, Moose und DBIx::Class eine wichtige Rolle. Catalyst als sehr flexibles Webframework, Moose mit einer postmodernen Objektorientierung für Perl und DBIx::Class als Schicht zwischen Anwendung und Datenbanken.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Patch: Proxy für das MT-Twitter-Plugin „HashTag“</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2009/11/patch-proxy-fur-das-mt-twitter-plugin-ha.html" />
    <id>tag:www.perl-blog.de,2009://5.545</id>

    <published>2009-11-27T18:44:56Z</published>
    <updated>2009-11-27T19:48:56Z</updated>

    <summary><![CDATA[So wie schon das Akismet-Plugin&nbsp;hat auch das Twitter-Plugin&nbsp;HashTag für Movable Type ein Proxy-Problem und ignoriert die MT-Systemeinstellung für Proxies. Auf diesem hier Server hat das Jail (das ist quasi eine virtuelle Maschine) aus Sicherheitsgründen nicht wirklich Internet-Zugriff, daher kommen auch...]]></summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
        <category term="Movable Type Plugins" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="movabletype" label="Movable Type" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletypeplugin" label="Movable Type Plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="patch" label="Patch" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="twitter" label="Twitter" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p>So wie schon das <a href="http://www.perl-blog.de/2008/02/movable-type-akismet-plugin-un.html">Akismet-Plugin</a>&nbsp;hat auch das <a class="ext" href="http://www.composing-stick.net/projects/hashtag/">Twitter-Plugin&nbsp;HashTag</a> für <a class="ext" href="http://www.movabletype.org/">Movable Type</a> ein Proxy-Problem und ignoriert die MT-Systemeinstellung für Proxies. Auf diesem hier Server hat das <a class="ext" href="http://en.wikipedia.org/wiki/FreeBSD_jail">Jail</a> (das ist quasi eine virtuelle Maschine) aus Sicherheitsgründen nicht wirklich Internet-Zugriff, daher kommen auch keine Tweets nach draußen.</p>
<p>Also muss mal wieder ein Patch her, dann klappts auch mit dem Proxy; der Patch muss auf&nbsp;<em>plugins/HashTag/lib/HashTag/Plugin.pm</em> angewendet werden und passt zur aktuellen Beta-Version 2.5:</p>
<pre>--- original_Plugin.nopm.pm	2009-07-17 23:45:12.000000000 +0200
+++ Plugin.pm	2009-11-27 19:38:58.000000000 +0100
@@ -137,6 +137,10 @@
     require LWP::UserAgent;
 
     my $ua = LWP::UserAgent-&gt;new;
+    # set HTTP Proxy when set in config file (AF)
+    if (my $proxy = MT::ConfigMgr-&gt;instance-&gt;HTTPProxy) {
+        $ua-&gt;proxy('http', $proxy);
+    }
 
     $ua-&gt;credentials('twitter.com:80','Twitter API',$cfg-&gt;{tw_username} =&gt; $cfg-&gt;{tw_password},);
</pre>
<div><span style="font-size: small;">Mit dem Patch&nbsp; ließt das Plugin aus der passenden Konfigurations-Direktive&nbsp;<em>HTTPProxy</em>in mt-config.cgi die Angaben für den Proxy und setzt diese.</span></div>
<div><span style="font-size: x-small;"><span><br /></span></span></div>]]>
        
    </content>
</entry>

<entry>
    <title>Perl 5.10.1 ist da</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2009/08/perl-5101-ist-da.html" />
    <id>tag:www.perl-blog.de,2009://5.450</id>

    <published>2009-08-23T17:03:06Z</published>
    <updated>2009-08-23T17:03:59Z</updated>

    <summary><![CDATA[Die Version 10.1 von Perl 5 ist da! Eine Weile hat es gedauert, aber nun ist Perl 5.10.1 da, wie Renée berichtet.&nbsp; Sehr interessant scheint mir die dtrace Unterstützung, da gibt es sicherlich einiges zu experimentieren. Einige Änderungen am Smart-Match...]]></summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl5" label="perl5" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl6" label="perl6" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p>Die Version 10.1 von Perl 5 ist da!</p>
<p>Eine Weile hat es gedauert, aber nun ist Perl 5.10.1 da, <a class="ext" href="http://perl-nachrichten.de/index.cgi/details/554">wie Renée berichtet</a>.&nbsp;</p>
<p>Sehr interessant scheint mir die dtrace Unterstützung, da gibt es sicherlich einiges zu experimentieren. Einige Änderungen am Smart-Match sind nicht rückwärtskompatibel, ungewöhnlich für eine kleine Versionsänderung. Außerdem gibt es einige Performance-Optimierungen, Bugfixes sowie die üblichen Aktualisierungen der mitgelieferten Module. Siehe auch: <a class="ext" href="http://perl5.git.perl.org/perl.git/blob_plain/maint-5.10:/pod/perl5101delta.pod">alle Änderungen</a>.</p>
<p>Ach, und wenn ich schon dabei bin: Perl 6 kommt im nächsten Frühjahr. Perl 6 ist nicht der Nachfolger von Perl 5.10 (das wird Perl 5.12), sondern eine neue Sprache, <a class="ext" href="http://www.heise.de/newsticker/Perl-6-kommt-im-Fruehjahr-2010-zumindest-teilweise--/meldung/143183">erscheint im Frühjahr 2010</a>.&nbsp;</p>]]>
        
    </content>
</entry>

<entry>
    <title>Eclipse, Probleme mit use utf8 und Abhilfe</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2009/03/eclipse-use-utf8-problem.html" />
    <id>tag:www.perl-blog.de,2009://5.319</id>

    <published>2009-03-23T12:02:47Z</published>
    <updated>2009-03-23T12:02:37Z</updated>

    <summary>Mit use utf8; lässt sich im Perl-Code einschalten, dass alle im Source definierten Strings usw. als UTF-8 interpretiert werden. Dazu muss der Source natürlich auch in UTF-8 sein. Mit Eclipse bzw. dem EPIC Perl-Plugin und dessen Syntax-Check gibt es da...</summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
        <category term="Diverses" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="epic" label="EPIC" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="eclipse" label="Eclipse" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="encoding" label="Encoding" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mac" label="Mac" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="osx" label="OS X" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="Perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="utf8" label="UTF-8" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="utf8" label="UTF8" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="windows" label="Windows" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p>Mit use utf8; lässt sich im Perl-Code einschalten, dass alle im Source definierten Strings usw. als UTF-8 interpretiert werden. Dazu muss der Source natürlich auch in UTF-8 sein.</p>
<p>Mit Eclipse bzw. dem EPIC Perl-Plugin und dessen Syntax-Check gibt es da aber zumindest unter OS X und Windows ein Problem, es wird zum Beispiel die folgende Fehlermeldung angezeigt:</p>
<pre>   Malformed UTF-8 character (unexpected non-continuation byte 0x7a, 
   immediately after start byte 0xc4) at 210.text-converter.t line 23.</pre>
<p>Das liegt daran, dass Eclipse auch korrekt als UTF-8 gespeicherten Source im Standard-Encoding an Perl zum Syntaxcheck weiterreicht: das korrekte UTF-8 wird also in ein anderes Encoding gewandelt. Und das ist unter OS X das MacRoman aus alten Zeiten vor OS X – und das ist natürlich kein valides UTF-8!</p>
<h3>Abhilfe</h3>
<p>Korrekterweise sollte das Perl-Plugin die Datei natürlich im für die Datei eingestellten Zeichensatz weiterreichen. Also einfach gar nicht konvertieren. Bis das passiert kann man sich aber auch anders behelfen:</p>
<p>Man füge die folgende Zeile&nbsp;in der <em>eclipse.ini</em> ein:</p>
<pre>&nbsp;&nbsp;-Dfile.encoding=UTF-8</pre>
<p>Die eclipse.ini findet man unter OS X unter&nbsp;<em>Eclipse.app/Contents/MacOS</em>&nbsp;bzw.&nbsp;im Application Bundle von Eclipse (im Finder Rechtsklick, „Paketinhalt zeigen“) im gleichnamigen Ordner via Terminal.</p>
<p>Unter Windows ist die Datei vermutlich an einem vergleichbaren Ort.</p>
<p>Alternativ kann man Eclipse den Parameter beim Start via Kommandozeile auch manuell mitgeben.</p>
<p>&nbsp;</p>
<p>Als Nebenwirkung werden nun zum Syntaxcheck auch Dateien, die in Latin-1 codiert sind, für den Syntaxcheck nach UTF-8 gewandelt.</p>
<p>&nbsp;</p>]]>
        
    </content>
</entry>

<entry>
    <title>Rückblick Perl-Workshop 2009</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2009/03/rueckblick-perl-workshop-2009.html" />
    <id>tag:www.perl-blog.de,2009://5.321</id>

    <published>2009-03-22T10:56:30Z</published>
    <updated>2009-03-22T11:33:23Z</updated>

    <summary>Jetzt ist es schon eine ganze Weile her – und ich habe es immer noch nicht geschafft, einen Rückblick auf den Perl-Workshop in Frankfurt zu schreiben. Und bevor ich das noch weiter hinausschiebe, gibt es hier nur eine Kurzversion: (Foto:...</summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
        <category term="Perl-Workshop" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Veranstaltungen" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="perl" label="Perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perlkonferenz" label="Perl-Konferenz" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perlworkshop" label="Perl-Workshop" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vortrag" label="Vortrag" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vorträge" label="Vorträge" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p>Jetzt ist es schon eine ganze Weile her – und ich habe es immer noch nicht geschafft, einen Rückblick auf den Perl-Workshop in Frankfurt zu schreiben. Und bevor ich das noch weiter hinausschiebe, gibt es hier nur eine Kurzversion:</p>
<div style="float: right;">
<div><a onclick="window.open('http://www.perl-blog.de/assets_c/2009/03/IMG_2706-687.html','popup','width=640,height=425,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://www.perl-blog.de/assets_c/2009/03/IMG_2706-687.html"><img class="mt-image-right" style="margin: 0pt 0pt 4px 16px; float: right;" src="http://www.perl-blog.de/assets_c/2009/03/IMG_2706-thumb-200x132-687.jpg" alt="IMG_2706.jpg" height="132" width="200" /></a><br />
<p style="margin-top: 1px; padding-top: 1px; text-align: right; font-size: 85%;">(Foto: Max Maischein)</p>
</div>
</div>
<p>Wie immer gab es auch dieses mal viele lehrreiche Vorträge, interessante Gespräche und es war eine insgesamt gelungene Veranstaltung. Danke an die lokalen Organisatoren! Nur das fehlende WLAN war störend, denn so war es zum einen nicht möglich direkt von der Konferenz aus zu bloggen oder mal eben das eine oder andere zu recherchieren.</p>
<h3>Präsentationen zum Download</h3>
<p>Hier die Liste der online verfügbaren Präsentationen vom Workshop (weitere Links zu Präsentationen bitte per Mail an mich):</p>
<h4>Tutorials: <br /></h4>
<ul>
<li><a class="ext" href="http://andreas.scherbaum.la/writings/perl-tutorial_2009_02_25.pdf">PostgreSQL optimieren und mit Perl kombinieren</a> (Andreas 'ads' Scherbaum)</li>
<li><a class="ext" href="http://alvar.a-blast.org/vortraege/perl-workshop/42-goldene-regeln.pdf">42 Goldene Regeln für Perl-Applikationen</a> (Alvar Freude)</li>
</ul>
<h4>Vorträge<br /></h4>
<ul>
<li><a class="ext" href="http://tinyurl.com/c8t6qb">I18N mit XSLT und was das mit Perl zu tun hat</a> (Michael Kröll)</li>
<li><a class="ext" href="http://renee-baecker.de/talks/NuetzlicheInfos.pdf">Module für nützliche Infos</a> (Renee Bäcker)</li>
<li>IPv6 und Perl (Steffen Ullrich) <a class="ext" href="http://noxxi.de/pws/2009/pdf/ipv6.pdf">(PDF)</a> <a class="ext" href="http://noxxi.de/pws/2009/s5/ipv6.html">(S5/HTML)</a> </li>
<li>SSL und Perl (Steffen Ullrich) <a class="ext" href="http://noxxi.de/pws/2009/pdf/ssl.pdf">(PDF)</a> <a class="ext" href="http://noxxi.de/pws/2009/s5/ssl.html">(S5/HTML)</a> </li>
<li>Mail::SPF::Iterator (Steffen Ullrich) <a class="ext" href="http://noxxi.de/pws/2009/pdf/spf.pdf">(PDF)</a> <a class="ext" href="http://noxxi.de/pws/2009/s5/spf.html">(S5/HTML)</a> </li>
<li>Perl Gotchas (Folien von 2008) (Steffen Ullrich) <a class="ext" href="http://noxxi.de/pws/2008/perl-gotchas.pdf">(PDF)</a> <a class="ext" href="http://noxxi.de/pws/2008/perl-gotchas.html">(S5/HTML)</a> </li>
<li><a class="ext" href="http://www.slideshare.net/mseibert/foswiki-presentation-presentation-928810/">Foswiki &amp; TWiki - eine der verbreitesten Firmenwiki-Lösungen der Welt</a> (Martin Seibert)</li>
<li><a class="ext" href="http://opsec.eu/vortraege/20090227-radiator.pdf">RADIUS in Perl: Radiator</a> (Kurt Jaeger)</li>
<li><a class="ext" href="http://tinyurl.com/maintaining-best">Maintaining the be*st</a> (Ulrich Habel) (<a class="ext" href="http://tinyurl.com/maintaining-best-audio">Audio</a>)</li>
<li><a class="ext" href="http://tinyurl.com/reverse-testing">Reverse Testing</a> (Ulrich Habel) <a class="ext" href="http://tinyurl.com/reverse-testing-audio">Audio</a> </li>
<li><a class="ext" href="http://download.steffen-winkler.de/dpws2009/DBD-PO_STEFFENW.pdf">DBD::PO - Mit SQL GNU gettext PO-Files bearbeiten</a> (Steffen Winkler)</li>
<li><a class="ext" href="http://steffen-mueller.net/talks/appdeployment">Application Deployment und Dependency Management mit PAR</a> (Steffen Müller)</li>
<li><a class="ext" href="http://www3.fh-swf.de/fbin/mehner/download/perl-workshop-2009.pdf">Der Editor Vim/gVim als Perl-IDE</a> (Fritz Mehner)</li>
<li><a class="ext" href="http://corion.net/talks/CPANr-Perl-Module-in-140-Zeichen/cpanr-talk.html">CPANr - Module in 140 Zeichen</a> (Max Maischein)</li>
<li><a class="ext" href="http://alvar.a-blast.org/vortraege/perl-workshop/sysadmin-perl.pdf">Modern Art der Systemadministration mit Perl</a> (Alvar Freude) </li>
</ul>
<p><br /> Lightning Talks</p>
<ul>
<li><a class="ext" href="http://www.slideshare.net/thomasfahle/perlsuchmaschinede-vortrag-februar-2009">Kurzvorstellung Perl-Suchmaschine.de (Thomas Fahle)</a> </li>
</ul>
<p>&nbsp;</p>
<p>Bei Steffen Ullrichs Perl-Gotcha-Vortrag habe ich ja ein wenig gemeckert, dass sich Perl in den meisten Fällen vollkommen korrekt verhält, die Diskussion basiert wohl auf einem Mißverständnis: für mich sind Gotchas sowas wie die <a class="ext" href="http://sql-info.de/postgresql/postgres-gotchas.html">MySQL-Gotchas</a>: 31. Februar minus ein Tag ist dort (in älteren Versionen) der 2. März – und das ist für eine Datenbank (zuständig für Datenkonsistenz!) zweifellos vollkommener Quatsch. Gotcha! Steffen versteht unter Gotchas aber eher ein Verhalten, bei dem man ein wenig aufpassen muss, weil man damit nicht rechnet – und da hat er mit seinen Gotchas durchaus Recht. Wobei einige der gezeigten Sachen sowieso quasi verbotene Konstrukte sind, ebenso sind <em>use strict</em> und <em>use warnings</em> natürlich Pflicht, da sind dann einige Fehlerquellen ausgeschlossen …</p>
<p>&nbsp;</p>
<h3>Reaktionen und Berichte</h3>
<ul>
<li><a class="ext" href="http://www.heise.de/developer/11-Deutscher-Perl-Workshop-in-Frankfurt--/artikel/134113">heise online</a></li>
<li><a class="ext" href="http://szabgab.com/blog/2009/03/1236029065.html">Gabor Szabo</a></li>
<li><a class="ext" href="http://www.perl-uwe.de/blog/2009-02/der-elfte-deutsche-perl-workshop/">Uwe Völker</a></li>
<li><a href="http://reneeb-perlblog.blogspot.com/2009/02/11-deutscher-perl-workshop-personlicher.html">Renée Bäcker</a></li>
<li>Thomas Fahle hat über mehrere Vorträge berichtet und weiterführende Links dazugepackt:    
<ul>
<li><a href="http://perl-howto.de/2009/03/talk-der-editor-vimgvim-als-perlide-von-fritz-mehner.html">Der Editor Vim/gVim als Perl-IDE</a> </li>
<li><a class="ext" href="http://perl-howto.de/2009/03/talk-postgresql-optimieren-und-mit-perl-kombinieren-von-andreas-scherbaum.html">PostgreSQL optimieren und mit Perl kombinieren</a> </li>
<li> <a class="ext" href="http://perl-howto.de/2009/03/talk-application-deployment-and-dependency-management-with-par-von-steffen-muller.html">Application deployment and dependency management with PAR</a> </li>
<li> <a class="ext" href="http://perl-howto.de/2009/03/talk-goldene-regeln-fur-die-entwicklung-von-perl-applikationen-von-alvar-freude.html"> Goldene Regeln für die Entwicklung von Perl-Applikationen</a> </li>
</ul>
</li>
</ul>
<h3><br /></h3>
<h3>Deutscher Perl-Workshop 2010</h3>
<p>Für die Ausrichtung des Deutschen Perl-Workshops nächstes Jahr haben wir <a class="ext" href="http://stuttgart.pm.org/">Stuttgarter Perl-Mongers</a> uns beworben, Jürgen Christoffel hat aber auch Wien ins Gespräch gebracht – ich denke, die Entscheidung wird in den nächsten Wochen Fallen.&nbsp;</p>
<p>&nbsp;</p>]]>
        
    </content>
</entry>

<entry>
    <title>Vortrag: 42 Goldene Regeln für Perl-Applikationen</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2009/02/42-goldene-perl-regeln.html" />
    <id>tag:www.perl-blog.de,2009://5.316</id>

    <published>2009-02-25T16:30:46Z</published>
    <updated>2009-02-27T23:48:38Z</updated>

    <summary>Mein erster kurzer Beitrag vom Perl-Workshop 2009 (leider nur eingeschränktem Netzwerk):   Hier die Präsentation zu meinem Tutorial 42 Goldene Regeln für Perl-Applikationen - Oder: Wie sichert sich ein Perl-Entwickler vor dem Psychopathen mit der Kettensäge.   Kurzzusammenfassung: Viele Anwendungen sind leider üble Hacks,...</summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
        <category term="Guter Code" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Perl im Unternehmenseinsatz" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Perl-Workshop" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="perl" label="Perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perlworkshop" label="Perl-Workshop" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="qualitätssicherung" label="Qualitätssicherung" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vortrag" label="Vortrag" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vorträge" label="Vorträge" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p>Mein erster kurzer Beitrag vom <a class="ext" href="http://www.perl-workshop.de/de/2009/index.html">Perl-Workshop 2009</a> (leider nur eingeschränktem Netzwerk):</p>
<p> </p>
<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a onclick="window.open('http://www.perl-blog.de/assets_c/2009/02/psychopath-664.html','popup','width=800,height=1151,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://www.perl-blog.de/assets_c/2009/02/psychopath-664.html"><img class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" src="http://www.perl-blog.de/assets_c/2009/02/psychopath-thumb-200x287-664.jpg" alt="psychopath.jpg" width="200" height="287" /></a></span>
<p>Hier die Präsentation zu meinem Tutorial <a href="http://alvar.a-blast.org/vortraege/perl-workshop/42-goldene-regeln.pdf">42 Goldene Regeln für Perl-Applikationen </a>- Oder: Wie sichert sich ein Perl-Entwickler vor dem Psychopathen mit der Kettensäge.</p>
<p> </p>
<p><strong>Kurzzusammenfassung:</strong></p>
<p><span>Viele Anwendungen sind leider üble Hacks, oft mehrere tausend Zeilen Spaghetti-Code in einer Datei und so weiter. Dies ist auch bei in Perl geschriebenen Programmen nicht anders. Dabei werden damit oft missionskritische Aufgaben in Unternehmen betreut. Es geht ja - irgendwie - und es ist kein Geld da, um eine Qualitätssicherung durchzuführen. So mancher Entwickler wird daher von den Vorgesetzten angewiesen, nicht „zu viel Zeit in Qualitätssicherung zu stecken&#8220;. Dabei spart eine solche schon mittelfristig viel Entwicklungszeit und damit Geld.</span></p>
<p>Das Tutorial zeigt, mit welchen Mitteln man dies mit Perl erreichen und den Psychopathen ein wenig beruhigen kann.</p>
<p> </p>
<p> </p>]]>
        
    </content>
</entry>

<entry>
    <title>Tie::DNS: Patch um eigene Nameserver anzugeben</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2009/02/tie-dns-patch.html" />
    <id>tag:www.perl-blog.de,2009://5.305</id>

    <published>2009-02-13T21:24:30Z</published>
    <updated>2009-02-14T09:55:15Z</updated>

    <summary>Tie::DNS ist ein praktisches Modul, um sehr einfach und komfortabel DNS-Abfragen zu tätigen: Man braucht nur noch auf einen Hash zugreifen und hat schon die passenden Daten parat. tie my %test, &quot;Tie::DNS&quot;; say &quot;Test.de: $test{&apos;test.de&apos;}&quot;; say &quot;Perl-Blog: $test{&apos;www.perl-blog.de&apos;}&quot;; Leider ist...</summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
        <category term="Module/CPAN" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="cpan" label="CPAN" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="dns" label="DNS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="patch" label="Patch" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tie" label="Tie" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tiedns" label="Tie::DNS" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p><a class="ext" href="http://search.cpan.org/perldoc?Tie::DNS">Tie::DNS</a> ist ein praktisches Modul, um sehr einfach und komfortabel DNS-Abfragen zu tätigen: Man braucht nur noch auf einen Hash zugreifen und hat schon die passenden Daten parat.</p>
<pre><code>   tie my %test, "Tie::DNS";
   say "Test.de: $test{'test.de'}";
   say "Perl-Blog: $test{'www.perl-blog.de'}"; </code></pre>
<p>Leider ist es bisher nicht möglich, einen anderen Nameserver als den Standard-Nameserver vom System anzugeben oder andere Parameter vom <a class="ext" href="http://search.cpan.org/dist/Net-DNS/lib/Net/DNS/Resolver.pm">Net::DNS::Resolver</a> zu ändern. <a href="http://www.perl-blog.de/2009/02/13/tie-dns-patch-resolver_args.diff">Ein kleiner Patch</a> – auch an Maintainer Dana M. Diederich geschickt – behebt das Problem. Dann kann man auch Nameserver angeben:</p>
<pre><code>   tie my %test, "Tie::DNS", { resolver_args =&gt; { nameservers =&gt; ['127.0.0.1'] } };;<br />   say "Test Lokal: $test{'test.local'}";<br />   say "intern: $test{'intern.intern'}";</code></pre>
<p><br /><a href="http://www.perl-blog.de/2009/02/13/tie-dns-patch-resolver_args.diff">tie-dns-patch-resolver_args.diff</a></p>
<p>&nbsp;</p>]]>
        
    </content>
</entry>

<entry>
    <title>Petitions-System des Bundestages bricht zusammen (Updates)</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2009/02/petitions-system-des-bundestages-bricht.html" />
    <id>tag:www.perl-blog.de,2009://5.294</id>

    <published>2009-02-07T10:27:30Z</published>
    <updated>2009-05-04T12:03:53Z</updated>

    <summary>Vor einiger Zeit habe ich über die gravierenden Mängel des Online-Petitions-Systems vom Deutschen Bundestag berichtet. In der Zwischenzeit wurden zwar einige kleine kosmetische Reparaturen vorgenommen, das Grund-Problem der gammeligen Software besteht aber weiterhin. Unter der „hohen“ Last von rund 16000...</summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
        <category term="Diverses" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Guter Code" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="bundestag" label="Bundestag" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mysql" label="MySQL" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="araneanet" label="araneaNET" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="epetitionen" label="e-Petitionen" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="epetition" label="epetition" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="onlinepetition" label="online-petition" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="racecondition" label="race-condition" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="smf" label="smf" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p><strong>Vor einiger Zeit habe ich über die <a href="http://www.perl-blog.de/2008/11/bundestag-web-einsnull.html">gravierenden Mängel des Online-Petitions-Systems vom Deutschen Bundestag</a> berichtet. In der Zwischenzeit wurden zwar einige kleine kosmetische Reparaturen vorgenommen, das Grund-Problem der gammeligen Software besteht aber weiterhin. Unter der <em>„hohen“</em> Last von rund 16000 Unterzeichnern einer Petition ist der Spaß jetzt zusammengebrochen. <em>(Updates unten: Probleme halten an)</em><br /></strong></p>
<p>&nbsp;</p>
<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a onclick="window.open('http://www.perl-blog.de/assets_c/2009/02/fehler-name-in-verwendung-611.html','popup','width=783,height=590,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://www.perl-blog.de/assets_c/2009/02/fehler-name-in-verwendung-611.html"><img class="mt-image-right" style="margin: 0pt 0pt 20px 20px; float: right;" src="http://www.perl-blog.de/assets_c/2009/02/fehler-name-in-verwendung-thumb-200x150-611.png" alt="fehler-name-in-verwendung.png" height="150" width="200" /></a></span>
<p>Seit einigen Tagen ist die <a class="ext" href="https://epetitionen.bundestag.de/index.php?action=petition;sa=details;petition=1422">Petition zum Bedingungslosen Grundeinkommen</a> sehr beliebt und hat viele Unterzeichner erhalten, der Zähler steht bei über 16000. Nun zeigen sich die ganzen Mängel des unzureichenden Systems, wie einige Leser berichteten und ich verifizieren konnte: Durch einen Fehler ist es nicht mehr möglich, dass sich neue Nutzer registrieren und ohne Registrierung ist es auch nicht möglich Petitionen zu unterzeichnen. Dies äußert sich darin, dass nur eine Fehlermeldung erscheint:</p>
<blockquote>
<p><strong>Fehler</strong><br />(Nutzer) Dieser Name ist bereits in Verwendung.</p>
</blockquote>
<p>Dies dürfte an einem Datenbank-Fehler liegen und eine Folge der Wahl der technischen Basis sein – die den grundlegenden Anforderungen des Bundesamts für Sicherheit in der Informationstechnik (BSI) widerspricht. Ein paar technische Hintergründe dazu weiter unten.</p>
<p>Das ist aber nicht alles: die PHP/MySQL-Software ist auch an anderer Stelle bei rund 16000 Unterzeichnern einer Petition überfordert, die Anzeige der Unterzeichner wurde daher generell auf 100 begrenzt. Das sieht wie eine schnell eingebaute Notmaßnahme aus, um die Last des Systems zu begrenzen. Denn laut diversen Berichten wurde das Petitionssystem zuvor immer langsamer. Auch das ist ein Zeichen für schlechten Code.</p>
<p>Die Beschwerden <a class="ext" href="https://epetitionen.bundestag.de/index.php?board=332.0">im Forum</a> häufen sich, zumal die Zeichnungsfrist für die Grundeinkommens-Petition am 10. Februar abläuft. So <a class="ext" href="https://epetitionen.bundestag.de/index.php?topic=574.msg10131#msg10131">fragt der Nutzer Thomas Köppel</a>:</p>
<blockquote>
<p>Tja, wie es aussieht ist das System auf dem die Petitionssoftware (Datenbank) aufgesetzt ist, an seine Grenzen gestoßen.<br />Es bedarf wohl einer besseren Infrastruktur, für das handling des großen Datenaufkommens, ich frage mich was passiert wenn über 1 Millionen Menschen gleichzeitig Zugriff auf das System nehmen.<br /><br />Viele Grüße<br />T.K.</p>
</blockquote>
<p>Eine Million <em>gleichzeitiger</em> Zugriffe würde zwar fast jedes System zum erliegen bringen; aber insgesamt bei einer Million Unterzeichnern (bzw. Datenbankeinträgen) hat ein anständiges Datenbanksystem keine Probleme. Schließlich sind Datenbanken dafür da, große Datenmengen effizient zu verwalten.</p>
<p>Und <a href="https://epetitionen.bundestag.de/index.php?topic=574.msg10141#msg10141">Nutzer16941 schreibt</a>:</p>
<blockquote>
<p>Das ist leider ein Armutszeugnis für unsere Demokratie (und damit für uns das Volk), wenn unsere Regierung davon ausgeht eine kleines(?) System reicht aus. Denn scheinbar hat es das ja seit Jahren.</p>
</blockquote>
<p>Dazu ist anzumerken, dass die Anforderungen an das neue System u.a. waren, dass es im Peak 50000 Nutzer sowie Petitionen mit beliebig vielen Unterzeichnern aushalten muss. Hier zeigt sich wieder, dass das neue System <a href="http://www.perl-blog.de/2008/11/bundestag-web-einsnull.html">wie beschrieben eben nicht den Anforderungen entspricht</a>.</p>
<p>Denn all das erinnert an das alte Petitions-System, das noch vom schottischen Parlament erstellt wurde. Nun wollte man alles besser machen, aber es wurde nur ein tiefer Griff <del>ins Klo</del> in die Problemkiste: Eine Bundestagsverwaltung, die technische Angebote nicht lesen und verstehen kann (schließlich haben die dortigen Mitarbeiter normalerweise anderes zu tun) und sich daher auf die Behauptungen in den Angeboten verlassen muss, ein Ausschreibungsrecht, dass den günstigsten Anbieter verlangt und eine Firma, die alles mögliche behauptet aber nicht viel einhält – all das zusammen sind meines Erachtens die Hauptgründe für das Dilemma. Den Bundestag sehe ich dabei eher als Opfer.</p>
<p>Aus mehreren Quellen weiss ich, dass derzeit eine Studie zur Online-Petitions-Plattform für das Büro Technikfolgenabschätzung des Bundestages erstellt wird. Die Plattform wird vor Fertigstellung der Studie wohl kaum grundlegend überarbeitet werden – und es ist zu hoffen, dass sie danach komplett weggeworfen und ein ganz neues, sauberes System erstellt wird. Dem Petitionswesen wäre das zu wünschen.</p>
<h3>Und woran liegen die Probleme aus technischer Sicht?</h3>
<p>Das Problem, dass niemand mehr registriert werden kann, liegt vermutlich an einem Datenbank-Problem, das unter Last auftreten kann. Dazu muss man wissen, dass die Nutzer ihren Nutzernamen nicht frei wählen können, sondern einen Namen „Nutzer12345“ mit fortlaufender Nummer zugewiesen bekommen. Die Petitions-Software basiert auf dem „Simple Machines Forum“, das als Datenbank-Backend&nbsp; MySQL mit MyISAM-Tabellen verwendet – was keine Transaktionen und Datensicherheit unterstützt und bei mehreren gleichzeitigen Zugriffen ohne besondere Maßnahmen sehr langsam wird und schon mal den einen oder anderen Fehler erzeugt. Aber auch wenn Transaktionen unterstützt werden können können ähnliche Probleme auftreten, beispielsweise zwei gleichzeitige nicht synchronisierte Zugriffe (zum Beispiel durch das fehlende Sperren einzelner Datensätze) und der Zähler für die Erstellung der Nutzernamen ist durcheinander gekommen. Dies nennt man <a class="ext" href="http://de.wikipedia.org/wiki/Race_Condition">Race Condition</a> (Wettlaufsituation), zwei oder mehr Zugriffe rennen quasi um die Wette und greifen gleichzeitig auf eine Ressource zu, die nur einmal vorhanden ist.</p>
<p>Dumm gelaufen – bei professioneller Software darf sowas nicht passieren. Darum <a class="ext" href="http://www.bsi.bund.de/gshb/deutsch/m/m02124.htm">verlangt das BSI</a> ja auch entsprechende Mechanismen und eine ACID-Konforme Datenbank bzw. Software, die diese Funktionen auch nutzt. Aber der Dienstleister hat sich nicht daran gehalten. (<a href="http://www.perl-blog.de/2008/11/bundestag-web-einsnull.html#smf">mehr zur Petitions-Software ...</a>)</p>
<p>Die langsamen Antwortzeiten bei vielen Unterzeichnern hängen möglicherweise auch (aber nicht nur) mit MySQL und MyISAM zusammen, ein übliches Szenario ist: die Queries (Datenbank-Abfragen) dauern bei vielen Unterzeichnern (also vielen Daten) länger, sperren aber schon beim Lesen die ganze Tabelle für Schreibzugriffe. Schreibzugriffe müssen warten und wenn diese dran sind, müssen die Lesezugriffe warten. So schaukelt sich das ganze unter Last bis zur Unbenutzbarkeit hoch und schon bei relativ niedrigen Nutzerzahlen kann alles zusammenbrechen. Eine andere Möglichkeit ist, dass durch mehrere gleichzeitige lang laufende Datenbankabfragen die Performance in den Keller geht, dadurch mehr Abfragen gestartet werden und irgendwann der Speicher voll ist.</p>
<p>Zudem wurden in letzter Zeit wieder diverse <a class="ext" href="http://www.milw0rm.com/search.php?dong=Simple+Machines">gravierende Sicherheitslücken</a> im verwendeten Simple Machines Forum bekannt. Auch das sorgt nicht gerade für Vertrauen in die Petitions-Plattform. Ebensowenig wie gelöschte Forums-Einträge und gesperrte Diskussionen. Beispielsweise ein gut implementiertes Bewertungssystem könnte das Löschen von Einträgen nahezu unnötig machen.</p>
<p>&nbsp;</p>
<p>Die Probleme der Software sind meines erachtens eine große Schande für die Firma <a href="http://www.perl-blog.de/2008/11/bundestag-web-einsnull.html#araneanet">araneaNET GmbH</a>, die groß damit wirbt BSI-Zertifiziert zu sein, aber dann MySQL und auch noch Software ohne Transaktionen verwendet, was eben nicht den BSI-Anforderungen entspricht und einer der Gründe der schwerwiegenden Probleme sein dürfte. Auch eine simple Änderung von MyISAM zu InnoDb ändert an der grundsätzlichen Problematik des Simple Machine Forums nichts. Da sieht man mal wieder: solche Zertifikate sind oft nur Schall und Rauch und sagen nur aus, dass da jemand ein wenig Geld in Marketing und vielleicht theoretische Fortbildung steckt.</p>
<p>&nbsp;</p>
<p><em>[Nachtrag, 16:17:]</em></p>
<p>Ein <a class="ext" href="https://epetitionen.bundestag.de/index.php?topic=768.msg10326#msg10326">weiterer Forums-Beitrag von Roswitha61</a> deutet auf mehr Probleme hin:</p>
<blockquote>
<p>Bei mir erscheint "nur eine Mitzeichnung erlaubt". Ich habe mich aber gerade erst registriert und folglich noch gar nicht unterzeichnet.<br />Was ist das?</p>
</blockquote>
<p>Sollte dies echt sein, könnte es sein, dass es noch weitere und massive Datenbank-Probleme gibt.</p>
<p>Die eingangs geschilderte Fehlermeldung erschien bei meinen Tests nun nicht mehr, aber es kommt bei einer Registrierung auch keine Bestätigungsseite und die Bestätigungs-E-Mail habe ich auch nicht erhalten.</p>
<p>&nbsp;</p>
<p><em>[Nachtrag, 8. Februar, 12:15:]</em></p>
<p>In der Zwischenzeit scheint die <a class="ext" href="https://epetitionen.bundestag.de/index.php?action=register">Registrierung</a> tatsächlich wieder zu funktionieren. Ich hatte es gestern Nachmittag und Abend mehrfach probiert, wurde aber nach Absenden des Registrierungsformulars ohne weiteren Kommentar oder Fehlermeldung auf die Startseite umgeleitet. Auch eine Bestätigungs-Mail ist nie eingetroffen. Dies lag daran, dass ich vergessen hatte den „Ich bin einverstanden“ auszuwählen. Es wird keine entsprechende Fehlermeldung ausgegeben, sondern der Nutzer wird dann nur auf die Startseite umgeleitet – auch das ist nicht sehr <a href="http://www.perl-blog.de/2008/11/bundestag-web-einsnull.html#umsetzung">benutzerfreundlich</a>. Einträge im Forum zeigen, dass dies nicht nur mir so passiert ist, die „Ich bin einverstanden“ Checkbox ist nicht sonderlich gut positioniert. Und es häufen sich auch die allgemeinen <a class="ext" href="https://epetitionen.bundestag.de/index.php?topic=770.msg10627#msg10627">Beschwerden über die schlechte Benutzerführung</a>.<br /><a class="ext" href="https://epetitionen.bundestag.de/index.php?topic=770.msg10627#msg10627"></a></p>
<p>Zudem konnte man bisher eine Unterzeichnung wiederrufen; da nur noch 100 Unterzeichner angezeigt werden und darunter nicht die neusten sind, findet man sich selbst aber nicht mehr in der Unterzeichnerliste und kann damit eine Unterzeichnung auch nicht rückgängig machen ...</p>
<p>Das obige Problem, dass das Petitionssystem behauptet der Nutzer hätte schon unterzeichnet obwohl dieser da anderer Ansicht ist, tritt auch bei <a class="ext" href="https://epetitionen.bundestag.de/index.php?topic=768.msg10558#msg10558">weiteren Nutzern</a> auf. Ob diese nur zweimal auf den Unterzeichnen-Button geklickt haben oder es tatsächlich ein Fehler ist kann ich aber nicht sagen. Ordentliche Software würde dies aber entsprechend abfangen ...</p>
<p>&nbsp;</p>
<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a onclick="window.open('http://www.perl-blog.de/assets_c/2009/02/datenbankfehler-620.html','popup','width=709,height=623,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://www.perl-blog.de/assets_c/2009/02/datenbankfehler-620.html"><img class="mt-image-right" style="margin: 0pt 0pt 20px 20px; float: right;" src="http://www.perl-blog.de/assets_c/2009/02/datenbankfehler-thumb-200x175-620.png" alt="datenbankfehler.png" height="175" width="200" /></a></span>
<p><em>[Nachtrag 9. Februar, 15:32]</em><br /><br />Heute reagiert die Petitions-Webseite wieder extrem langsam, manchmal treten auch Datenbank-Fehler auf (siehe Screenshot rechts). Der Zugriff auf eine Seite kann schon mal mehrere Minuten dauern, ganz abbrechen oder mit einer solchen Fehlermeldung enden.<br /><br />Selbst das Laden eines statischen Bildes dauert schon mal mehrere Sekunden bis Minuten oder wird ganz abgebrochen. Dies deutet auf tiefergehende Probleme hin (Überlastung aufgrund sich gegenseitig blockierender Datenbankzugriffe und dadurch zu vieler Apache-Prozesse) – was ich gleich mal zum Anlass nehme, um in einem eigenen Artikel Tipps zum Umgehen dieser Probleme zu schreiben.</p>
<p>Bereits heute Vormittag wurde aufgrund der Probleme die Zeichnungsfrist für die Petition „Bedingungsloses Grundeinkommen“ um <a class="ext" href="https://epetitionen.bundestag.de/index.php?topic=793.0">eine Woche verlängert</a>. Das Forum wird aber morgen geschlossen – wahrscheinlich wird es den Moderatoren einfach zu viel Arbeit. Tja, mit einem selbstregulierenden System mittels eines flexiblen Bewertungssystems hätten sie kaum Arbeit, da die Nutzer die Trolle gleich selbst entsorgen könnten.</p>
<p><em>[Nachtrag 10. Februar, 16:10]</em></p>
<p>Die Probleme mit der Performance bestehen weiterhin: Lange Wartezeiten, teilweise kommt auch der gleiche Datenbankfehler wie im Screenshot eins weiter oben, und manchmal schlägt auch der Timeout vom Browser zu. Die große Frage ist, ob überhaupt Maßnahmen ergriffen werden, die Probleme zu beseitigen.</p>
<p><em>[11. Februar, 0:25]<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><em><a onclick="window.open('http://www.perl-blog.de/assets_c/2009/02/wartungsarbeiten2-623.html','popup','width=771,height=720,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://www.perl-blog.de/assets_c/2009/02/wartungsarbeiten2-623.html"><img class="mt-image-right" style="margin: 0pt 0pt 20px 20px; float: right;" src="http://www.perl-blog.de/assets_c/2009/02/wartungsarbeiten2-thumb-200x186-623.png" alt="wartungsarbeiten2.png" height="186" width="200" /></a></em></span></em><em></em><em></em><em></em><em></em><em><br /></em></p>
<p>Nun ist alles im „Wartungsmodus“ und außer Betrieb. Vielleicht wird nun alles auf besser ausgestattete Hardware umgezogen. Nach dem Motto: Versuchen wir mal unzureichende Software mit dickerer Hardware zu erschlagen.</p>
<p>Unteressanterweise änderte sich die Darstellung der Fehlermeldung innerhalb weniger Minuten, anfangs war der rote Text oben noch schwarz und nicht fett ...</p>
<p><em>[12. Februar]</em></p>
<p>Tatsächlich, die Last-Probleme scheinen zumindest vorerst behoben zu sein.</p>
<p><em>[17. Februar]</em></p>
<p>Der Server ist wieder zusammengebrochen, Datenbankfeher inklusive ...</p>
<p><em>[4. Mai]</em></p>
<p>Und bei der neuen <a class="ext" href="https://epetitionen.bundestag.de/index.php?action=petition;sa=details;petition=3860">Online-Petition gegen Internet-Sperren</a> wird der Server wieder langsam ... Sehr langsam ...</p>
<p>&nbsp;</p>]]>
        
    </content>
</entry>

<entry>
    <title>Anmeldungen für den deutschen Perl-Workshop 2009 möglich</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2009/01/anmeldungen-fur-den-deutschen-perl-works.html" />
    <id>tag:www.perl-blog.de,2009://5.273</id>

    <published>2009-01-06T18:00:08Z</published>
    <updated>2009-01-06T18:01:10Z</updated>

    <summary>Seit heute sind Anmeldungen für den 11. Deutschen Perl-Workshop 2009 in Frankfurt möglich. Ich hoffe, dass es dieses mal besonders interessant wird, zumal durch die Wohnmöglichkeit im Haus auch (hoffentlich) viel Workshop-Athmosphäre aufkommt. Siehe auch: Über den Zeitplan und was...</summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
        <category term="Perl-Workshop" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Veranstaltungen" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="frankfurt" label="Frankfurt" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perlkonferenz" label="Perl-Konferenz" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perlworkshop" label="Perl-Workshop" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p>Seit heute sind <a class="ext" href="http://www.perl-workshop.de/auth/my/anmeldung">Anmeldungen</a> für den <a class="ext" href="http://www.perl-workshop.de/de/2009/index.html">11. Deutschen Perl-Workshop 2009</a> in Frankfurt möglich.</p>
<p>Ich hoffe, dass es dieses mal besonders interessant wird, zumal durch die Wohnmöglichkeit im Haus auch (hoffentlich) viel Workshop-Athmosphäre aufkommt.</p>
<p>Siehe auch: <a class="ext" href="http://www.perl-blog.de/2008/12/perl-workshop-zeitplan.html">Über den Zeitplan und was der Perl-Workshop ist</a>.</p>
<p>&nbsp;</p>]]>
        
    </content>
</entry>

<entry>
    <title>CPAN Module entfernen / deinstallieren</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2008/12/cpan-module-entfernen-deinstallieren.html" />
    <id>tag:www.perl-blog.de,2008://5.266</id>

    <published>2008-12-18T23:35:11Z</published>
    <updated>2008-12-19T00:40:14Z</updated>

    <summary>Wie kann ich CPAN-Module wieder entfernen bzw. deinstallieren? Auf den ersten Blick ist das einfach: einfach die betreffenden .pm-Dateien löschen, schon ist das Modul weg. Aber was ist mit eventuellen weiteren Dateien oder Distributionen, die aus vielen Modulen bestehen? Oder...</summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
        <category term="Module/CPAN" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="cpan" label="CPAN" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="module" label="Module" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="Perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="deinstallieren" label="deinstallieren" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p><cite title="Ein anonymer Google-Sucher fragte ...">Wie kann ich CPAN-Module wieder entfernen bzw. deinstallieren?</cite> Auf den ersten Blick ist das einfach: einfach die betreffenden .pm-Dateien löschen, schon ist das Modul weg.</p>
<p>Aber was ist mit eventuellen weiteren Dateien oder Distributionen, die aus vielen Modulen bestehen? Oder mit Modulen mit in mehreren Verzeichnissen verstreuten Dateien?</p>
<p>Dafür bietet <a href="http://search.cpan.org/dist/CPANPLUS/">CPANPLUS</a> bzw. dessen Shell <a href="http://search.cpan.org/dist/CPANPLUS/bin/cpanp">cpanp</a> das Uninstall-Kommando. Dies entfernt alle installierten Komponenten eines Modules. Dazu bedient es sich der .packlist-Dateien, die in <tt>&lt;perllib&gt;/&lt;architektur&gt;/auto/&lt;modulname&gt;</tt> abgelegt werden und eine Liste aller installierten Komponenten enthalten.</p>
<p>CPANPLUS wird ab Perl 5.10 mitgeliefert, in älteren Versionen lässt es sich ganz normal via CPAN nachinstallieren.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Liste der Vorträge für Perl-Workshop steht</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2008/12/perl-workshop-zeitplan.html" />
    <id>tag:www.perl-blog.de,2008://5.257</id>

    <published>2008-12-14T22:59:14Z</published>
    <updated>2008-12-14T22:59:51Z</updated>

    <summary>Die Liste der Vorträge mitsamt dem vorläufigen Zeitplan für den 11. Deutschen Perl-Workshop vom 25. bis 27. Februar 2008 in Frankfurt steht fest. Insgesamt sieht es wieder sehr interessant aus: für die Terminal-Fetischisten gibt es einen Vortrag zu Vim als...</summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
        <category term="Perl-Workshop" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Termine" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="frankfurt" label="Frankfurt" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="Perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perlkonferenz" label="Perl-Konferenz" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perlworkshop" label="Perl-Workshop" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vorträge" label="Vorträge" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p>Die <a href="http://www.perl-workshop.de/de/2009/zeitplan.html">Liste der Vorträge</a> mitsamt dem vorläufigen Zeitplan für den 11. Deutschen Perl-Workshop vom 25. bis 27. Februar 2008 in Frankfurt steht fest.</p>
<p>Insgesamt sieht es wieder sehr interessant aus: für die Terminal-Fetischisten gibt es einen Vortrag zu <a href="http://www.perl-workshop.de/talks/129/view">Vim als Entwicklungsumgebung</a>, für die GUI-Fetischisten eine <a href="http://www.perl-workshop.de/talks/155/view">Einführung in Padre</a>, die neue Entwicklungsumgebung für Perl (Thomas Fahle hat sie vor ein paar Tagen <a href="http://perl-howto.de/2008/12/padre-perl-application-development-and-refactoring-environment.html">genauer vorgestellt)</a>. Ein Vortrag zu <a href="http://www.perl-workshop.de/talks/136/view">Testing</a> darf natürlich nicht fehlen, ebenso wenig Berichte über konkrete Perl-Projekte wie ein <a href="http://www.perl-workshop.de/talks/123/view">Hochverfügbarkeits-SMS-Gateway</a> bei Siemens.</p>
<p>Und zudem konnten wir Andreas Scherbaum gewinnen, ein <a href="http://www.perl-workshop.de/talks/151/view">PostgreSQL-Tutorial</a> zu halten. Leider werde ich dies nicht anschauen können, da ich im Parallel-Tutorial Vorschläge machen werde, wie man sich vor dem <a href="http://www.perl-workshop.de/talks/151/view">Psychopathen mit der Kettensäge</a> schützt.</p>
<h3>Was ist der Deutsche Perl-Workshop?</h3>
<p>Der Deutsche Perl-Workshop ist, wie auch die Perl-Workshops in anderen Ländern, quasi die Deutsche Perl-Konferenz und findet 2009 zum 11. mal statt – dieses mal organisiert von den <a href="http://frankfurt.perlmongers.de/">Frankfurter Perl Mongers</a>. Ich kann jedem, der mit Perl arbeitet, empfehlen mit dabei zu sein. Die Kosten stehen zwar noch nicht sicher fest, werden aber wie immer sowohl für Privatpersonen als auch für Firmenkunden sehr moderat sein (2008 waren es: 50 Euro für Schüler/Studenten, 75 Euro Normalpreis und 250 Euro für Firmenteilnehmer für alle drei Tage zusammen).</p>
<p>Anmeldung ist noch nicht möglich, wird aber bald nachgeholt.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Automatisch richtigen (Perl-) Interpreter aus PATH wählen</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2008/12/shebang-und-path.html" />
    <id>tag:www.perl-blog.de,2008://5.250</id>

    <published>2008-12-12T23:30:36Z</published>
    <updated>2008-12-13T10:16:03Z</updated>

    <summary><![CDATA[Ein häufiges Problem: auf dem Entwicklungssystem hat man ein Perl zum Beispiel unter /usr/local/bin/perl installiert, und ein Programm soll ganz normal mit ./programm.pl gestartet werden. Kein Problem, da passt man die Shebang-Zeile einfach entsprechend an: #!/usr/local/bin/perluse strict;use warnings;use Projekt::App;Projekt::App-&gt;run(@ARGV); &nbsp;...]]></summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
        <category term="Tipps" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="modulebuild" label="Module::Build" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="path" label="PATH" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="Perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="shebang" label="Shebang" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p>Ein häufiges Problem: auf dem Entwicklungssystem hat man ein Perl zum Beispiel unter /usr/local/bin/perl installiert, und ein Programm soll ganz normal mit ./programm.pl gestartet werden.</p>
<p>Kein Problem, da passt man die <a href="http://de.wikipedia.org/wiki/Shebang">Shebang</a>-Zeile einfach entsprechend an:</p>
<pre><span style="color: rgb(153, 51, 0);"><strong>#!/usr/local/bin/perl</strong></span><br /><br />use strict;<br />use warnings;<br /><br />use Projekt::App;<br /><br />Projekt::App-&gt;run(@ARGV);<br /></pre>
<p>&nbsp;</p>
<p>Auf dem Produktionssystem liegt das Skript aber unter /usr/bin/perl oder /usr/local/projekt/perl/bin/perl. Ein Leser fragte nun: Was tun?</p>
<p><a href="http://en.wikipedia.org/wiki/There_is_more_than_one_way_to_do_it">TIMTOWDI</a>, es gibt mindestens zwei Möglichkeiten:</p>
<p>&nbsp;</p>
<h3>Richtiges Perl zur Laufzeit finden mit <code>env</code><br /></h3>
<p>Das Programm <a class="ext" href="http://www.freebsd.org/cgi/man.cgi?query=env"><code>env(1)</code></a>, auf nahezu jedem Unix/Linux-System vorhanden, kann ein Programm im aktuellen Pfad PATH suchen und entsprechend starten. Das kann man dann in die Shebang-Zeile aufnehmen.</p>
<pre><span style="color: rgb(153, 51, 0);"><strong>#!/usr/bin/env perl</strong></span><br /><br />use strict;<br />use warnings;<br /><br />use Projekt::App;<br /><br />Projekt::App-&gt;run(@ARGV);</pre>
<p>&nbsp;</p>
<p><a class="ext" href="http://www.freebsd.org/cgi/man.cgi?query=env"><code>env</code></a> hat noch eine reihe weiterer Optionen, so kann man eine Auswahl an Suchpfaden vorgeben und so weiter. Näheres sagt die Dokumentation zu env.</p>
<p>&nbsp;</p>
<h3>Der Perlige Weg mit Module::Build<br /></h3>
<p>Allgemein bietet sich der Einsatz von <a href="http://search.cpan.org/dist/Module-Build/">Module::Build</a> meistens sowieso an. Wenn man dann auf dem Zielsystem die Applikation mit <code>./Build install</code> installiert, werden nicht nur die Module in die richtigen (oder angegebenen) Verzeichnisse kopiert, sondern alle Skripte in <tt>bin/</tt>, die Perl in der Shebang-Zeile starten, aufs jeweils aktuelle Perl angepasst und installiert. Aus dem ersten Beispiel oben wird dann, so dass es auch funktioniert, wenn es als Shell-Skript ausgeführt wird:</p>
<pre><span style="color: rgb(153, 51, 0);"><strong>#!/opt/local/bin/perl</strong><br /></span><span style="color: rgb(255, 0, 0);"><span style="color: rgb(153, 51, 0);"><br /><strong>eval 'exec /opt/local/bin/perl  -S $0 ${1+"$@"}'<br />    if 0; # not running under some shell</strong></span><br /></span><br />use strict;<br />use warnings;<br /><br />use Projekt::App;<br /><br />Projekt::App-&gt;run(@ARGV);</pre>
<p>Unter Windows werden dann sogar gleich passende .bat-Dateien angelegt, mit denen das jeweilige Skript gestartet wird.</p>
<p>Der Unterschied zwischen den beiden Versionen ist im Wesentlichen, dass bei der Verwendung von <span class="ext"><code>env</code></span> der jeweilige Nutzer bzw. Aufrufer mit seinem PATH den Perl-Interpreter bestimmt, während bei Module::Build dies von demjenigen, der das Skript/Programm installiert hat bestimmt wurde. (danke, <a href="http://www.perlpunks.de/">tinita</a>, für den Hinweis)</p>
<p>Bei Verwendung von <a class="ext" href="http://search.cpan.org/dist/ExtUtils-MakeMaker/">ExtUtils::MakeMaker</a> klappt das übrigens auch, aber man sollte bei neuen Projekten lieber Module::Build nutzen.</p>
<p>&nbsp;</p>]]>
        
    </content>
</entry>

<entry>
    <title>TypePad AntiSpam: Bad Request und die Lösung</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2008/12/typepad-antispam-bad-request-und-die-los.html" />
    <id>tag:www.perl-blog.de,2008://5.248</id>

    <published>2008-12-11T18:47:37Z</published>
    <updated>2008-12-11T18:53:04Z</updated>

    <summary>Nach dem Update auf Movable Type 4.2 habe ich das TypePad AntiSpam Plugin aktiviert bzw. mit einem API-Key freigeschaltet. Nur: weder Kommentare noch Trackbacks wurden geprüft, stattdessen landere im Aktivitätslog jeweils eine Fehlermeldung: TypePad AntiSpam error: Bad Request. Leider nicht...</summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
        <category term="Movable Type Plugins" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="movabletype" label="Movable Type" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletypeplugin" label="Movable Type Plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="spam" label="Spam" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p>Nach dem Update auf Movable Type 4.2 habe ich das <a href="http://www.sixapart.com/de/typepad/antispam/info/installieren.html">TypePad AntiSpam Plugin </a>aktiviert bzw. mit einem API-Key freigeschaltet.</p>
<p>Nur: weder Kommentare noch Trackbacks wurden geprüft, stattdessen landere im Aktivitätslog jeweils eine Fehlermeldung: <cite title="TypePad AntiSpam Fehlermeldung">TypePad AntiSpam error: Bad Request</cite>.</p>
<p>Leider nicht sehr aussagekräftig, und via Suchmaschinen ließ sich auch nichts passendes finden.</p>
<p>Über den Source bin ich dann auf die Lösung gekommen:</p>
<pre>$agent-&gt;post("http://$key.$SERVICE_HOST/$API_VERSION/$meth", [%ENV, %$sig]);<br /><br /></pre>
<p>„Bad Request“ sieht nach einer <a href="http://search.cpan.org/dist/libwww-perl/">LWP</a>-Fehlermeldung zu einem kaputten Request aus, zum Beispiel fehlendes Protokoll oder Domain mit unerlaubten Zeichen. Und da alle relevanten Elemente außer dem API-Key Konstanten sind, lag es nahe den Fehler bei diesem zu suchen.</p>
<p>Und tatsächlich: beim Kopieren des Keys hat sich ein Leerzeichen eingeschlichen, und ein Leerzeichen ist nunmal kein gültiges Zeichen in einem Domainname. <strong>Also: Aufpassen und keine Leerzeichen mitkopieren!</strong></p>
<p>Nach der Korrektur funktioniert alles und sowohl Kommentare als auch Trackbacks werden geprüft. Jetzt bin ich mal gespannt, ob es besser klappt als mit Akismet, das gelegentlich Spam-Trackbacks nicht erkannte und die Basiserkennung von <a href="http://www.perl-blog.de/2008/11/akismet-und-der-trackback-spam.html">Movable Type überstimmte</a>. TechCrunch hat auf jeden Fall ganz <a class="ext" href="http://www.techcrunch.com/2008/05/29/typepad-antispam-a-new-open-source-comment-spam-fighter/">gute Erfahrungen gemacht</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Movable Type 4.23 Update, Entlassungen bei Six Apart</title>
    <link rel="alternate" type="text/html" href="http://www.perl-blog.de/2008/12/movable-type-423.html" />
    <id>tag:www.perl-blog.de,2008://5.233</id>

    <published>2008-12-09T13:59:20Z</published>
    <updated>2008-12-09T14:07:09Z</updated>

    <summary>Gestern habe ich auch endlich mal Movable Type auf 4.23 aktualisiert. Ich hatte mit dem Update auf die 4.2er Serie lange gewartet, weil ich mir ein bisschen Zeit nehmen wollte – aber es lief problemlos und ohne jegliche Frickelei. Neben...</summary>
    <author>
        <name>Alvar Freude</name>
        <uri>http://alvar.a-blast.org/</uri>
    </author>
    
        <category term="Movable Type" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="byrnereese" label="Byrne Reese" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="entlassungen" label="Entlassungen" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletype" label="Movable Type" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="update" label="Update" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://www.perl-blog.de/">
        <![CDATA[<p>Gestern habe ich auch endlich mal <a class="ext" href="http://www.movabletype.org/">Movable Type</a> auf 4.23 aktualisiert. Ich hatte mit dem Update auf die 4.2er Serie lange gewartet, weil ich mir ein bisschen Zeit nehmen wollte – aber es lief problemlos und ohne jegliche Frickelei.</p>
<p>Neben aufgeräumteren Templates ist vor allem die neue Option praktisch, Server Side Includes für einzelne Template-Blöcke zu nutzen. Damit lassen sich auch bei statischer Veröffentlichung einzelne Bereiche dynamisch einblenden. So habe ich hier die Liste der aktuellen Einträge und Kommentare sowie Tag-Wolke, Kategorien und Monatsarchive via SSI eingebunden. Damit wirkt sich die Aktualisierung eines Blockes gleich auf alle bereits generierten Seiten aus, ohne dass alles dynamisch generiert werden muss.</p>
<p>Auch ansonsten bietet 4.2 einige Neuerungen, so gibt es endlich die Möglichkeit für eine Thread-Ansicht bei den Kommentaren (habe ich aber noch nicht probiert), verbesserte und vereinfachte Templates und einiges mehr. <a href="http://www.movabletype.org/documentation/mt42/whats-new.html">Weitere Informationen zu den Neuerungen in MT 4.2</a>.</p>
<p>&nbsp;</p>
<h3>Entlassungen bei Six Apart</h3>
<p>Bei Six Apart, dem Hersteller von Movable Type, wurden etwa <a class="ext" href="http://www.sixapart.com/blog/2008/11/changes-at-six-apart.html">8% der Mitarbeiter entlassen</a>, darunter auch <a class="ext" href="http://www.majordojo.com/2008/12/looking-to-the-future.php">Byrne Reese</a>, Produktmanager von Movable Type. Wenn aber bei über 200 Mitarbeitern bei der ersten Entlassungswelle gleich der Produktmanager eines wichtigen Produktes gehen muss, verwundert das doch ...</p>
<p>Welche Auswirkungen das auf Movable Type haben wird ist sicherlich noch nicht klar. Die Entlassungen beruhen wohl auf einer internen Umstrukturierung hin zum Dienstleistungsgeschäft und „Proaktiven“ Handlungen trotz bisher gut laufenden Geschäften. Hoffen wir, dass Movable Type darunter nicht leidet.</p>]]>
        
    </content>
</entry>

</feed>
