<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">
<channel>
    <title>Sperrobjekt Weblog</title>
    <link>http://blog.sperr-objekt.de/</link>
    <description>The Social Web, Coding, Linux ... and Football, of course!</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.5.3 - http://www.s9y.org/</generator>
    <pubDate>Tue, 07 Sep 2010 16:08:30 GMT</pubDate>

    <image>
        <url>http://blog.sperr-objekt.de/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Sperrobjekt Weblog - The Social Web, Coding, Linux ... and Football, of course!</title>
        <link>http://blog.sperr-objekt.de/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>6. Treffen der PHPUG Rheinhessen</title>
    <link>http://blog.sperr-objekt.de/content/153-6.-Treffen-der-PHPUG-Rheinhessen.html</link>
            <category>Deutsche Beiträge</category>
    
    <comments>http://blog.sperr-objekt.de/content/153-6.-Treffen-der-PHPUG-Rheinhessen.html#comments</comments>
    <wfw:comment>http://blog.sperr-objekt.de/wfwcomment.php?cid=153</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.sperr-objekt.de/rss.php?version=2.0&amp;type=comments&amp;cid=153</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Gutjahr)</author>
    <content:encoded>
    &lt;p&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;240&quot; height=&quot;339&quot;  src=&quot;http://www.sperr-objekt.de/phpugrhh/_media/006_2010-09-14-small.png&quot;  alt=&quot;Plakat fürs PHPUG-Treffen&quot; /&gt;Nicht vergessen, nächste Woche ist unser nächstes &lt;a href=&quot;https://www.xing.com/events/6-treffen-phpug-rheinhessen-557014&quot; title=&quot;Zur Anmeldung&quot;&gt;User Group-Treffen&lt;/a&gt;. Geplant sind diesmal zwei Vorträge:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Content Management Interoperability Services (CMIS) - Ein flexibler und plattformübergreifender Standard für ECM Systeme (Lukas Giebel)&lt;/li&gt;&lt;li&gt;HipHop für PHP (Reto Kiefer)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Sollte im Anschluss noch Zeit und Aufnahmefähigkeit vorhanden sein, kann ich noch ein bisschen was über die &lt;a href=&quot;http://blog.sperr-objekt.de/content/149-FrOSCon-2010,-Day-1.html&quot; title=&quot;Mein Blogeintrag zur FrOSCon&quot;&gt;FrOSCon&lt;/a&gt; erzählen, speziell über die PHP-Subconference, welche die PHPUG Dortmund organisiert hat. Ende November ist voraussichtlich wieder ein &lt;a href=&quot;http://www.barcamp-rheinmain.de/&quot;&gt;Barcamp Rhein-Main&lt;/a&gt; (in Darmstadt). Vielleicht hat der eine oder andere der PHPUG Rheinhessen ja Lust, dort etwas zu präsentieren? Wäre doch schön, wenn wir dort etwas Präsenz zeigen würden.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 07 Sep 2010 17:56:31 +0200</pubDate>
    <guid isPermaLink="false">http://blog.sperr-objekt.de/content/153-guid.html</guid>
    <category>mainz</category>
<category>php</category>
<category>phpugrhh</category>
<category>rheinhessen</category>
<category>usergroup</category>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/</creativeCommons:license>
</item>
<item>
    <title>Installing gitosis on Ubuntu 8.04 LTS</title>
    <link>http://blog.sperr-objekt.de/content/152-Installing-gitosis-on-Ubuntu-8.04-LTS.html</link>
            <category>English Articles</category>
    
    <comments>http://blog.sperr-objekt.de/content/152-Installing-gitosis-on-Ubuntu-8.04-LTS.html#comments</comments>
    <wfw:comment>http://blog.sperr-objekt.de/wfwcomment.php?cid=152</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.sperr-objekt.de/rss.php?version=2.0&amp;type=comments&amp;cid=152</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Gutjahr)</author>
    <content:encoded>
    &lt;p&gt;This is supposed to be more like a reminder to myself, should I ever need to install &lt;a href=&quot;http://eagain.net/gitweb/?p=gitosis.git&quot;&gt;gitosis&lt;/a&gt; on a server again. I carefully followed all the steps described &lt;a href=&quot;https://help.ubuntu.com/community/Git&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://www.komprovisation.de/blog/hosting_von_git_repositories_mit_gitosis&quot;&gt;here&lt;/a&gt; (German) on my Ubuntu 8.04 LTS server. But when it came to pushing my first project to the repository, git failed with &lt;code&gt;ERROR:gitosis.serve.main:Repository read access denied&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Turned out that none of the hooks in &lt;code&gt;repositories/gitosis-admin.git/hooks/&lt;/code&gt; was executable. A simple &lt;code&gt;$ sudo chmod +x *&lt;/code&gt; solved the problem for me. Now, everything seems to be working fine.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 02 Sep 2010 15:33:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.sperr-objekt.de/content/152-guid.html</guid>
    <category>error</category>
<category>git</category>
<category>gitosis</category>
<category>python</category>
<category>ubuntu</category>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/</creativeCommons:license>
</item>
<item>
    <title>Freier Routing-Dienst von MapQuest</title>
    <link>http://blog.sperr-objekt.de/content/151-Freier-Routing-Dienst-von-MapQuest.html</link>
            <category>Deutsche Beiträge</category>
    
    <comments>http://blog.sperr-objekt.de/content/151-Freier-Routing-Dienst-von-MapQuest.html#comments</comments>
    <wfw:comment>http://blog.sperr-objekt.de/wfwcomment.php?cid=151</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.sperr-objekt.de/rss.php?version=2.0&amp;type=comments&amp;cid=151</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Gutjahr)</author>
    <content:encoded>
    &lt;p&gt;Mapping ist ja einfach nur ein Hobby von mir. Seit ich vor einigen Jahren die Community-betriebene Openstreetmap entdeckt habe, faszinieren mich die unterschiedlichen Facetten dieses Themenkomplexes ungemein. Regelmäßig lese ich einige Mapping-Blogs, unter anderem &lt;a href=&quot;http://opengeodata.org/&quot;&gt;OpenGeoData&lt;/a&gt;. Dort wurde gestern ein Hinweis auf ein neues, offenes Routing-API von MapQuest &lt;a href=&quot;http://opengeodata.org/mapquest-adds-open-routing-based-on-openstree&quot;&gt;gepostet&lt;/a&gt;. Routing und Navigation waren bisher eigentlich immer so die Punkte, die ich als noch zu jung und experimentell und meist für den Praxiseinsatz unbrauchbar empfand. Das könnte sich &lt;a href=&quot;http://devblog.mapquest.com/2010/08/31/mapquest-directions-service-on-openstreetmap-data-sponsors-sotm-us/&quot;&gt;nun&lt;/a&gt; ändern, denn der frei zugängliche &lt;a href=&quot;http://open.mapquestapi.com/directions/&quot; title=&quot;API-Dokumentation&quot;&gt;Routingdienst von MapQuest&lt;/a&gt; setzt im Hintergrund auf Daten der Openstreetmap.&lt;/p&gt;&lt;p&gt;Interessehalber habe ich die &lt;a href=&quot;http://open.mapquestapi.com/directions/&quot;&gt;Dokumentation&lt;/a&gt; mal überflogen und &lt;a href=&quot;http://open.mapquestapi.com/media/js/samples/directions/open/basic.js&quot;&gt;dieses Beispiel&lt;/a&gt; minimal abgewandelt, um den Dienst testen zu können. Funktionert 1A! So sieht das Ergebnis aus (bitte auf &quot;Route berechnen&quot; klicken):&lt;/p&gt;
	&lt;p&gt;
		&lt;button onclick=&quot;doClick();&quot; id=&quot;test1-run&quot;&gt;Route berechnen&lt;/button&gt;
	    &lt;button onclick=&quot;collapseResults(&#039;narrative&#039;);&quot; id=&quot;collapse-1&quot;&gt;Ausblenden&lt;/button&gt;
    &lt;/p&gt;
    &lt;div id=&quot;narrative&quot;&gt;&lt;/div&gt;
	&lt;script type=&quot;text/javascript&quot;&gt;
var MY_ROUTE = &#039;http://open.mapquestapi.com/directions/v0/route?&amp;outFormat=json&amp;from=50.01074,8.266559&amp;to=50.081984,8.222219&amp;unit=k&amp;locale=de_DE&amp;narrativeType=microformat&amp;callback=renderNarrative&#039;;

function doClick() {
    document.getElementById(&#039;narrative&#039;).innerHTML = &#039;&lt;p id=&quot;pending&quot;&gt;Route wird berechnet&amp;hellip;&lt;/p&gt;&#039;;
    var script = document.createElement(&#039;script&#039;);
    script.type = &#039;text/javascript&#039;;
    script.src = MY_ROUTE;
    document.body.appendChild(script);
}

function renderNarrative(response) {
    var legs = response.route.legs;
    var html = &#039;&#039;;
    var i = 0;
    var j = 0;
    var maneuver;

    if (response.route.distance) {
        html += &quot;&lt;p&gt;Routenl&amp;auml;nge &lt;b&gt; &quot; + response.route.distance.toFixed(2) + &quot;&lt;/b&gt; km.&lt;/p&gt;&quot;;
    }
    if (response.route.formattedTime) {
        html += &quot;&lt;p&gt;Fahrtzeit &lt;strong&gt;&quot; + response.route.formattedTime + &quot;&lt;/strong&gt; Minuten.&lt;/p&gt;&quot;;
    }
    html += &#039;&lt;table&gt;&lt;tr&gt;&lt;th colspan=2&gt;Route&lt;/th&gt;&#039;;
    html += &#039;&lt;th colspan=1&gt;Entfernung&lt;/th&gt;&lt;/tr&gt;&lt;tbody&gt;&#039;;

    var unit = response.route.options.unit;
    if (unit) {
        if (unit == &#039;K&#039;) {
            unit = &#039;km&#039;;
        } else if (unit == &#039;M&#039;) {
            unit = &#039;miles&#039;;
        }
    }
    for (; i &lt; legs.length; i++) {
        for (j = 0; j &lt; legs[i].maneuvers.length; j++) {
            var last = legs[i].maneuvers.length - 1;
            maneuver = legs[i].maneuvers[j];

            html += &#039;&lt;tr&gt;&#039;;
            html += &#039;&lt;td&gt;&amp;#160;&#039;;
            if (maneuver.iconUrl) {
                html += &#039;&lt;img src=&quot;&#039; + maneuver.iconUrl + &#039;&quot; alt=&quot;&quot;  /&gt;  &#039;;
            }
            for (k = 0; k &lt; maneuver.signs.length; k++) {
                var sign = maneuver.signs[k];
                if (sign) {
                    if (sign.url) {
                      html += &#039;&lt;img src=&quot;&#039; + sign.url + &#039;&quot; alt=&quot;&quot;  /&gt;  &#039;;
                    }
                }
            }

            html += &#039;&lt;/td&gt;&#039;;
            //added following because we&#039;re only using lat/lngs currently
            if (j == last){
                html += &#039;&lt;td&gt;&#039; + maneuver.narrative.replace(maneuver.narrative, &quot;Ziel erreicht.&quot;);
            }
            else {
                html += &#039;&lt;td&gt;&#039; + maneuver.narrative;
            }
            if (unit) {
                if (maneuver.distance) {
                maneuver.distance =
                html += &#039;&lt;td&gt;  (&#039; + maneuver.distance.toFixed(2) + &#039; &#039; + unit + &#039;)&#039;;
                html += &#039;&lt;/td&gt;&#039;;
                }
            }
            else {
                html += &#039;&lt;td&gt;  &amp;#160; &#039;;
                html += &#039;&lt;/td&gt;&#039;;
            }

            html += &#039;&lt;/tr&gt;&#039;;
        }
    }

    html += &#039;&lt;/tbody&gt;&lt;/table&gt;&#039;;

    document.getElementById(&#039;narrative&#039;).style.display = &quot;&quot;;
    document.getElementById(&#039;narrative&#039;).innerHTML = html;
}
function collapseResults(divName) {
    document.getElementById(divName).style.display = &quot;none&quot;;
};
&lt;/script&gt; 
    </content:encoded>

    <pubDate>Wed, 01 Sep 2010 16:18:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.sperr-objekt.de/content/151-guid.html</guid>
    <category>api</category>
<category>javascript</category>
<category>json</category>
<category>mapquest</category>
<category>navigation</category>
<category>openstreetmap</category>
<category>osm</category>
<category>routing</category>
<category>webservice</category>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/</creativeCommons:license>
</item>
<item>
    <title>Linux für Kinder und Jugendliche</title>
    <link>http://blog.sperr-objekt.de/content/150-Linux-fuer-Kinder-und-Jugendliche.html</link>
            <category>Deutsche Beiträge</category>
    
    <comments>http://blog.sperr-objekt.de/content/150-Linux-fuer-Kinder-und-Jugendliche.html#comments</comments>
    <wfw:comment>http://blog.sperr-objekt.de/wfwcomment.php?cid=150</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://blog.sperr-objekt.de/rss.php?version=2.0&amp;type=comments&amp;cid=150</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Gutjahr)</author>
    <content:encoded>
    &lt;p&gt;Für eine gemeinnützige Einrichtung, eine Wohngruppe für Kinder und Jugendliche, bereite ich momentan einen älteren Rechner wieder auf, indem ich ihm ein schönes, aktuelles Linux-Betriebssystem verpasse. Die Hardware ist noch in Ordnung, und fürs Erste genügt auch dieser eine Rechner. Ich muss mich also nicht um irgendwelche Server-Installationen kümmern, sondern nur dafür sorgen, dass die Kinder und Jugendlichen diesen Computer sinnvoll nutzen können.&lt;/p&gt;&lt;h4&gt;Betriebssystem&lt;/h4&gt;&lt;p&gt;Bei der OS-Auswahl habe ich mich jetzt für &lt;a href=&quot;http://www.edubuntu.org/&quot;&gt;Edubuntu&lt;/a&gt; entschieden, wobei es z.B. mit Skolelinux auch Alternativen gibt. Bei letzterem liegt der Schwerpunkt aber noch deutlicher auf dem Einsatz als Unterrichtsplattform in Schulen, z.B. auch &lt;a href=&quot;http://rp.skolelinux.de/&quot; title=&quot;Skolelinux Rheinland-Pfalz&quot;&gt;in Rheinland-Pfalz&lt;/a&gt;. Mit geht es aber eher um ein bedienbares, sicheres System, das übrigens ein nicht mehr verfügbares Windows-System ersetzen soll. Die Kids sind zwischen 10 und 17 Jahre alt und wissen bereits, wie man einen Browser bedient usw., bloß haben sie zurzeit einfach kein Gerät zur Verfügung. Es geht hier also nicht um Kleinkinder, sondern durchaus um Teenager und Jugendliche. Edubuntu bringt außerdem schon einige Lernprogramme, aber auch Spiele mit.&lt;/p&gt;&lt;p&gt;&lt;!-- s9ymdb:57 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;230&quot; height=&quot;46&quot;  src=&quot;http://blog.sperr-objekt.de/uploads/edubuntu_logo.png&quot;  alt=&quot;Edubuntu Logo&quot; /&gt;Nachdem die Installation so glatt wie erwartet verlaufen ist, muss natürlich noch etwas an den Stellschrauben gedreht werden. Als erstes habe ich einen neuen, gemeinsam Benutzer angelegt und dessen Rechte etwas eingeschränkt, so dass z.B. keine neue Software installiert werden kann. Denkbar wäre auch, für jeden einzelnen Benutzer einen eigenen Account anzulegen, aber das ist nicht gefordert und kann ja bei Bedarf noch nachgeholt werden. Wie man Edubuntu noch weiter für die junge Zielgruppe anpassen kann, beschreibt sehr schön &lt;a href=&quot;http://wiki.ubuntuusers.de/Kinder&quot;&gt;dieser Artikel&lt;/a&gt; im Wiki von ubuntuusers.de. Die dort gesammelten Tipps sind meiner Meinung nach sinnvoll und ausgewogen.&lt;/p&gt;&lt;h4&gt;Filtern und Sperren&lt;/h4&gt;&lt;p&gt;Ich will gar keinen riesigen Aufwand betreiben, um Inhalte zu blocken oder Nutzungsverhalten zu protokollieren. Solche Maßnahmen (&lt;em&gt;Internetsperren&lt;/em&gt; à la von der Leyen) sind wenig zielführend und von nur zweifelhaften Nutzen. Umgehen lassen sie sich sowieso, und Kompetenz im Umgang mit dem Internet ersetzen sie auch nicht.&lt;/p&gt;&lt;p&gt;Und doch: Mithilfe des Parental Control GUI (Projektname: &lt;a href=&quot;https://launchpad.net/webcontentcontrol&quot;&gt;webcontentcontrol&lt;/a&gt;) lassen sich zumindest die schlimmsten Seiten filtern, als Grundschutz sozusagen. Im Hintergrund werkeln &lt;a href=&quot;http://dansguardian.org/&quot;&gt;dansguardian&lt;/a&gt;, &lt;a href=&quot;http://firehol.sourceforge.net/&quot;&gt;firehol&lt;/a&gt; und &lt;a href=&quot;https://www.banu.com/tinyproxy/&quot;&gt;tinyproxy&lt;/a&gt; und können über das GUI konfiguriert werden (sofern man keine Allergie gegen Config-Dateien hat). Die Ergebnisse überzeugen zumindest auf den ersten Klick. Bei zu vielen &lt;i&gt;false positives&lt;/i&gt; kann man die Tools ja einfach wieder deaktivieren. Ein Tool wie &lt;a href=&quot;http://wiki.ubuntuusers.de/Timekpr&quot;&gt;timekpr&lt;/a&gt; kann zusätzlich ganz nützlich sein, um Nutzungszeiten einzuschränken.&lt;/p&gt;&lt;h4&gt;Sinnvolle Angebote&lt;/h4&gt;&lt;p&gt;Dem Browser habe ich ebenfalls etwas Aufmerksamkeit geschenkt. Firefox bekommt zunächst einmal ein paar Add-Ons (&lt;a href=&quot;https://addons.mozilla.org/de/firefox/addon/1865/&quot;&gt;AdBlock+&lt;/a&gt;, &lt;a href=&quot;https://addons.mozilla.org/de/firefox/addon/4810/&quot;&gt;Speed Dial&lt;/a&gt;), als Startseite &lt;a href=&quot;http://www.fragfinn.de/&quot; title=&quot;Suchmaschine für Kinder&quot;&gt;fragFINN&lt;/a&gt; und zusätzlich noch ein paar sinnvolle Lesezeichen spendiert. Ich glaube, damit habe ich schon eine ganz solide Grundinstallation hinbekommen.&lt;/p&gt;&lt;p&gt;Natürlich gibt es noch weitergehende Überlegungen: Soll ich das Anwendungsmenü anpassen? Welche zusätzlichen Programme und Spiele kann ich installieren? Welche entfernen, weil sie z.B. noch nicht übersetzt sind? Gibt es weitere, sinnvolle Maßnahmen, die ich durchführen kann, die aber bisher noch nicht angesprochen wurden? Da baue ich jetzt voll und ganz auf meine Leser. Bitte schreibt eure Erfahrungen und Ratschläge in einen Kommentar unter diesen Artikel. Kennt ihr gute Links zum Thema? Dann ebenfalls her damit.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 26 Aug 2010 22:07:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.sperr-objekt.de/content/150-guid.html</guid>
    <category>dansguardian</category>
<category>edubuntu</category>
<category>firehol</category>
<category>jugendliche</category>
<category>kinder</category>
<category>linux</category>
<category>rheinland-pfalz</category>
<category>skolelinux</category>
<category>timekpr</category>
<category>tinyproxy</category>
<category>webcontentcontrol</category>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/</creativeCommons:license>
</item>
<item>
    <title>FrOSCon 2010, Day 1</title>
    <link>http://blog.sperr-objekt.de/content/149-FrOSCon-2010,-Day-1.html</link>
            <category>English Articles</category>
    
    <comments>http://blog.sperr-objekt.de/content/149-FrOSCon-2010,-Day-1.html#comments</comments>
    <wfw:comment>http://blog.sperr-objekt.de/wfwcomment.php?cid=149</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.sperr-objekt.de/rss.php?version=2.0&amp;type=comments&amp;cid=149</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Gutjahr)</author>
    <content:encoded>
    &lt;div class=&quot;serendipity_imageComment_center&quot; style=&quot;width: 630px&quot;&gt;&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;!-- s9ymdb:56 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;630&quot; height=&quot;268&quot;  src=&quot;http://blog.sperr-objekt.de/uploads/froscon_2010_maddog.jpg&quot;  alt=&quot;Jon Maddog Hall&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Jon &#039;Maddog&#039; Hall&lt;/div&gt;&lt;/div&gt;&lt;p&gt;As I said before, I attended &lt;a href=&quot;http://www.froscon.de/index.php?id=15&amp;amp;L=1&quot; title=&quot;FrOSCon Website in English&quot;&gt;FrOSCon&lt;/a&gt;, the Free and Open Source Software Conference, in Sankt Augustin on Saturday. It was my first time at FrOSCon, and I must say I instantly felt very much at home there. Great talks, friendly people, and a relaxed atmosphere: What more can you expect from a nerd conference?&lt;/p&gt;&lt;h3&gt;The Talks I Attended&lt;/h4&gt;&lt;p&gt;Having to choose from about six to ten parallel talks was no easy task, but I found something interesting most of the time. The first session was held by &lt;a href=&quot;http://www.lornajane.net/&quot; title=&quot;Lorna Jane&#039;s Blog&quot;&gt;Lorna Jane Mitchell&lt;/a&gt;. She told us how &lt;a href=&quot;http://programm.froscon.org/2010/events/580.en.html&quot;&gt;Open Source changed her career&lt;/a&gt;. She is actively participating in PHP projects, organizing PHP events, and generally trying to help where she can. Because of this she was presented with interesting career options in the past and will probably in the future, too. Well done!&lt;/p&gt;&lt;p&gt;Then I switched tracks and found myself in a talk about &lt;a href=&quot;http://programm.froscon.org/2010/events/599.en.html&quot;&gt;MySQL command line tools&lt;/a&gt;. We could have skipped the general shell introduction and should have moved fast forward to the various possibilities the mysql CLI offers. But still, I learned about some great commands like &lt;code&gt;pager&lt;/code&gt;, if only in the last ten minutes of the presentation.&lt;/p&gt;&lt;p&gt;The award for most inspirational talk of the day goes to &lt;a href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/Jon_Hall_%28programmer%29&quot; title=&quot;Wikipedia&quot;&gt;Jon &amp;quot;Maddog&amp;quot; Hall&lt;/a&gt;. He gave some great examples of &lt;a href=&quot;http://programm.froscon.org/2010/events/615.en.html&quot;&gt;how useful Open Source Software can be in developing countries&lt;/a&gt;. Access to information is the pivotal point in many cases, and OSS is a great, cheap and lasting way &lt;a href=&quot;http://www.gulli.com/news/jon-maddog-hall-lieber-open-source-statt-raubkopien-nutzen-2010-08-21&quot; title=&quot;Report at gulli.com&quot;&gt;to achieve this&lt;/a&gt;. But you have to be careful if you wanted to achieve sustained success, because the local conditions may differ from what you know or expect. Let&#039;s see how Maddog&#039;s latest venture in Brazil, &lt;a href=&quot;http://www.projectcaua.org/&quot;&gt;Project Cauã&lt;/a&gt;, evolves.&lt;/p&gt;&lt;p&gt;Later on, &lt;a href=&quot;http://michael-prokop.at/blog/&quot; title=&quot;Michael&#039;s blog&quot;&gt;Michael Prokop&lt;/a&gt; talked about his experience &lt;a href=&quot;http://programm.froscon.org/2010/events/550.en.html&quot;&gt;managing OSS projects&lt;/a&gt;. If you want your software to be successful, it&#039;s not enough to write good code. Clever marketing, involvement of the community, distributed version control, bug reports, and even the name of the project play major roles on the road to success.&lt;/p&gt;&lt;p&gt;I spent more or less the second half of the day in the PHP room. &lt;a href=&quot;http://froscon.phpugdo.de/.html&quot;&gt;The PHP track&lt;/a&gt; had been organized by the fine people of the PHPUG Dortmund. &lt;a href=&quot;http://www.manuel-pichler.de/&quot;&gt;Manuel Pichler&lt;/a&gt; talked about software metrics and &lt;a href=&quot;http://pdepend.org/&quot;&gt;PHP Depend&lt;/a&gt;, &lt;a href=&quot;http://cweiske.de/&quot;&gt;Christian Weiske&lt;/a&gt; gave an introduction on the Semantic Web, especially on Microformats and RDFa, and &lt;a href=&quot;http://kore-nordmann.de/&quot;&gt;Kore Nordmann&lt;/a&gt; introduced us to the &lt;a href=&quot;http://arbitracker.org/&quot;&gt;Arbit&lt;/a&gt; project tracking tool and some of the features that are planned for future releases. Maybe, hopefully, we can have one of them at &lt;a href=&quot;http://www.phpugrhh.de/&quot; title=&quot;PHP User Group Rheinhessen&quot;&gt;our local PHPUG&lt;/a&gt; in Mainz later this year, we&#039;ll see.&lt;/p&gt;&lt;h3&gt;The Event In General&lt;/h3&gt;&lt;p&gt;First of all, the location is perfect for an event this size. The modern lecture rooms had just the right size and all were equipped with projectors. A lot of software projects and companies, from KDE to Python to FreeWRT to Openstreetmap, &lt;a href=&quot;http://www.froscon.de/index.php?id=35&amp;amp;L=1&quot;&gt;set up their booths&lt;/a&gt; and presented their work there. I took a long look at KDE 4.5, for example, but still don&#039;t like it &lt;img src=&quot;http://blog.sperr-objekt.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; On the other hand, I will certainly take a closer look at the &lt;a href=&quot;http://www.skolelinux.de/&quot;&gt;Skolelinux&lt;/a&gt; distribution because I&#039;m currently installing software for an educational project.&lt;/p&gt;&lt;p&gt;The was plenty of coffee and &lt;a href=&quot;http://www.club-mate.de/&quot;&gt;Club Mate&lt;/a&gt;, of course, and the food in the refectory was okay, at least the vegetarian meal. I also bumped into quite a lot of people I know from earlier conferences, meet-ups, or Barcamps. The whole community aspect of FrOSCon is one of its major assets, I guess. Feels like a natural habitat to me - that&#039;s why I&#039;ll probably return next year. Well, in fact, I will return because I did not find &lt;a href=&quot;http://coord.info/GC2D7KG&quot; title=&quot;Geocache&quot;&gt;Fachhochschule Sankt Augustin&lt;/a&gt; this time - must have been really, really blind.&lt;/p&gt;&lt;p&gt;So, thanks to all the people who helped to make FrOSCon a great event!&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 25 Aug 2010 14:01:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.sperr-objekt.de/content/149-guid.html</guid>
    <category>froscon</category>
<category>php</category>
<category>sankt augustin</category>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/</creativeCommons:license>
</item>
<item>
    <title>I will be at FrOSCon 2010</title>
    <link>http://blog.sperr-objekt.de/content/148-I-will-be-at-FrOSCon-2010.html</link>
            <category>English Articles</category>
    
    <comments>http://blog.sperr-objekt.de/content/148-I-will-be-at-FrOSCon-2010.html#comments</comments>
    <wfw:comment>http://blog.sperr-objekt.de/wfwcomment.php?cid=148</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.sperr-objekt.de/rss.php?version=2.0&amp;type=comments&amp;cid=148</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Gutjahr)</author>
    <content:encoded>
    &lt;p&gt;&lt;!-- s9ymdb:55 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;402&quot; height=&quot;103&quot;  src=&quot;http://blog.sperr-objekt.de/uploads/froscon_2010.png&quot;  alt=&quot;FrOSCon 2010 Logo&quot; /&gt;&lt;a href=&quot;http://www.froscon.de/en/home/home.html&quot;&gt;FrOSCon&lt;/a&gt;, the Free and Open Software Conference, will be held in the Hochschule Bonn-Rhein-Sieg in Sankt Augustin this weekend. It&#039;s already the 5th edition of this conference, but it will be my premiere as visitor. There are going to be many lectures and workshop revolving around open software. And there is a track especially for PHP that I&#039;m particularly looking forward to.&lt;/p&gt;&lt;p&gt;One of the great things about FrOSCon is that it&#039;s not just a conference, but a lot more: A number of OSS project (Django, Arch Linux, OpenOffice, heck, even Perl) have there own rooms, and there is a superb program for kids of different ages. The youngsters can go geocaching and (open street) mapping, learn how to code games in Python, or make cool stop motion animations. If I was (or had) a kid, this would be so cool &lt;img src=&quot;http://blog.sperr-objekt.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;p&gt;Anyway, I will be at FrOSCon on Saturday, and maybe Sunday too. I haven&#039;t decided yet on which sessions to attend. But if you want to chat or have a cup of coffee, just say Hi or send a tweet to &lt;a href=&quot;http://twitter.com/mattsches&quot;&gt;@mattsches&lt;/a&gt;. I&#039;m really looking forward to meeting lots of interesting people and to learning wicked new stuff.&lt;/p&gt;&lt;!--c48a79670e714c199ccaf070db6b8b1b--&gt; 
    </content:encoded>

    <pubDate>Fri, 20 Aug 2010 14:56:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.sperr-objekt.de/content/148-guid.html</guid>
    <category>froscon</category>
<category>php</category>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/</creativeCommons:license>
</item>
<item>
    <title>Mobile Fahrrad-Navigation mit der OSM Radkarte</title>
    <link>http://blog.sperr-objekt.de/content/147-Mobile-Fahrrad-Navigation-mit-der-OSM-Radkarte.html</link>
            <category>Deutsche Beiträge</category>
    
    <comments>http://blog.sperr-objekt.de/content/147-Mobile-Fahrrad-Navigation-mit-der-OSM-Radkarte.html#comments</comments>
    <wfw:comment>http://blog.sperr-objekt.de/wfwcomment.php?cid=147</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.sperr-objekt.de/rss.php?version=2.0&amp;type=comments&amp;cid=147</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Gutjahr)</author>
    <content:encoded>
    &lt;!-- s9ymdb:53 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;739&quot; height=&quot;443&quot;  src=&quot;http://blog.sperr-objekt.de/uploads/garmin_fahrrad_navigation.jpg&quot;  alt=&quot;Mein auf den Lenker montiertes Garmin etrex Vista HCx&quot; /&gt;&lt;p&gt;Fahrradfahrer finden im Netz zahlreiche Angebote, die ihnen Karten auf Basis von Openstreetmaps anbieten. Die &lt;a href=&quot;http://www.opencyclemap.org/&quot;&gt;Open Cycle Map&lt;/a&gt; ist in ihrer Kartendarstellung ganz auf Radler zuschnitten. Sie zeigt Radwege farblich hervorgehoben an. Mountainbiker (und auch Wanderer) finden spezielle Angebote unter &lt;a href=&quot;http://openmtbmap.org/&quot;&gt;Openmtbmap.org&lt;/a&gt;. Die Aufzählung könnte noch lange fortgesetzt werden.&lt;/p&gt;&lt;p&gt;Wer mit dem Fahrrad unterwegs ist, möchte aber das nötige Kartenmaterial gern dabei haben, da bringen noch so gute Online-Angebote wenig. Mit Smartphones ist zwar auch einiges möglich, aber nicht überall ist die Netzabdeckung gleich gut. Besitzer von GPS-Geräten können sich Openstreetmaps-Karten mit wenig Aufwand auf ihr Geräte laden. Ich habe das gerade auf meinem &lt;a href=&quot;https://buy.garmin.com/shop/shop.do?cID=145&amp;amp;pID=8703&quot;&gt;Garmin etrex Vista HCx&lt;/a&gt; ausprobiert.&lt;/p&gt;&lt;h4&gt;Die Installation ist einfach&lt;/h4&gt;&lt;p&gt;Als Ausgangsmaterial dienten Kartendaten des Projekts &lt;a href=&quot;http://wiki.openstreetmap.org/wiki/User:Radfahrer/Radkarte&quot;&gt;OSM Radkarte&lt;/a&gt;, die schon im richtigen Format für das Garmin vorliegen. Die Datei &lt;code&gt;gmapsupp.img&lt;/code&gt; ist etwa 680 MB groß und kann &lt;a href=&quot;http://wiki.openstreetmap.org/wiki/User:Radfahrer/Radkarte#Download&quot; title=&quot;Kartendaten für unterschiedliche Geräte&quot;&gt;hier heruntergeladen werden&lt;/a&gt;. Die Datei habe ich auf meine Datenkarte ins Verzeichnis &lt;code&gt;/garmin&lt;/code&gt; kopiert, damit mein Gerät sie dort finden und einlesen kann. Das hat einige Minuten gedauert.&lt;/p&gt;&lt;p&gt;Schließlich konnte ich das Garmin aber mithilfe meines neuen Fahrradhalter an meinen Lenker montieren. Mit dem Joystick wählte ich auf der Kartenansicht einen Punkt am anderen Ende der Stadt aus. Wie &lt;a href=&quot;http://wiki.openstreetmap.org/wiki/User:Radfahrer/Radkarte#Benutzung_der_Karte&quot; title=&quot;Hinweise zur Benutzung&quot;&gt;empfohlen&lt;/a&gt; aktivierte ich die Option &quot;Mautstrecken vermeiden&quot; (bewirkt das Umfahren von Autobahnen und Bundesstraßen ohne Radweg) und schaltete die Option &quot;Kehrtwenden vermeiden&quot; aus. Und fuhr los.&lt;/p&gt;&lt;h4&gt;Im praktischen Einsatz&lt;/h4&gt;&lt;p&gt;Sofort wurde die Route berechnet und lotste mich durch die Straßen der Mainzer Neustadt. Sollte ich abbiegen, wurde ich von einem kurzen Piepston darauf aufmerksam gemacht, und die Karte zoomte in eine Detailansicht mit Abbiegepfeil. Die berechnete Route verlief vollständig über Radwege und Nebenstraßen und war auch ziemlich optimal berechnet. Ein-, zweimal wäre ich gefühlsmäßig anders abgebogen, was aber am Ende aufs Gleich hinausgelaufen wäre. Ich musste also keine Umwege fahren, und als ich einmal mutwillig falsch abbog, wurde schnell eine neue Route berechnet.&lt;/p&gt;&lt;p&gt;Einziges Problem: Wir haben in Mainz mittlerweile sehr viele Einbahnstraßen, die von Fahrrädern in beide Richtungen befahren werden dürfen. Dies wurde in der Routenplanung nicht berücksichtigt. Es sieht aber so aus, dass &lt;a href=&quot;http://wiki.openstreetmap.org/wiki/DE:Key:cycleway&quot; title=&quot;OSM-Eigenschaften für Fahrradwege&quot;&gt;diese Eigenschaften&lt;/a&gt; (&lt;code&gt;cycleway:opposite&lt;/code&gt;) in den OSM-Daten gar nicht vorhanden sind (da muss ich wohl mal losziehen und mappen!). Das ist also offenbar kein Problem der Software. Ansonsten klappte das Routing perfekt, und ich werde es demnächst mal bei einer größeren &quot;Überlandfahrt&quot; ausprobieren.&lt;/p&gt;&lt;h4&gt;Abschließender Hinweis&lt;/h4&gt;&lt;p&gt;Wie oben angesprochen, gibt es noch andere Karten zum Download, z.B. die von &lt;a href=&quot;http://openmtbmap.org/download/&quot; title=&quot;Zum Download&quot;&gt;Openmtbmap.org&lt;/a&gt;. Im Endeffekt dürften sich diese Karten in Ansicht und Verwendung sehr ähneln. Das Schöne an diesen offenen Projekten ist ja gerade, dass man die Wahl hat. Mir fehlen allerdings sowohl Zeit als auch Lust, alle diese Optionen auszuprobieren. Ich freue mich aber über Erfahrungsberichte mit anderen Maps!&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 18 Aug 2010 15:55:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.sperr-objekt.de/content/147-guid.html</guid>
    <category>etrex vista hcx</category>
<category>fahrrad</category>
<category>garmin</category>
<category>navigation</category>
<category>open cycle maps</category>
<category>openmtbmap</category>
<category>openstreetmap</category>
<category>osm</category>
<category>osm radkarte</category>
<category>routing</category>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/</creativeCommons:license>
</item>
<item>
    <title>Petition für Netzneutralität</title>
    <link>http://blog.sperr-objekt.de/content/146-Petition-fuer-Netzneutralitaet.html</link>
            <category>Deutsche Beiträge</category>
    
    <comments>http://blog.sperr-objekt.de/content/146-Petition-fuer-Netzneutralitaet.html#comments</comments>
    <wfw:comment>http://blog.sperr-objekt.de/wfwcomment.php?cid=146</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.sperr-objekt.de/rss.php?version=2.0&amp;type=comments&amp;cid=146</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Gutjahr)</author>
    <content:encoded>
    &lt;p&gt;&lt;!-- s9ymdb:52 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;110&quot; height=&quot;98&quot;  src=&quot;http://blog.sperr-objekt.de/uploads/logo_pro_netzneutralitaet.small.png&quot;  alt=&quot;Logo der Initiative Pro Netzneutralität&quot; /&gt;Die Petition der &lt;a href=&quot;http://pro-netzneutralitaet.de/&quot;&gt;Initiative Pro Netzneutralität&lt;/a&gt; setzt für eine Gleichbehandlung aller Daten ein. Denn diese ist eine Grundvoraussetzung für freie Meinungsäußerung und den uneingeschränkten Zugang zu Informationen. In den USA haben sich jüngst Google und Verizon über &lt;a href=&quot;http://www.zeit.de/digital/internet/2010-08/google-verizon-mittelalter&quot;&gt;das Thema&lt;/a&gt; unterhalten und damit für viel Unsicherheite gesorgt. Jetzt regt sich auch hierzulande Widerstand gegen die Pläne der Großkonzerne. Von den Initiatoren der Petition wird &lt;a href=&quot;http://pro-netzneutralitaet.de/infos&quot;&gt;Netzneutralität wie folgt definiert&lt;/a&gt;:&lt;/p&gt;&lt;blockquote cite=&quot;http://pro-netzneutralitaet.de/infos&quot;&gt;Netzneutralität ist die Grundlage für ein Internet, wie wir es kennen. Wir sind gewohnt, dass Daten ohne Ansicht von Inhalt und Größe – abgesehen von technischen Restriktionen – diskriminierungsfrei transportiert werden. Netzneutralität besagt, dass alle Daten, seien es Emails, Websites oder Musikdateien, gleich zu behandeln sind. Dadurch wird kein Dienst bevorzugt oder benachteiligt. Netzneutralität ist die Voraussetzung für die Gleichberechtigung aller Datenpakete.&lt;/blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://pro-netzneutralitaet.de/&quot;&gt;Hier&lt;/a&gt; kann man es &lt;a href=&quot;http://blog.koehntopp.de/archives/2931-Netzneutralitaet-ist-der-Schluessel-zur-Wahrung-des-freien-Internets!.html&quot;&gt;Kristian Köhntopp&lt;/a&gt; und vielen anderen gleichtun und &lt;a href=&quot;http://pro-netzneutralitaet.de/&quot;&gt;die Petition unterzeichnen&lt;/a&gt;.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 11 Aug 2010 22:18:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.sperr-objekt.de/content/146-guid.html</guid>
    <category>google</category>
<category>netzneutralität</category>
<category>petition</category>
<category>verizon</category>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/</creativeCommons:license>
</item>
<item>
    <title>API-Schlüssel in YQL Storage sicher speichern</title>
    <link>http://blog.sperr-objekt.de/content/145-API-Schluessel-in-YQL-Storage-sicher-speichern.html</link>
            <category>Deutsche Beiträge</category>
    
    <comments>http://blog.sperr-objekt.de/content/145-API-Schluessel-in-YQL-Storage-sicher-speichern.html#comments</comments>
    <wfw:comment>http://blog.sperr-objekt.de/wfwcomment.php?cid=145</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.sperr-objekt.de/rss.php?version=2.0&amp;type=comments&amp;cid=145</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Gutjahr)</author>
    <content:encoded>
    &lt;p&gt;&lt;!-- s9ymdb:50 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;100&quot; height=&quot;110&quot;  src=&quot;http://blog.sperr-objekt.de/uploads/yql_logo.small.png&quot;  alt=&quot;YQL Logo&quot; /&gt;Vorhin habe ich etwas mit &lt;a href=&quot;http://developer.yahoo.com/yql/&quot; title=&quot;Yahoo! Query Language&quot;&gt;YQL&lt;/a&gt; herumgespielt und versuchsweise das &lt;a href=&quot;http://www.lastfm.de/api&quot;&gt;API von last.fm&lt;/a&gt; angezapft. Der Aufruf der einzelnen Methoden setzt einen API-Schlüssel (&quot;API Key&quot;) voraus, den man problemlos &lt;a href=&quot;http://www.lastfm.de/api/account&quot;&gt;bei last.fm beantragen&lt;/a&gt; kann. Ich habe mich lange gefragt, wie ich diese Methoden mit reinem Javascript auf einer öffentlich zugänglichen Webseite aufrufen kann, ohne meinen API Key ebenfalls öffentlich zu machen. Denn beim Testen innerhalb der YQL Console ist er Teil des SELECT-Statements, auf meiner Seite darf er das nicht mehr sein. Im folgenden zeige ich, aufbauend auf einem &lt;a href=&quot;http://nagiworld.net/2010/03/keeping-secrets-safe-with-yql-storage&quot; title=&quot;Keeping secrets safe with YQL Storage&quot;&gt;Artikel von Nagesh Susarla&lt;/a&gt;, was zu tun ist, damit man den geheimen API-Schlüssel geheim halten und dennoch für seine YQL-Abfragen nutzen kann.&lt;/p&gt;
&lt;p&gt;Damit kann ich beispielsweise meine wöchentlichen Top-Künstler von last.fm abrufen kann, reichen mir ein paar Zeilen Javascript-Code, einen eigenen Webserver benötige ich dafür gar nicht. Als Grundlage dient mir das offizielle YQL-Tutorial &lt;a href=&quot;http://developer.yahoo.com/yql/guide/yql-tutorials.html#tutorial-first_yql_app&quot; title=&quot;YQL Tutorial&quot;&gt;First YQL Application&lt;/a&gt;, das ihr euch vielleicht ansehen solltet, falls ihr noch nie mit YQL zu tun hattet. Die Daten, sprich meine Top-Künstler, beziehe ich aus der Community Table &lt;a href=&quot;http://developer.yahoo.com/yql/console/?q=desc%20yql.storage.admin&amp;amp;env=store://datatables.org/alltableswithkeys#h=desc%20lastfm.user.getweeklyartistchart&quot; title=&quot;Beschreibung in der YQL Console&quot;&gt;lastfm.user.getweeklyartistchart&lt;/a&gt; (dort auf &lt;em&gt;Test&lt;/em&gt; klicken).&lt;/p&gt;
&lt;p&gt;Um nun an meine Liste heranzukommen, schicke ich folgende Abfrage ab:&lt;br/&gt;&lt;pre name=&quot;code&quot; class=&quot;sql&quot;&gt;select &#039;*&#039; from lastfm.user.getweeklyartistchart where user = &#039;numblog&#039; and api_key = &#039;API_KEY&#039;&lt;/pre&gt;&lt;br/&gt;&lt;span style=&quot;font-size:small;&quot;&gt;&lt;a href=&quot;http://developer.yahoo.com/yql/console/?q=select%20*%20from%20lastfm.user.getweeklyartistchart%20where%20user%20%3D%20%27numblog%27%20and%20api_key%20%3D%20%27api_key%27&amp;amp;env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&quot;&gt;In der YQL Console ausführen&lt;/a&gt; (ihr benötigt einen gültigen API Key) - Hinweis: Die Hochkommata um das Sternchen bitte weglassen; die stehen da nur, weil sonst das Syntax-Highlighting kaputt geht.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Wollte ich diese Abfrage in meine Webseite einbinden, wäre der API Key für alle lesbar:&lt;br/&gt;&lt;pre name=&quot;code&quot; class=&quot;xhtml&quot;&gt;&lt;script src=&quot;http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20lastfm.user.getweeklyartistchart%20where%20user%20%3D%20&#039;numblog&#039;%20and%20api_key%20%3D%20&#039;API_KEY&#039;&amp;format=json&amp;diagnostics=true&amp;env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&amp;callback=cbfunc&quot;&gt;&lt;/script&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Ich will natürlich vermeiden, dass Dritte mit meinem API Key auf last.fm zugreifen. Hier kommt &lt;a href=&quot;http://developer.yahoo.net/blog/archives/2009/06/sherpa.html&quot; title=&quot;Blog-Eintrag zum Thema im Yahoo! Developer Blog&quot;&gt;Yahoo! Sherpa&lt;/a&gt; ins Spiel, ein Key-Value-Store in der Cloud. Dieser kann ebenfalls via YQL angesprochen werden und bietet die üblichen Vorteile (und Nachteile) einer Cloud-Lösung. Zwei Open Data Tables werden angeboten, &lt;code&gt;yql.storage&lt;/code&gt; und &lt;code&gt;yql.storage.admin&lt;/code&gt;, wobei &lt;code&gt;yql.storage.admin&lt;/code&gt; die Tabelle unserer Wahl ist, weil sie nur nach erfolgter OAuth-Anmeldung oder über die YQL Console befüllbar ist. Mehr Info dazu bietet die &lt;a href=&quot;http://developer.yahoo.com/yql/guide/yql-cloud-chapter.html&quot; title=&quot;Kapitel YQL Cloud&quot;&gt;Dokumentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Aber gehen wir noch einmal einen Schritt zurück. Anstatt den API Key in der WHERE-Bedingung zu übergeben, könnten wir auch folgendermaßen vorgehen und die Variable schon vor unserer Abfrage setzen:&lt;br/&gt;&lt;pre name=&quot;code&quot; class=&quot;sql&quot;&gt;use &#039;http://www.datatables.org/lastfm/lastfm.user.getweeklyartistchart.xml&#039; as lastfm.user.getweeklyartistchart;
set api_key=&#039;API_KEY&#039; on lastfm.user.getweeklyartistchart;
select &quot;*&quot; from lastfm.user.getweeklyartistchart where user = &#039;numblog&#039;;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Wenn wir dies nun mit der Tabelle &lt;code&gt;yql.storage.admin&lt;/code&gt; verbinden und in der YQL Console (in eingeloggtem Zustand, ihr benötigt also auch einen Yahoo!-Account) die Daten mit dem entsprechenden Statement in die Cloud schreiben:&lt;br/&gt;&lt;pre name=&quot;code&quot; class=&quot;sql&quot;&gt;
insert into yql.storage.admin (value) values (&quot;use &#039;http://www.datatables.org/lastfm/lastfm.user.getweeklyartistchart.xml&#039; as lastfm.user.getweeklyartistchart;
set api_key=&#039;API_KEY&#039; on lastfm.user.getweeklyartistchart;&quot;)&lt;/pre&gt;&lt;br/&gt; dann erhalten wir dem folgenden ähnliches XML zurück:&lt;br/&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;
&lt;results&gt;
    &lt;inserted&gt;
        &lt;execute&gt;store://I2KUjXfoobarAzIw0v3vfv&lt;/execute&gt;
        &lt;seletc&gt;store://p6QZPnGmgyoafoobarNimz&lt;/seletc&gt;
        &lt;update&gt;store://jTfoobarMLleWbJoMY8phd&lt;/update&gt;
    &lt;/inserted&gt;
&lt;/results&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Dieses Ergebnis solltet ihr euch gleich mal in einen Editor kopieren, denn das benötigen wir gleich wieder zur Abfrage auf unserer Webseite. Kurz erklärt:&lt;ul&gt;&lt;li&gt;Der &lt;code&gt;execute&lt;/code&gt;-Schlüssel kann nur zur Ausführung von Abfragen verwendet werden. Die hinterlegten Daten werden nicht ausgegeben.&lt;/li&gt;&lt;li&gt;Der &lt;code&gt;select&lt;/code&gt;-Schlüssel sollte geheim bleiben, denn damit lassen sich die Einträge aus &lt;code&gt;yql.storage&lt;/code&gt; auslesen.&lt;/li&gt;&lt;li&gt;Der &lt;code&gt;update&lt;/code&gt;-Schlüssel erlaubt das Verändern dieser Einträge; somit sollte auch er geheim bleiben.&lt;/li&gt;&lt;/ul&gt;Mithilfe des &lt;code&gt;execute&lt;/code&gt;-Schlüssels, den wir als Umgebungsvariable übergeben, lässt sich unsere Abfrage nun ohne Angabe des API Key ausführen:&lt;br/&gt;&lt;pre name=&quot;code&quot; class=&quot;xhtml&quot;&gt;&lt;script src=&quot;http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20lastfm.user.getweeklyartistchart%20where%20user%20%3D%20&#039;numblog&#039;&amp;format=json&amp;diagnostics=true&amp;env=store%3A%2F%2FI2KUjXfoobarAzIw0v3vfv&amp;callback=cbfunc&quot;&gt;&lt;/script&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Ihr könnt in der YQL Console auch gern die Sicherheit des &lt;code&gt;execute&lt;/code&gt;-Schlüssels testen und werdet einen Permission-Error zurückbekommen:&lt;br/&gt;&lt;pre name=&quot;code&quot; class=&quot;sql&quot;&gt;select * from yql.storage where name=&#039;store://I2KUjXfoobarAzIw0v3vfv&#039;&lt;/pre&gt;&lt;br/&gt;&lt;span style=&quot;font-size:small;&quot;&gt;&lt;a href=&quot;http://developer.yahoo.com/yql/console/?q=select%20*%20from%20yql.storage%20where%20name%3D%27store%3A%2F%2FI2KUjXfoobarAzIw0v3vfv%27&amp;amp;env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&quot;&gt;In der YQL Console ausführen&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Somit steht dem clientseitigen Anzapfen diverser APIs nichts mehr im Wege, auch wenn ein API Key verlangt wird. Momentan gibt es bereits weit über 800 &lt;a href=&quot;http://datatables.org/&quot;&gt;Open Data Tables&lt;/a&gt;, über die Daten von den verschiedensten Diensten abgerufen werden. Viele davon sind frei zugänglich, andere benötigen einen API Key. Fragt ihr diese vom Server aus ab, stellt das kein Problem dar. Eine rein clientseitige Lösung im Browser hat aber auch ihren Charme. Es wird kein Server benötigt und daher auch nicht belastet, Yahoo! übernimmt im Hintergrund viel Arbeit (Caching, Fehlerbehandlung, ...) für euch, und möglicherweise ist alles viel schneller. Und jetzt auch sicher.&lt;/p&gt;
&lt;p&gt;Hier die simple Ausgabeliste meines einfachen Beispiels:&lt;/p&gt;
  &lt;script type=&#039;text/javascript&#039;&gt;
    // Parses returned response and extracts
    // the title, links, and text of each news story.
    function top_stories(o) {
      var artists = o.query.results.lfm.weeklyartistchart.artist;
      var no_artists = artists.length;
      var output = &#039;&lt;ol&gt;&#039;;
      for(var i = 0; i &lt; no_artists; i++) {
        var title = artists[i].name;
        var link  = artists[i].url;
        var desc  = artists[i].playcount;
        output += &quot;&lt;li&gt;&lt;a href=&#039;&quot; + link + &quot;&#039;&gt;&quot; + title + &quot;&lt;/a&gt; &quot; + desc + &quot;-mal gespielt&lt;/li&gt;&quot;;
      }
      output += &#039;&lt;/ol&gt;&#039;;
      // Place news stories in div tag
      document.getElementById(&#039;yql_lastfm_results&#039;).innerHTML = output;  
    }
    &lt;/script&gt;
    &lt;div id=&quot;yql_lastfm_results&quot; style=&quot;margin-left:1em;&quot;&gt;&lt;/div&gt;
    &lt;script src=&quot;http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20lastfm.user.getweeklyartistchart%20where%20user%20%3D%20&#039;numblog&#039;&amp;format=json&amp;diagnostics=true&amp;env=store%3A%2F%2FI2KUjXc5O0hZAzIw0v3vfv&amp;callback=top_stories&quot;&gt;&lt;/script&gt; 
    </content:encoded>

    <pubDate>Fri, 06 Aug 2010 15:07:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.sperr-objekt.de/content/145-guid.html</guid>
    <category>api</category>
<category>javascript</category>
<category>last.fm</category>
<category>secret</category>
<category>sherpa</category>
<category>yahoo!</category>
<category>yql</category>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/</creativeCommons:license>
</item>
<item>
    <title>Waldhof Mannheim vor der Oberliga-Saison 2010/11</title>
    <link>http://blog.sperr-objekt.de/content/143-Waldhof-Mannheim-vor-der-Oberliga-Saison-201011.html</link>
            <category>Deutsche Beiträge</category>
    
    <comments>http://blog.sperr-objekt.de/content/143-Waldhof-Mannheim-vor-der-Oberliga-Saison-201011.html#comments</comments>
    <wfw:comment>http://blog.sperr-objekt.de/wfwcomment.php?cid=143</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.sperr-objekt.de/rss.php?version=2.0&amp;type=comments&amp;cid=143</wfw:commentRss>
    

    <author>nospam@example.com (Matthias Gutjahr)</author>
    <content:encoded>
    &lt;p style=&quot;font-weight:bold;&quot;&gt;Am morgigen Donnerstag, dem 22. Juli, steht das erste Saisonspiel für den traditionsreichen &lt;a href=&quot;http://www.svw07.de/&quot;&gt;SV Waldhof Mannheim 07&lt;/a&gt; an. In der ersten Runde des BFV-Pokals tritt die Mannschaft um 19 Uhr beim &lt;a href=&quot;http://www.sv1927rohrbach.de/&quot;&gt;SV Rohrbach&lt;/a&gt; an. Nach den lange andauernden Querelen, nach dem Lizenzentzug für die Regionalliga, nach Trainerentlassung und Neubesetzung des Postens, nach Abwendung der Insolvenz und nach dem Aufbau eines fast komplett neuen Kaders ist dies ein erster Schritt in Richtung Normalität.&lt;/p&gt;&lt;p&gt;Seit den glanzvollen Bundesliga-Jahren sieht &quot;Normalität&quot; in meinem Verein allerdings durchaus anders aus als anderswo; nennen wir es also &quot;relative Normalität&quot;. Wie so häufig in den vergangenen Jahren müssen sich die Fans an viele neue Spieler gewöhnen. Mit Fazlija und Waldecker in der Defensive und Myftari im Mittelfeld sind immerhin einige bekannte Gesichter an den Alsenweg zurückgekehrt. Auch aus der zweiten Mannschaft und der sehr erfolgreichen U19 wurden junge Talente in &lt;a href=&quot;http://wikiwaldhof.de/index.php?title=Saison_2010/11&quot; title=&quot;Der Kader in der Saison 2010/11&quot;&gt;die Mannschaft&lt;/a&gt; geholt. Trainer in der aktuellen Saison ist mit &lt;a href=&quot;http://wikiwaldhof.de/index.php?title=Reiner_Hollich&quot;&gt;Reiner Hollich&lt;/a&gt; ein echtes Waldhof-Urgestein.&lt;/p&gt;&lt;p&gt;Die überfällige Neuausrichtung des Vereins wird auch in anderen Bereichen deutlich. Die Webseite wurde vorsichtig &lt;a href=&quot;http://www.svw07.de/relaunch-der-svw-webseite.html&quot;&gt;überarbeitet&lt;/a&gt;. Und die immer noch zahlreichen und engagierten Fans bringen sich konstruktiv in die Vereinsarbeit ein, allen voran der Fan-Dachverband &lt;a href=&quot;http://www.pro-waldhof.de/&quot;&gt;ProWaldhof&lt;/a&gt;. Das verdeutlichen Aktionen wie der Flashmob am Wasserturm oder die überall in der Stadt aufgehängten Transparente.&lt;/p&gt;&lt;p&gt;Bei einem Besuch im Rathaus und beim Stammtisch-Gespräch mit dem Mannheimer OB Kurz wurde gestern &lt;a href=&quot;http://www.cms.pro-waldhof.de/index.php?option=com_content&amp;amp;view=article&amp;amp;id=809:positive-signale-aus-dem-rathaus&amp;amp;catid=1:aktuelle-nachrichten&quot;&gt;konstruktiv über die Zukunft des SVW diskutiert&lt;/a&gt;. Von Seiten der Stadt wurde Unterstützung bezüglich der Sponsorensuche und der Fanproblematik signalisiert. SVW-Geschäftsführer Laib kam der Forderung nach mehr Transparenz nach und legte einige Zahlen offen, die bedingt optimistisch stimmen. In Kürze soll sogar ein Trikotsponsor für die neue Saison vorgestellt werden. In der vergangenen Rückrunde musste die Brust der Spieler leer bleiben. Allerdings &lt;a href=&quot;http://www.morgenweb.de/nachrichten/sport/sv_waldhof/20100721_mmm0000000306232.html&quot;&gt;fehlen immer noch 200.000 Euro&lt;/a&gt; zur Deckung des Oberliga-Etats.&lt;/p&gt;&lt;p&gt;Nach wie vor steht also die Finanzierung des Vereins auf tönernen Füßen. Wenn alles gut läuft, ist die Mannschaft sportlich erfolgreich, und der Etat kann gestemmt werden. An den umgekehrten Fall möchte ich lieber gar nicht denken &lt;img src=&quot;http://blog.sperr-objekt.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; Vielmehr freue ich mich, dass es nun, gerade mal elf Tage nach dem WM-Endspiel, wieder losgeht. Und wie zu Beginn einer jeden Saison bin ich guter Dinge, dass diesmal alles besser wird. Ich hoffe bloß, dass ich zur Winterpause nicht wieder grandios enttäuscht werde. Waldhof-Fans haben Geduld, sehr viel Geduld. Aber unendlich ist auch diese nicht ...&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 21 Jul 2010 10:46:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.sperr-objekt.de/content/143-guid.html</guid>
    <category>baden-württemberg</category>
<category>fußball</category>
<category>oberliga</category>
<category>svw</category>
<category>svw07</category>
<category>waldhof</category>
<category>waldhof mannheim</category>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/</creativeCommons:license>
</item>

</channel>
</rss>