<?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/"
   >
<channel>
    
    <title>onli blogging</title>
    <link>http://www.onli-blogging.de/</link>
    <description></description>
    <dc:language>de</dc:language>
    <generator>Serendipity 1.7 - http://www.s9y.org/</generator>
    <managingEditor>mail@onli-blogging.de</managingEditor>
<pubDate>Sat, 18 May 2013 16:06:00 GMT</pubDate>

    <image>
        <url>http://www.onli-blogging.de/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: onli blogging - </title>
        <link>http://www.onli-blogging.de/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Die Brainstormabschaffung ist eine Bankrotterklärung</title>
    <link>http://www.onli-blogging.de/index.php?/1303/Die-Brainstormabschaffung-ist-eine-Bankrotterklaerung.html</link>
            <category>Linux</category>
    
    <comments>http://www.onli-blogging.de/index.php?/1303/Die-Brainstormabschaffung-ist-eine-Bankrotterklaerung.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1303</wfw:comment>

    <slash:comments>22</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1303</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;p class=&quot;whiteline&quot;&gt;&lt;a href=&quot;http://brainstorm.ubuntu.com/&quot; title=&quot;Popular ideas - Ubuntu brainstorm&quot;&gt;Ubuntu Brainstorm&lt;/a&gt; war im Kerngedanke ein großartiges Projekt. Die Ideen all der Nutzer anzuzapfen, die täglich Ubuntu benutzen, und durch ein Wahlsystem die Ideen gefiltert an die Entwickler weiterzugeben, ist Participatory Design in Reinform. Es ist aber auch die kleine Form des PD, bei dem die Nutzer als Experten ihrer spezifischen Softwarenutzung gesehen werden, aber abgesehen von diesem ersten Input nicht weiter an der Ausgestaltung ihrer Idee beteiligt sind.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Ubuntu Brainstorm war eine faire Abmachung: &lt;strong&gt;Ihr Nutzer gebt uns Entwickler Ideen, und dafür kreisen wir Entwickler ab und an über diese Ideensammlung und implementieren manche der Ideen.&lt;/strong&gt;
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Jono Bacon &lt;a href=&quot;http://www.jonobacon.org/2013/05/16/on-brainstorm/&quot; title=&quot;On Brainstorm  |  jonobacon@home&quot;&gt;tut nun so&lt;/a&gt;, als sei das untypisch für Open Source. Das funktionierende Modell sei, dass der Nutzer möglichst weit beteiligt ist, am besten selbst Mockups und Patches bereitstellt und so die Integration seiner Idee vorantreibt. In dem Artikel zur Brainstorm-Abschaltung schreibt Bacon auch klar, dass das alternative Modell bei Ubuntu nicht funktionierte. Die Ideen wurden von den Entwicklern ignoriert, und weil die Existenz des Brainstorms die soziale Erwartung hervorgerufen habe, dass die Ideen auch umgesetzt würden (wie überraschend), sei das für die Nutzer frustrierend und insgesamt schädlich gewesen. Er schreibt das so:
&lt;/p&gt;&lt;blockquote&gt;&lt;p class=&quot;whiteline&quot;&gt;Some time ago the Technical Board took a work item to try to solve this problem by regularly curating the most popular items in brainstorm with a commentary around technical feasibility, but the members of the TB unfortunately didn’t have time to fulfill this. As such, brainstorm turned into a big list of random ideas, ranging from the sublime to the ridiculous, and largely ignored by the Ubuntu development process. 
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;...
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;In other words, just because an idea is popular doesn’t necessarily mean it is interesting enough for a developer to want to implement it. Secondly, brainstorm started to garner an unrealistic social expectation that popular ideas would be automatically added to the TODO list of prominent Ubuntu developers, which was never the case.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Das dürfte auch stimmen, seine Schilderung unterschlägt allerdings, dass das Brainstorm-Tool genau für diese nun als unrealistisch bezeichnete Erwartung da war und genau so angekündigt wurde: Als Möglichkeit normaler Nutzer, ihre Ideen einzubringen, über sie abstimmen zu lassen und gute und machbare Ideen von Entwicklern umsetzen zu lassen. So stand das damals beispielsweise in der &lt;a href=&quot;http://netsplit.com/2008/02/28/ubuntu-brainstorm-announced/&quot; title=&quot;Ubuntu Brainstorm Announced! | netsplit.com&quot;&gt;Ankündigung&lt;/a&gt;:
&lt;/p&gt;&lt;blockquote&gt;&lt;p class=&quot;break&quot;&gt;The development team can now take the pulse on the most pressing user issues and propose the ideas as topics at the Ubuntu Development Summits and ultimately as specifications. Ubuntu development is in turn driven by detailed specifications written up in the wiki and tracked as blueprints in Launchpad&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Es ist kein Wunder, dass die Nutzung des Tools zurückging, wenn Ideen von den Entwicklern eben nicht aufgegriffen wurden.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Es gibt natürlich Projekte, die nach Bacons vermeintlichem Ideal  funktionieren, und es gibt einige wenige Nutzer, die sich tatsächlich so einbringen können. Doch im Großen ist das illusorisch und absurd. Ein Nutzer mit einer guten Ideen muss in einem in meinen Augen idealen Projekt nicht wissen, wie sie umsetzbar ist, er muss ganz sicher keine Mockups designen, er muss nur einen Entwickler finden, der in der Idee Potential sieht und sie für umsetzbar hält. Und bereit ist, das dafür notwendige zu tun. Und genau für diesen ersten Schritt des Nutzers versprach Ubuntu Brainstorm Hilfe - das gleichzeitig auch noch mit verschiedenen Mitteln dabei helfen sollte, Ideen der Nutzer zu strukturieren und sie in eine spezifikationsähnliche Form zu bringen.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Es ist nun nicht so, dass es keine Projekte gibt, die tatsächlich so nutzergetrieben funktionieren. Serendipity z.B. wird seit Jahren so weiterentwickelt. Das Spamblock-Bayes-Plugin kam genau so zustande: Ein Nutzer schlug die Idee vor, kleinerChemiker baute ein entsprechendes Plugin, ich brachte es zum Laufen, vervollständigte es und pflege es seitdem gelegentlich. Und Serendipity ist keine Ausnahme mit diesem Entwicklungsmodell (bei dem natürlich auch die Entwickler eigene Ideen einbringen und eine Beziehung zu der Idee haben müssen), ich sehe so etwas immer wieder. Es ist ab einem gewissen Entwicklungsstadium meinem Eindruck nach eher die Norm als die Ausnahme, dass neue Features aus Nutzerideen entstehen.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Natürlich steht ein solches PD-Tool auch in einem größeren Zusammenhang: In einem Projekt, das ganz bewusst eben nicht PD betreibt, sondern im Großen nur die Ideen der Entwicklung und Projektleitung umsetzt, hat ein solches Tool keinen Wert. Ich sage das ohne Wertung, es geht nicht darum, was Unity, Mir oder Ubuntu Phone taugen. Es geht darum, dass diese Entwicklung des Ubuntu-Projekts nicht aus der Nutzerschaft kam, sondern von oben - und ohne jegliche Einflussmöglichkeit, sogar mit explizit geäußerter Nicht-Beeinflussbarkeit - festgelegt wurde.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Es ist also völlig richtig von Ubuntu, Brainstorm abzuschalten. Es ist etwas schade für mich, weil ich immer mal wieder darauf als Beispiel für PD verwies. Aber es ist für die Nutzer gut, wenn sie nicht länger getäuscht werden, sondern klar ist: Einfach eine gute Idee an die Entwickler weiterzugeben reicht nicht, um sie umsetzen zu lassen, muss vom Nutzer schon mehr kommen. Es heißt auch: Ubuntu hat keine Entwickler, die immer wieder auf den Brainstorm schauen und daraus Ideen umsetzen. Weder gibt es dafür Freiwillige, noch will Canoncial jemanden dafür bezahlen. Diese Art der Nutzerbeteiligung, diese Form von Participatory Design, wird nicht umgesetzt. &lt;strong&gt;Die Abmachung gilt nicht mehr.&lt;/strong&gt;
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Diesen Umstand muss man nicht gut finden. &lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 16 May 2013 22:41:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1303/guid.html</guid>
    
</item>
<item>
    <title>Hackernews verbessern</title>
    <link>http://www.onli-blogging.de/index.php?/1302/Hackernews-verbessern.html</link>
            <category>Technikzeugs</category>
    
    <comments>http://www.onli-blogging.de/index.php?/1302/Hackernews-verbessern.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1302</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1302</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;p class=&quot;whiteline&quot;&gt;&lt;a href=&quot;https://news.ycombinator.com/news&quot; title=&quot;Hacker News&quot;&gt;Hackernews&lt;/a&gt; ist eine meiner Haupt-Nachrichtenquellen, aber die Seite an sich ist weder hübsch noch funktionsreich. Und auch wenn eine Beschränkung auf Kernfunktionen sinnvoll sein kann, gibt es eine Reihe von fehlenden Funktionen, die ich zu den notwendigen dazuzähle. Die von mir genutzten Erweiterungen:
&lt;/p&gt;&lt;h4&gt;Alternatives Design&lt;/h4&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;a href=&quot;http://userstyles.org/styles/71445/better-hacker-news-design&quot; title=&quot;Better Hacker News Design - Themes and Skins for Ycombinator - userstyles.org&quot;&gt;Dieses Design&lt;/a&gt; habe ich &lt;a href=&quot;http://userstyles.org/styles/71445/better-hacker-news-design&quot; title=&quot;Better Hacker News Design - Themes and Skins for Ycombinator - userstyles.org&quot;&gt;schonmal vorgestellt&lt;/a&gt;. Inzwischen hab ich es ein paarmal überarbeitet, Bugs gefixt, und mich daran gewöhnt. Würde behaupten, dass es sich für mich bewährt hat. Am besten &lt;a href=&quot;https://chrome.google.com/webstore/detail/stylish/fjnbnpbmkenffdnngjfgmeleoegfcffe&quot; title=&quot;Chrome Web Store - Stylish&quot;&gt;Stylish&lt;/a&gt; für die Installation nutzen.
&lt;/p&gt;&lt;h4&gt;Kommentarbenachrichtigungen per Mail&lt;/h4&gt;&lt;p class=&quot;whiteline&quot;&gt;Tatsächlich bin ich nicht mehr nur stummer Leser, meine eigenen Submissions wurden nicht völlig ignoriert und ab und an kommentiere ich. Um Antworten auf die eigenen Kommentare mitzubekommen und nicht unhöflicherweise zu ignorieren, ist &lt;a href=&quot;http://hnnotify.com/&quot; title=&quot;HN Notify | Email Reply Notifications for Hacker News&quot;&gt;HN Notify&lt;/a&gt; großartig. Man bekommt jeweils eine Email mit dem Kommentar zugesandt.
&lt;/p&gt;&lt;h4&gt;Subdomains anzeigen&lt;/h4&gt;&lt;p class=&quot;whiteline&quot;&gt;Bei einigen Domains mach HN das nun selbst, aber nicht bei allen - Mit dieser &lt;a href=&quot;https://chrome.google.com/webstore/detail/hacker-news-show-full-dom/amenlkcfjlmchdpogjmdolblcjlcmdbp&quot; title=&quot;Chrome Web Store - Hacker News - Show Full Domain&quot;&gt;Chrome-Erweiterung&lt;/a&gt;/&lt;a href=&quot;https://userscripts.org/scripts/show/121512&quot; title=&quot;Show Full Domain on Hacker News posts for Greasemonkey&quot;&gt;diesem userscript&lt;/a&gt; (ich hab die Erweiterung irgendwo anders installiert) wird immer die volle Domain angezeigt, wodurch man manchmal schneller mitbekommt, welcher Art der Artikel ist. War besonders wichtig für Google+-Posts, bei denen früher nur google.com als Ursprungs-URL angezeigt wurde. Dieser spezielle Fall ist nun von HN gelöst, aber ähnliche Fälle gibt es immer wieder.
&lt;/p&gt;&lt;h4&gt;Upvotes farbig symbolisieren&lt;/h4&gt;&lt;p class=&quot;break&quot;&gt;Artikel mit den meisten Upvotes sind nicht automatisch die mit der besten Platzierung. Im Hintergrund werkelt ein Algorithmus, der zum einen das Karma des Nutzers einberechnet und illegitime Upvotes aussortiert, aber vor allem den Artikeln ein immer stärker werdendes Gewicht zuordnet, sodass alte Artikel mit der Zeit von der Startseite verschwinden. &lt;a href=&quot;https://chrome.google.com/webstore/detail/hacker-news-colors/adailobllebnhioglgkmaioilhlkdden&quot; title=&quot;Chrome Web Store - Hacker News Colors&quot;&gt;Diese Erweiterung&lt;/a&gt; zeigt einen sich je nach Anzahl der Upvotes von gelb nach rot  verfärbenden Balken an, wodurch diese Information viel schneller aufgenommen werden kann und zusammen mit der Platzierung auf der Seite das Gewicht und damit das Alter des Artikels gezeigt wird. Die neueste der von mir genutzten Modifikationen, muss sich erst noch bewähren, finde ich aber bisher sehr hübsch. Und passt nicht schlecht zu meinem Design. &lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 16 May 2013 15:58:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1302/guid.html</guid>
    
</item>
<item>
    <title>Serendipity 1.7</title>
    <link>http://www.onli-blogging.de/index.php?/1301/Serendipity-1.7.html</link>
            <category>Technikzeugs</category>
    
    <comments>http://www.onli-blogging.de/index.php?/1301/Serendipity-1.7.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1301</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1301</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;p class=&quot;whiteline&quot;&gt;Zuerst ein Hinweis auf einen Bug, auf &lt;a href=&quot;http://board.s9y.org/viewtopic.php?f=3&amp;t=19295&quot; title=&quot;    s9y: 1.6-&amp;gt;1.7: blogurl missing (Bugs) &amp;bull; Serendipity PHP Blog    &quot;&gt;den hier&lt;/a&gt;. Zur Vermeidung nach dem Upgrade auf 1.7 einfach in der Konfiguration die Option &quot;URL zum Blog&quot; nachtragen, oder die Einstellungen bis 1.7.1 nächste Woche komplett nicht anfassen. Hat mir fast Spaß gemacht, den erst halb zu fixen, nur um dann mit meinem Patch selbst in den Bug zu rennen und im Bus auf die Lösung des Problems zu kommen. Wer während meines Nachdenkens mein Gesicht gelesen hätte, hätte mich wahrscheinlich für etwas sonderbar gehalten.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Ansonsten ist 1.7 genau wie in der &lt;a href=&quot;http://blog.s9y.org/archives/247-Serendipity-1.7-released.html&quot; title=&quot;Serendipity 1.7 released  - Serendipity&quot;&gt;Releaseankündigung&lt;/a&gt; beschrieben in erster Linie ein Release, das notwendig wurde, weil die weiteren Änderungen von PHP 5.x Änderungen bei Serendipity notwendig machten, größtenteils der Pointerkram. Interessanter sind die neuen Funktionen und Anpassungen:
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Smarty 3 ist an so viel Stellen schöner zu schreiben als die Vorgängerversion, dass ich schon eine Weile nur noch Smarty 3-Templates produziere. Schon das neue foreach alleine wäre das Upgrade wert.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Mir besonders wichtig ist die &lt;a href=&quot;http://www.onli-blogging.de/index.php?/1181/Stabile-Archiv-URLs-in-Serendipity.html&quot; title=&quot;Stabile Archiv-URLs in Serendipity - onli blogging&quot;&gt;&quot;stable archives&quot;-Option&lt;/a&gt;. Google weniger unnötige Änderungen zuzumuten und von Google kommende Leser besser finden zu lassen, was sie suchen, hat mich sofort überzeugt und setzte ich deswegen besonders gerne um. Habe auch noch keine Blogsoftware bewusst wahrgenommen, die das ebenfalls richtig macht.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Und dass Dateien ohne Dateiendungen von der Mediendatenbank jetzt korrekt erkannt werden dürfte für mich hilfreich sein.
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Alles in allem ein kleines Release, das sich aber auf jeden Fall lohnt. Der Autoupdater hat übrigens bei mir einwandfrei funktioniert. &lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 14 May 2013 20:43:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1301/guid.html</guid>
    <category>serendipity</category>

</item>
<item>
    <title>Boot beschleunigen: e4rat statt ureadahead</title>
    <link>http://www.onli-blogging.de/index.php?/1300/Boot-beschleunigen-e4rat-statt-ureadahead.html</link>
            <category>Linux</category>
    
    <comments>http://www.onli-blogging.de/index.php?/1300/Boot-beschleunigen-e4rat-statt-ureadahead.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1300</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1300</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;p class=&quot;whiteline&quot;&gt;Mein PC ist nicht alt, aber die genutzte Festplatte schon. Daher rechne ich gar nicht mit einem wirklich schnellen Ubuntu-Start, und tatsächlich habe ich den auch nicht. Doch &lt;a href=&quot;http://sourceforge.net/projects/e4rat&quot; title=&quot;e4rat | Free System Administration software downloads at SourceForge.net&quot;&gt;e4rat&lt;/a&gt; hilft ein bisschen: Vorher dauerte der Bootprozess bis zum Start von X 55 Sekunden, nach Durchlaufen &lt;a href=&quot;http://www.howtogeek.com/69753/how-to-cut-your-linux-pcs-boot-time-in-half-with-e4rat/&quot; title=&quot;  How To Cut Your Linux PC&amp;#8217;s Boot Time in Half With E4rat&quot;&gt;der Anleitung&lt;/a&gt; sind es 45. Nicht schlecht.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Anleitung in kurz:
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;ureadahead deinstallieren&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;sudo apt-get remove ureadahead&lt;/pre&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;a href=&quot;http://sourceforge.net/projects/e4rat/files/&quot; title=&quot;e4rat -  Browse Files at SourceForge.net&quot;&gt;e4rat herunterladen&lt;/a&gt; und installieren:&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;sudo dpkg -i Downloads/e4rat_0.2.3_i386.deb&lt;/pre&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Dann&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;init=/sbin/e4rat-collect &lt;/pre&gt;&lt;p class=&quot;whiteline&quot;&gt;zur &#039;&quot;linux ...&quot;-Zeile in der &lt;strong&gt;/boot/grub/grub.cfg&lt;/strong&gt; hinzufügen, neustarten. &lt;code&gt;init=/sbin/e4rat-collect&lt;/code&gt; wieder entfernen
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Schließlich die Festplatte umfragmentieren lassen: Starten in der Wiederherstellungskonsole (oder &#039;single&#039; zum normalen Booteintrag anfügen) und &lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;e4rat-realloc /var/lib/e4rat/startup.log&lt;/pre&gt;&lt;p class=&quot;whiteline&quot;&gt;solange ausführen, bis die Meldung kommt, dass keine Verbesserungen mehr möglich seien.
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;In die  &lt;strong&gt;/etc/default/grub&lt;/strong&gt; dann noch&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;init=/sbin/e4rat-preload&lt;/pre&gt;&lt;p class=&quot;break&quot;&gt;zur GRUB_CMDLINE_LINUX_DEFAULT hinzufügen und mit einem&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;sudo update-grub&lt;/pre&gt;&lt;p class=&quot;whiteline&quot;&gt;Grub aktualisieren
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;em&gt;Nachtrag:&lt;/em&gt; Man beachte &lt;a href=&quot;http://www.onli-blogging.de/index.php?/1300/Boot-beschleunigen-e4rat-statt-ureadahead.html#c4798&quot; title=&quot;&quot;&gt;Anaximanders Kommentar&lt;/a&gt; , das sollte manchmal wiederholt werden. &lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 09 May 2013 13:05:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1300/guid.html</guid>
    
</item>
<item>
    <title>Wenn Daten einfach weg sind</title>
    <link>http://www.onli-blogging.de/index.php?/1299/Wenn-Daten-einfach-weg-sind.html</link>
            <category>Technikzeugs</category>
    
    <comments>http://www.onli-blogging.de/index.php?/1299/Wenn-Daten-einfach-weg-sind.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1299</wfw:comment>

    <slash:comments>7</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1299</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;p class=&quot;whiteline&quot;&gt;Wenn die Festplatte kaputt geht, ist hoffentlich noch ein Backup auf einer anderen Platte. Wenn die Wohnung abbrennt, sind beide Platten kaputt und alle Daten weg. So gesehen sollten ins Internet ausgelagerte Daten eigentlich sicherer vor Verlust sein - Daten in der Cloud werden redundant in verschiedenen Rechenzentrums gespeichert, um durch Unfälle verloren zu gehen muss viel passieren. 
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Doch was schützt vor Fehler und Willkür des Cloudbetreibers? Nichts. Zahlt man nichts für den Dienst - und selbst wenn, was ändert das groß an der Machtverteilung - sind die Daten nicht unter eigener Kontrolle. Kein origineller Gedanke, nichts neues, aber aus gegebenem Anlass: Alle meine +1 sind weg. Ich bin nicht bei Google+ angemeldet, aber +1 wurden und werden trotzdem auf der &lt;a href=&quot;https://profiles.google.com/onli89/plusones&quot; title=&quot;&quot;&gt;Google-Profilseite&lt;/a&gt; gesammelt, nur ist da jetzt eben nur noch eines, das neue. 
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Die +1 hab ich genutzt, um die Linkliste hier rechts im Blog zu befüllen und im gesamten war das inzwischen ein recht volles Archiv meiner Meinung nach wichtiger Artikel, ein Blick aufs Zeitgeschehen quasi aus meiner Perspektive und mit relativ vielen Erinnerungen verknüpft, was damals von mir dazu gedacht wurde.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Temporärer Fehler? Gelöschte Daten? Keine Ahnung, aber dass nur ein einziges auftaucht riecht nach gelöschten Daten. Und ich bin völlig machtlos - keine echte Supportoption auf der Seite (Feedback geben != Support), die Einstellungen führen zu einer Fehlerseite (schon immer, wohl weil kein Google+-Nutzer).
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Trotz allem, das sind nichtmal wichtige Daten. Alle Emails gelöscht, das wäre schlimm (immerhin hab ich ein nicht zu altes Offline-Backup, trotzdem wäre viel weg), Account gesperrt, das wäre katastrophal. Es wird Zeit, die wirklich wichtigen Dinge wie die Email-Adresse selbst zu besitzen. Vielleicht kann man die ja anfangs auf die Google-Mail umleiten. Wenn Mailserver nur nicht so fürchterlich wären, dann könnte man das gleich ganz selbst hosten - und würde die Daten wahrscheinlich durch einen Festplattenfehler im dann einzigen Rechenzentrum verlieren… &lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 06 May 2013 19:27:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1299/guid.html</guid>
    
</item>
<item>
    <title>Modmic</title>
    <link>http://www.onli-blogging.de/index.php?/1298/Modmic.html</link>
            <category>Linux</category>
    
    <comments>http://www.onli-blogging.de/index.php?/1298/Modmic.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1298</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1298</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;p class=&quot;whiteline&quot;&gt;An der Uni habe ich Zugang zu einem 3D-Drucker. Herausgekommen ist das hier:
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;a href=&quot;https://picasaweb.google.com/lh/photo/Q4DA_4Qj-Qk0Qu16XEmRf9MTjNZETYmyPJy0liipFm0?feat=embedwebsite&quot; title=&quot;Picasa Web Albums - onli onli&quot;&gt;&lt;img src=&quot;https://lh4.googleusercontent.com/-6DpBK85kGvQ/UX_LJZ9zDJI/AAAAAAAACiI/TQ60fyhADEg/s800/modmic-prototyp.jpg&quot; height=&quot;424&quot; width=&quot;800&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Es ist ein Halter für ein Ansteck-Mikrofon, der seitlich an den Kopfhörer geklebt wird. Hintergrund ist, dass ich der Empfehlung des hifi-forums gefolgt bin und statt eines Headsets einen &lt;a href=&quot;http://www.thomann.de/de/superlux_hd681_b.htm&quot; title=&quot;Superlux HD-681 B&quot;&gt;Kopfhörer&lt;/a&gt; samt &lt;a href=&quot;http://www.amazon.de/K%C3%B6nig-Ansteckmikrofon-Befestigung-Krawatte-Revers/dp/B009P1VC5W&quot; title=&quot;&quot;&gt;Ansteckmikrofon&lt;/a&gt; gekauft habe. Im Grunde war das auch eine gute Idee, besonders der Kopfhörer ist wirklich besser als deutlich teurere Headsets. Aber das Anstecken des Mikrofons hat mich irgendwann genervt, vor allem nachdem der Plastikhalter abgebrochen ist.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Der Prototyp ist zusammengeklebt. Natürlich habe ich zuerst wesentlich kompliziertere Lösungen mit Steckverbindungen und Gelenken gebaut, so richtig haben die aber bisher noch nicht funktioniert. Wie einfach die Lösung jetzt ist sieht man vielleicht besser am CAD-Modell:
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;a href=&quot;https://picasaweb.google.com/lh/photo/7S5dYupbWPM6Zz3YDqB8A9MTjNZETYmyPJy0liipFm0?feat=embedwebsite&quot; title=&quot;Picasa Web Albums - onli onli&quot;&gt;&lt;img src=&quot;https://lh3.googleusercontent.com/-HnAxHi8cp80/UX_LJcrm-wI/AAAAAAAACiI/wKpZNfqVgwo/s800/modmic.png&quot; height=&quot;458&quot; width=&quot;800&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;a href=&quot;http://www.wings3d.com/&quot; title=&quot;Wings 3D | A Polygon Modeler&quot;&gt;Wings3D&lt;/a&gt; hat sich für mich als absoluten CAD-Anfänger als gutes Werkzeug erwiesen, um unter Ubuntu das Modell zu erstellen. Blender war mir von Anfang an zu kompliziert und zu störrisch für diese eigentlich einfache Aufgabe. Bei Google Sketchup wurde mir nicht klar, ob die kostenlose Version des Programms alles nötige kann. Freecads Oberfläche blieb für mich völlig undurchschaubar. &lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Mit Wings3D dagegen kamen recht schnell erste Modelle zustande. Die Basisblöcke können per Rechtsklick eingefügt und einfach durch den Raum geschoben werden. Das Manipulieren der Linien, Flächen und Punkte wurde mir sofort klar. Außerdem das einzige Programm, dessen Kamerasteuerung intuitiv funktioniert. Böse Stolperfalle jedoch ist die &quot;Hole&quot;-Funktion zum Einfügen von Löchern in Objekte: Die blendet Vektoren nur aus, aber entfernt sie nicht, was bei späterer Manipulation des Objekts unspeicherbare Modelle produziert. Dass man sie nicht wirklich nutzen soll findet man im Forum, dass stattdessen die &quot;Intrude&quot;- und &quot;Inset&quot;-Funktionen, angewandt gleichzeitig auf die gegenüberliegenden gleichgroßen Seiten eines Modells, die Aufgabe erledigen, war schon schwerer herauszufinden.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Beeinflusst vom &lt;a href=&quot;http://www.modmic.com/&quot; title=&quot;AntLion Audio &amp;mdash; Welcome&quot;&gt;AntLion-Modmic&lt;/a&gt;.

&lt;/p&gt;&lt;p class=&quot;break&quot;&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 30 Apr 2013 15:56:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1298/guid.html</guid>
    
</item>
<item>
    <title>Wie man mit Fizz Drachen stiehlt</title>
    <link>http://www.onli-blogging.de/index.php?/1297/Wie-man-mit-Fizz-Drachen-stiehlt.html</link>
            <category>Spiele</category>
    
    <comments>http://www.onli-blogging.de/index.php?/1297/Wie-man-mit-Fizz-Drachen-stiehlt.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1297</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1297</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;p class=&quot;whiteline&quot;&gt;&lt;iframe width=&quot;853&quot; height=&quot;480&quot; src=&quot;http://www.youtube.com/embed/lExPbOcYfAI&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=lExPbOcYfAI&quot; title=&quot;Perfect Dragon Steal by Fizz HD - YouTube&quot;&gt;Perfekte Reaktionen&lt;/a&gt;: Erst in den Drachen hineinspringen, dann herausspringen, mit Zhonyas Karthus Angriffe überleben und dann auch noch seiner Ulti ausweichen. Ich finde, das ist ein gutes Beispiel dafür, warum man ein Spiel wie LoL immer und immer wieder spielen kann und was man dabei im Kleinen lernt. &lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 29 Apr 2013 08:16:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1297/guid.html</guid>
    
</item>
<item>
    <title>Vortrag: Wie LoL für besseres Spielerverhalten sorgt</title>
    <link>http://www.onli-blogging.de/index.php?/1296/Vortrag-Wie-LoL-fuer-besseres-Spielerverhalten-sorgt.html</link>
            <category>Spiele</category>
    
    <comments>http://www.onli-blogging.de/index.php?/1296/Vortrag-Wie-LoL-fuer-besseres-Spielerverhalten-sorgt.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1296</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1296</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;p class=&quot;whiteline&quot;&gt;&lt;iframe src=&quot;http://evt.dispeak.com/ubm/gdc/sf13/player.html?xml=201303822786_1TTUWMK.xml&amp;amp;token=3c6c000ab0766078310c&quot; width=&quot;620&quot; height=&quot;424&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot;&gt;&lt;/iframe&gt;
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;a href=&quot;http://www.gamasutra.com/view/news/191262/Video_Fixing_toxic_online_behavior_in_League_of_Legends.php&quot; title=&quot;Gamasutra - News - Video: Fixing toxic online behavior in League of Legends&quot;&gt;Das Video&lt;/a&gt; des Vortrags, dessen &lt;a href=&quot;http://www.gamasutra.com/blogs/JimCummings/20130331/189629/GDC_Riot_Experimentally_Investigates_Online_Toxicity.php&quot; title=&quot;Gamasutra: Jim Cummings&#039;s Blog - GDC: Riot Experimentally Investigates Online Toxicity&quot;&gt;Zusammenschrieb&lt;/a&gt; ich bereits &lt;a href=&quot;http://www.onli-blogging.de/index.php?/1291/Jeffrey-Lin-Riot-ueber-Spielerverhalten.html&quot; title=&quot;Jeffrey Lin (Riot) über Spielerverhalten - onli blogging&quot;&gt;verlinkte&lt;/a&gt;. Jeffrey Linn erklärt die Bemühungen Riots, den negativen Einfluss von pöbelnden Spielern auf die anderen zu verringern. Ziemlich interessant, Zahlen zu den auch selbst gespürten gewaltigen Auswirkungen dieser Experimente zu sehen. &lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 27 Apr 2013 20:31:12 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1296/guid.html</guid>
    
</item>
<item>
    <title>Schweigen als Taktik</title>
    <link>http://www.onli-blogging.de/index.php?/1295/Schweigen-als-Taktik.html</link>
            <category>Spiele</category>
    
    <comments>http://www.onli-blogging.de/index.php?/1295/Schweigen-als-Taktik.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1295</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1295</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;p class=&quot;whiteline&quot;&gt;Nachtrag zu &lt;a href=&quot;http://www.onli-blogging.de/index.php?/1279/Die-Luegen-der-Spielehersteller.html&quot; title=&quot;Die Lügen der Spielehersteller - onli blogging&quot;&gt;Lügen der Spielehersteller&lt;/a&gt;: Wenn Spielehersteller mit ihren Lügen auffliegen, müssen sie ja auch damit umgehen. Rock, Paper, Shotgun zeigt in einem &lt;a href=&quot;http://www.rockpapershotgun.com/2013/04/22/the-power-of-silence-why-the-simcity-story-went-away/&quot; title=&quot;The Power Of Silence: Why The SimCity Story Went Away | Rock, Paper, Shotgun&quot;&gt;Artikel über Maxis und SimCity&lt;/a&gt;, wie die das bei ihrer Lüge über die vermeintliche Berechnung von Zeug in der Cloud und dem damit angeblich notwendigen Always-On-Modus machten:
&lt;/p&gt;&lt;blockquote&gt;&lt;p class=&quot;break&quot;&gt;EA and Maxis simply ignored all those emails. Sites may have received a, “We’re waiting for a response,” from their regional PRs, but that was it. And so if you’re running GamePow.com, and you’ve decided you can’t run RPS’s anonymously sourced story without giving EA a response, ta-da – no story on GamePow. And EA knows that.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 23 Apr 2013 14:56:25 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1295/guid.html</guid>
    
</item>
<item>
    <title>Leichte Software - Eine Definition</title>
    <link>http://www.onli-blogging.de/index.php?/1293/Leichte-Software-Eine-Definition.html</link>
            <category>HCI</category>
            <category>Linux</category>
    
    <comments>http://www.onli-blogging.de/index.php?/1293/Leichte-Software-Eine-Definition.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1293</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1293</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;p class=&quot;whiteline&quot;&gt;Martin hat in seinem Blog einen englischsprachigen Artikel &lt;a href=&quot;http://blog.martin-graesslin.com/blog/2013/04/what-makes-a-lightweight-desktop-environment-lightweight/&quot; title=&quot;What makes a &amp;#8220;lightweight&amp;#8221; desktop environment lightweight? | Martin&amp;#039;s Blog&quot;&gt;What makes a “lightweight” desktop environment lightweight?&lt;/a&gt; geschrieben. In ihm kommt er zu dem Schluss, dass das Attribut &quot;leichtgewichtig&quot; willkürlich sei und eigentlich keine Bedeutung habe.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Ich mag den Artikel. Martin tut so, als würde er den Begriff nicht verstehen, und ich glaube, dass er sich da bewusst seiner eigenen instinktiven Deutung des Begriffes widersetzt  - und er übersieht völlig die mich sehr erheiternde Ironie darin, wenn ausgerechnet ein KDE-Entwickler mit dem Bild leichter Software nichts anfangen kann (was ich tatsächlich nicht böse meine). Aber zusammen mit seinem Ausschlussverfahren, das ziemlich gut beschreibt, was leichte Software ist (nur zum gegenteiligen Schluss kommt), und den Kommentaren ergibt sich ein gutes Gesamtbild, das in meinen Augen den Begriff wirklich schön zeichnet. Ich nehme das mal und mische es hier mit meiner eigenen Definition.
&lt;/p&gt;&lt;h4&gt;1. Leichte Software ist subjektiv&lt;/h4&gt;&lt;p class=&quot;whiteline&quot;&gt;Offensichtlich geht es nicht um das Gewicht der Software und nicht um die Größe des Codes. Software mit einem Gewicht zu belegen kann angesichts ihrer inhärenten Gewichtslosigkeit nur ein emotionaler Begriff sein, der eine Brücke schlägt zu Erfahrungen im rl. Und das ist ein guter Anhaltspunkt bei der Deutung des Begriffes. Wenn etwas im echten Leben schwer ist, tragen wir schwer daran, haben Probleme, es zu bewegen, beschleunigt es nicht so schnell wie ein leichteres Objekt mit der gleichen Antriebskraft; alles geeignete Analogien zu unserer jeweiligen subjektiven Erfahrung mit Software.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Martin begab sich auf die Suche einer festen Definition von leichter Software und scheiterte daran, eine solche zu finden. Wenn Software auf der und der Hardware so und so gut läuft, dann ist die Software leichtgewichtig - das wird man seltenst irgendwo lesen. Da es ein Attribut ist, das die Bewertung des Nutzers wiedergibt, ist es für jeden Nutzer eine andere Hardware und eine andere Eigenschaft, die das Attribut rechtfertigt. Das kann der Start der Software selbst sein: Wenn eine Desktopumgebung mehrere Sekunden zum Starten braucht, fühlt sich das nicht schnell, nicht leicht an. Es kann aber auch wesentlich weiter gehen. Es kann sogar technisch versierte Nutzer geben, welche die Abhängigkeiten oder den Code selbst heranziehen - das dürfte die Ausnahme sein, soll hier aber Beispiel dafür sein, wie subjektiv die Klassifikation sein kann.
&lt;/p&gt;&lt;h4&gt;2. Leichte Software ist effizient&lt;/h4&gt;&lt;p class=&quot;break&quot;&gt;Aber es gibt durchaus offizielle Definitionen der Benutzbarkeit von Software, die mit dem Begriff leichtgewichtiger Software verknüpfbar sind. Nach ihnen hat Martin seiner Beschreibung nach nur nicht gesucht und sie auch nicht zufällig gefunden. &lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Sie verbirgt sich in &lt;strong&gt;Effektivität&lt;/strong&gt;, &lt;strong&gt;Effizenz&lt;/strong&gt; und &lt;strong&gt;Nutzerzufriedenheit&lt;/strong&gt;, dem Dreiklang der HCI nach DIN ISO 9241. &lt;/p&gt;&lt;dl&gt;&lt;dt&gt;&lt;strong&gt;Effektivität&lt;/strong&gt;:&lt;/dt&gt;
&lt;dd&gt;Die Möglichkeit, mit dem Werkzeug eine Aufgabe überhaupt zu erledigen.&lt;/dd&gt; 
&lt;dt&gt;&lt;strong&gt;Effizienz&lt;/strong&gt;:&lt;/dt&gt;
&lt;dd&gt; Wie schnell und wie einfach die Aufgabe zu erledigen ist.&lt;/dd&gt; 
&lt;dt&gt;&lt;strong&gt;Nutzerzufriedenheit&lt;/strong&gt;:&lt;/dt&gt;
&lt;dd&gt;Der Begriff erklärt sich selbst, wird von den vorherigen Faktoren beeinflusst, aber nicht alleine von ihnen bestimmt.&lt;/dd&gt;  
&lt;/dl&gt;&lt;p class=&quot;whiteline&quot;&gt;Eine Kategorisierung von Software als leicht ist nun eine Einstufung dieser Software in der zweiten Kategorie, Effizenz. Denn vergleicht man zwei verschiedene Programme und hält das eine für leichtgewichtig, das andere aber nicht, impliziert man damit meist, dass beide der gleichen Aufgabe dienen. Effektivität kann es also nicht sein. Und Zufriedenheit ist zuwenig mit der eigentlichen funktionalen Eigenschaft der Software verknüpft, um das zu beschreiben (auch wenn das sicher mit hereinspielt). Es geht also darum, wie einfach und wie schnell etwas zu machen ist. Und klar: Geht etwas mit wenigen Klicks in einer überschaubaren Oberfläche und ohne störende Ruckler, geht es in der Regel effizienter, als sei dem nicht so. Und genau das kann leichte Software sein: Solche, die nicht ruckelt und solche, die eine Aufgabe schnell und einfach erledigen lässt.
&lt;/p&gt;&lt;h4&gt;3. Was leicht ist, wird relativ zur Hardware definiert&lt;/h4&gt;&lt;p class=&quot;whiteline&quot;&gt;Wenn eine Desktopumgebung dazu führt, dass der Browser nur träge reagiert - dieser aber unter einer anderen annehmbar schnell läuft - ist sie sicher nicht leicht. Dieses Phänomen kann ich wunderbar auf &lt;a href=&quot;http://www.onli-blogging.de/index.php?/1110/Totalschaden.html#c3115&quot; title=&quot;Totalschaden - onli blogging&quot;&gt;dem Thinkpad R50&lt;/a&gt; mit Unity und E17 beobachten. Während sich unter Unity alles zäh und träge anfühlt, beim Fenstermanagement, beim Aufruf des Dashs und den Hovereffekten des Docks, aber auch beim Surfen im Browser, ist es unter E17 gut erträglich, flüssig sogar, sodass man einwandfrei mit ihm arbeiten kann (ich hatte ihn z.B. auf dem ictf dabei). Offensichtlich ist Unity derart fordernd, dass die Oberfläche langsam gerendert wird und für die eigentliche Aufgabe nicht genug Ressourcen übrig bleiben. Das Gegenteil  leichter Software.
&lt;/p&gt;&lt;h4&gt;4. Leichte Software hat keinen (wahrnehmbaren) bloat&lt;/h4&gt;&lt;p class=&quot;whiteline&quot;&gt;Aber auch, wenn die GUI der Software viele Elemente hat und überladen wirkt, kann das zu dem Nutzereindruck führen, nicht leichtgewichtig zu sein. Das war nebenbei ja schon immer eine Lektion, die KDE nicht lernen wollte. Zum einen, weil leichte Software ein emotionaler Begriff und eine Analogie ist,  zum anderen, weil es um die Effizenz beim Ausführen einer Aufgabe geht, ist es nicht alleine Geschwindigkeit der Software - eine Kerbe, in die Martin gerne schlägt, wenn er von Optimierungen für neue Hardware redet. Es geht um die Aufgabe und den Weg dahin, und eine klar steuerbare (noch so ein HCI-Begriff) GUI hilft dem Nutzer dabei, eine Aufgabe effizient zu erledigen.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Es geht hier wohlgemerkt nicht um Konfigurierbarkeit. IceWM und viele andere kleine, leichte Fenstermenager sind stärker konfigurierbar als jede Desktopumgebung. Trotzdem wirken sie leichter, schon weil sie in jeder Hinsicht schneller sind - und auch, weil ihre Konfigurationsmöglichkeiten in Textdateien versteckt sind.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Wobei sich das nicht auf GUIs beschränkt: Die Komplexität der Konfiguration und die Performance des Tools können auch bei Programmen mit Text-UI bewirken, nicht als leichtgewichtig wahrgenommen zu werden. Programmiersprachen sind gar ein völlig eigenes Kapitel.
&lt;/p&gt;&lt;h4&gt;Zusammenfassend: Leichte Software ist viel und wenig&lt;/h4&gt;&lt;p class=&quot;whiteline&quot;&gt;Viele Programme können leicht wirken und viele Faktoren wirken sich hier aus. Der Eindruck kann sich ergeben, wenn etwas besonders flüssig läuft. Eine gute Energieeffizienz kann helfen, wenn der Nutzer gerade darauf achtet, z.B. weil unter Linux im Gegensatz zu Windows der Lüfter des Laptops nur in Ausnahmefällen zu hören ist oder der Akku länger hält. Wenn Software auf vielen alten System läuft, ist sie leicht, bzw diese ist es, die  auf der alten Hardware am besten/schnellsten/flüssigsten läuft - aber nicht solche Software, die sich erstmal an einem 5-minütigen Splashfenster abrackert (übrigens ein Anti-Pattern in der Interfacegestaltung).
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Das kann man umdrehen: Wenn ein Programm eine simple, klare Oberfläche mit wenigen Elementen hat, kann dies den Eindruck leichter Software hervorrufen. Verstärkt noch, wenn der Stil der Software schlicht ist - und meinem Eindruck nach insbesondere, wenn die Oberfläche zwar schlicht, aber gleichzeitig hübsch und auch noch responsiv ist. Sind die Hardwareanforderungen gering, ist Software leicht. Erfordert die Software wenig Vorwissen, ist die Software ebenfalls leicht - auch so kann man den Begriff anwenden, wobei hier sich leicht als einfach mit leicht als leichtgewichtig vermengt
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Man kann das alles in eine vereinfachende Faustregel als Fazit zusammenpacken: Läuft Software schnell auf alter und neuer Hardware des Nutzers und hat keine Oberfläche, die eine gegenteilige Atmosphäre schafft (z.B. durch langsame Animationen oder der Komplexität des Workflows), dann wird sich beim Nutzer der Eindruck ergeben, dass die Software leichtgewichtig ist.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;  &lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 16 Apr 2013 08:03:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1293/guid.html</guid>
    
</item>
<item>
    <title>Ruby/Sinatra-Anwendung auf AppFog laufen lassen</title>
    <link>http://www.onli-blogging.de/index.php?/1292/RubySinatra-Anwendung-auf-AppFog-laufen-lassen.html</link>
            <category>Linux</category>
    
    <comments>http://www.onli-blogging.de/index.php?/1292/RubySinatra-Anwendung-auf-AppFog-laufen-lassen.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1292</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1292</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;p class=&quot;whiteline&quot;&gt;Beim letzten mal war &lt;a href=&quot;http://www.onli-blogging.de/index.php?/1289/RubySinatra-Anwendung-fuer-Heroku-anpassen.html&quot; title=&quot;Ruby/Sinatra-Anwendung für Heroku anpassen - onli blogging&quot;&gt;die versuchte Nutzung von Cloudhosting&lt;/a&gt; mit Heroku ein Reinfall. Relativ viel Arbeit für ein Scheitern an der Performance. Doch es gibt Alternativen zu Heroku, und &lt;a href=&quot;https://www.appfog.com/&quot; title=&quot;AppFog - PaaS for public and private clouds&quot;&gt;AppFog&lt;/a&gt; ist eine, die mir sehr gut gefällt.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Auch AppFog unterstützt einen kostenlosen Account, bietet aber wesentlich mehr als Heroku: 2 GB statt 512 MB Ram, 8 Instanzen statt einem Worker und 8 mögliche sogenannte Services, darunter verschiedene Datenbanken. Es gibt auch Einschränkungen, die bei Heroku nicht erwähnt werden: 5 GB Traffic im Monat und ein Maximum von 100 Requests pro Sekunde. Unterschiedlich sind die Datenbanklimits und das Accountmodell: 100 MB bei AppFog gegen 10k Reihen bei Heroku, und AppFogs Ressourcen gelten accountweit, Herokus pro Anwendung. Völlig entfällt die ziemlich kritische Beschränkung, keine Hintergrundthreads laufen lassen zu können.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Wie gesagt, ich halte das AppFog-Angebot für wesentlich besser.
&lt;/p&gt;&lt;h4&gt;Instanz einrichten&lt;/h4&gt;&lt;p class=&quot;break&quot;&gt;Doch nicht nur das Hosting selbst ist besser, auch die &lt;a href=&quot;https://docs.appfog.com/&quot; title=&quot;AppFog Documentation&quot;&gt;Dokumentation&lt;/a&gt; drumrum gefiel mir besser. Sie ist auch schnell zusammengefasst. Statt direkt mit git wird mit einem Tool namens af gearbeitet:&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;gem install af
af login&lt;/pre&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Vom Kontrollzentrum kann die Beispielanwendung als .zip heruntergeladen werden. Mit ihr wird auch schnell klar, was sonst noch zu tun ist. Wieder muss eine &lt;strong&gt;Gemfile&lt;/strong&gt; angelegt werden. Meine:&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;source :rubygems

gem &quot;sinatra&quot;
gem &quot;thin&quot;
gem &#039;pg&#039;
gem &#039;json&#039;
gem &#039;nokogiri&#039;
gem &#039;rest-client&#039;
gem &#039;haml&lt;/pre&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Ein &lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;bundle install&lt;/pre&gt;&lt;p class=&quot;break&quot;&gt;später kann die Anwendung per &lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;af update APPFOG-SERVERNAME&lt;/pre&gt;&lt;p class=&quot;whiteline&quot;&gt;hochgeladen werden. Die app.rb kann mit jeder anderen Datei ersetzt werden, welche Datei ausgeführt werden muss, wird durch das &lt;code&gt;require &#039;sinatra&#039;&lt;/code&gt; erkannt - sehr nett!
&lt;/p&gt;&lt;h4&gt;Datenbank aktivieren&lt;/h4&gt;&lt;p class=&quot;break&quot;&gt;Da &lt;a href=&quot;http://rsspusher.eu01.aws.af.cm/&quot; title=&quot;rsspusher - push feed-updates to you&quot;&gt;die Anwendung&lt;/a&gt; vom letzten mal schon für PostgresSQL angepasst war, blieb das natürlich als Datenbank gesetzt. Die Datenbank kann im Kontrollzentrum als Service aktiviert und dort benannt werden. Dann werden die Einloggdaten als Umgebungsvariable der Anwendung gegeben, und diesmal gibt es tatsächlich ordentlichen Beispielcode (mit dem kleinen Fehler, dass dort im Original :username statt :user steht):&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;services = JSON.parse(ENV[&#039;VCAP_SERVICES&#039;])
postgresql_key = services.keys.select { |svc| svc =~ /postgresql/i }.first
postgresql = services[postgresql_key].first[&#039;credentials&#039;]
postgresql_conn = {:host =&gt; postgresql[&#039;hostname&#039;], :port =&gt; postgresql[&#039;port&#039;], :user =&gt; postgresql[&#039;user&#039;], :password =&gt; postgresql[&#039;password&#039;], :dbname =&gt; postgresql[&#039;name&#039;]}
@db = PG.connect(postgresql_conn)&lt;/pre&gt;&lt;p class=&quot;whiteline&quot;&gt;Ansonsten gelten natürlich die gleichen &lt;a href=&quot;http://www.onli-blogging.de/index.php?/1289/RubySinatra-Anwendung-fuer-Heroku-anpassen.html&quot; title=&quot;Ruby/Sinatra-Anwendung für Heroku anpassen - onli blogging&quot;&gt;Hinweise&lt;/a&gt; wie bei Heroku, wenn von sqlite aus umgestellt werden muss.
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Gut funktionierte bei Heroku der Zugriff auf die Datenbank von außen. Auch bei AppFog ist das gut gelöst, wobei ich die Lösung erst finden musste. Das Stichwort ist &lt;a href=&quot;https://docs.appfog.com/services/tunneling&quot; title=&quot;Tunneling - AppFog Documentation&quot;&gt;Tunnelling&lt;/a&gt;: &lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;gem install caldecott
af services
af tunnel DATENBANKNAME&lt;/pre&gt;&lt;p&gt;
&lt;/p&gt;&lt;h4&gt;Fazit&lt;/h4&gt;&lt;p class=&quot;break&quot;&gt;AppFog hatte natürlich den Vorteil, dass durch den vorherigen Versuch mit Heroku mir ziemlich klar war, wie das alles funktionieren müsste - reduzierte Verwirrung führt schnell zu einem besseren Eindruck. Aber auch ohne diesen Vorteil ist AppFog meiner Meinung nach klar die bessere Wahl: &lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Wesentlich umfangreicheres kostenloses Angebot...&lt;/li&gt;
&lt;li&gt;...mit tatsächlich deutlich besserer Performance.&lt;/li&gt;
&lt;li&gt;Klarer strukturierte Dokumentation, inklusive Beispielcode für die Datenbankanbindung (wie kann sowas fehlen?).&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Aber der wichtigste Vorteil von AppFog ist, dass meine Anwendung hier funktionierte und auf Heroku nicht. Und das lag höchstwahrscheinlich am Serverstack und damit an Heroku, nicht an der Anwendung selbst (wie erwähnt konnte ich Herokus Analysetool nicht testen). &lt;a href=&quot;http://rsspusher.eu01.aws.af.cm/&quot; title=&quot;rsspusher - push feed-updates to you&quot;&gt;Rsspusher&lt;/a&gt; trägt sich bei verschiedenen PuSH- bzw rssCloud-Hubs als Abonnent ein, und dieses Eintragen muss bei beiden Protokollen jedes mal bestätigt werden, indem von dem Hub ein GET an rsspusher geschickt wird, wobei die so gesendete Challenge zurückgegeben werden muss. Das war auf dem Entwicklungsrechner kein Problem, das war auf AppFog kein Problem, aber unter Heroku lief das jedes mal in ein das Zeitlmit von 2 bzw 3 Sekunden, weil die Anfrage laut Log im Heroku-Stack alleine solange hängen blieb. Ich weiß nicht, ob das an dem einzelnen Worker hing (eigentlich ist das kein Grund, ein Worker kann mehrere Anfragen parallel bearbeiten), aber das war definitiv kein guter Eindruck.  &lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 13 Apr 2013 08:13:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1292/guid.html</guid>
    
</item>
<item>
    <title>Jeffrey Lin (Riot) über Spielerverhalten</title>
    <link>http://www.onli-blogging.de/index.php?/1291/Jeffrey-Lin-Riot-ueber-Spielerverhalten.html</link>
            <category>Spiele</category>
    
    <comments>http://www.onli-blogging.de/index.php?/1291/Jeffrey-Lin-Riot-ueber-Spielerverhalten.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1291</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1291</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;blockquote&gt;&lt;p class=&quot;break&quot;&gt;Lin briefly shared, for the first time, just a few of the results from the Optimus study.  One interesting finding was that showing a red message about negative behavior during the loading screen lead to a much larger decrease in toxic behaviors (in terms of attitude displays, abuse, and offensive language) than did the exact same message in a white font.  Additionally, showing a blue message about positive, cooperative behavior during the loading screen also lead to a decrease in a negative behavior, while no effect was observed for the same message in white.  And, interestingly, when the question “Who will be the most sportsmanlike?” (a positive behavior message) was presented in red, the toxic behavior metrics actually all increased.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;whiteline&quot;&gt;Eine &lt;a href=&quot;http://www.gamasutra.com/blogs/JimCummings/20130331/189629/GDC_Riot_Experimentally_Investigates_Online_Toxicity.php&quot; title=&quot;Gamasutra: Jim Cummings&#039;s Blog - GDC: Riot Experimentally Investigates Online Toxicity&quot;&gt;gute Zusammenfassung samt weiterführenden Informationen&lt;/a&gt; über Riots Bemühungen, bei League of Legends das Spielerverhalten in positive Bahnen zu lenken. Besonders seit dem Honor-System (man kann Spieler nach dem Spiel für gutes Verhalten Auszeichnungen geben) fühlt sich das Spiel größtenteils wesentlich angenehmer an. 
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Auf den Gedanken, dass hinter den Farben der Ladebildschirmmeldungen experimentelle Ergebnisse stecken könnten, bin ich allerdings bisher nicht gekommen.  &lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 10 Apr 2013 14:33:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1291/guid.html</guid>
    
</item>
<item>
    <title>Rsspusher</title>
    <link>http://www.onli-blogging.de/index.php?/1290/Rsspusher.html</link>
    
    <comments>http://www.onli-blogging.de/index.php?/1290/Rsspusher.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1290</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1290</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;p class=&quot;break&quot;&gt;&lt;a href=&quot;https://github.com/onli/rsspusher&quot; title=&quot;onli/rsspusher · GitHub&quot;&gt;Rsspusher&lt;/a&gt; ist für mich etwas in letzter Zeit ungewöhnliches: Ein Projekt ohne GUI, mehr ein Service als eine Webseite oder ein Programm. Schickt man ein json-Objekt mit der URL einer oder mehreren Webseiten und eine Callback-URL, wird rsspusher neue Einträge auf den ersten URLs an den Callback schicken, falls diese einen RSS-Feed haben (oder einer sind). &lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Besser erklärt ist das auf der wunderschön gestalteten &lt;a href=&quot;http://rsspusher.eu01.aws.af.cm/&quot; title=&quot;rsspusher - push feed-updates to you&quot;&gt;Demoseite&lt;/a&gt;.
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Zwei verschiedene Motivationen führten dazu, dass ich dieses Tool baute. &lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Zum einen funktioniert der Bau des Freundes-Aktivitätenstreams im &lt;a href=&quot;https://github.com/onli/dsnblog&quot; title=&quot;onli/dsnblog · GitHub&quot;&gt;dsnblog&lt;/a&gt; derzeit, indem der eine Blog den Feed des anderen zieht. Doch wie soll ein Blog mitkriegen, dass der andere neue Artikel hat? Ich wollte keinen Code schreiben, der alle paar Minuten den Feed zieht und auf neue Einträge prüft, weshalb ich anfing, &lt;a href=&quot;https://code.google.com/p/pubsubhubbub/&quot; title=&quot; pubsubhubbub -   A simple, open, web-hook-based pubsub protocol &amp;amp; open source reference implementation. - Google Project Hosting &quot;&gt;pubsubhubbub&lt;/a&gt; zu implementieren. Der Code wird viel schöner, wenn der eine dsnblog jedes mal per POST benachrichtigt wird, wenn der andere einen neuen Eintrag schreibt. Und eigentlich sollte das mit jedem beliebigen Feed funktionieren, selbst wenn sie wie auch immer funktionierenden keinen Hub angeben und anpingen. Eigentlich sollte man sich in diesem Projekt gar nicht darum kümmern müssen, wie man an die Information kommt, dass es ein Update gab - und genau diese Auslagerung, das ist rsspusher.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Zum anderen wird Google Reader ja bald abgeschaltet, weshalb auf dem eigenen Server laufende RSS-Reader mehr Aufmerksamkeit bekommen und sicher auch einige neue gebaut werden. Baut man so etwas selbst, ist die Polling-Infrastruktur zum Holen der Feeds - und das Verwalten von pubsubhubbub- und rsscloud-Abonnements - ein nicht kleiner Teil der Aufgabe. Vielleicht hilft es jemanden, wenn rsspusher das übernimmt oder kann zumindest etwas Hilfe aus dem Code ziehen.
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Im Grunde ziemlich ähnlich zu &lt;a href=&quot;http://superfeedr.com/&quot; title=&quot;Real-time cloud feed parsing - PubSubHubbub, XMPP&quot;&gt;superfeedr&lt;/a&gt;, nur frei und selbsthostbar und nicht ansatzweise so ausgereift. Ich hatte Spaß, das zu bauen, und nebenbei rausbekommen, &lt;a href=&quot;http://board.s9y.org/viewtopic.php?p=10434268#p10434268&quot; title=&quot;    s9y: pubsubhubbub (Development) &amp;bull; Serendipity PHP Blog    &quot;&gt;warum&lt;/a&gt; das pubsubhubbub-Plugin für Serendipity wahrscheinlich nicht funktionierte. Netter Bonus: Samstag nachmittag habe ich es als &lt;a href=&quot;https://news.ycombinator.com/item?id=5503549&quot; title=&quot;Show HN: Free Push Infrastructure for RSS Reader | Hacker News&quot;&gt;Submission&lt;/a&gt; bei Hackernews eingereicht und als ich nachts wiederkam, war es auf der Frontpage (unten, und bis ich meinen Kommentar fertig geschrieben hatte, war es auf Seite 2 und der Kommentar blieb daher unbeachtet, aber trotzdem toll). Gehörte zu den Dingen, die ich mal hinbekommen haben wollte. &lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 08 Apr 2013 08:26:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1290/guid.html</guid>
    <category>projekt</category>
<category>rsspusher</category>

</item>
<item>
    <title>Ruby/Sinatra-Anwendung für Heroku anpassen</title>
    <link>http://www.onli-blogging.de/index.php?/1289/RubySinatra-Anwendung-fuer-Heroku-anpassen.html</link>
            <category>Code</category>
            <category>Linux</category>
    
    <comments>http://www.onli-blogging.de/index.php?/1289/RubySinatra-Anwendung-fuer-Heroku-anpassen.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1289</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1289</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;p class=&quot;whiteline&quot;&gt;Heroku ist eine Cloud-Plattform und war eine ganze Weile die einzige mir bekannte Plattform mit einem kostenlosen Tarif (ohne behaupten zu wollen, dass es damals nichts anderes gab). Da mir Ruby und besonders Sinatra sehr gut gefällt und Heroku für Ruby eine Weile der Cloudhoster-Vorzeigekandidat war, wollte ich schon vor einiger Zeit &lt;a href=&quot;http://www.pc-kombo.de/&quot; title=&quot;Beste Kombination von Prozessor und Grafikkarte - PC-Kombo.de&quot;&gt;eine Anwendung&lt;/a&gt; von mir dort laufen lassen. Damals scheiterte ich - das ganze Ruby-Universum war mir noch zu neu - aber inzwischen habe ich ein anderes Projekt erfolgreich portiert. Man muss allerdings einiges beachten, was genau halte ich hier mal fest.
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Alles hier gilt für Ubuntu 12.04.
&lt;/p&gt;&lt;h4&gt;Heroku einrichten&lt;/h4&gt;&lt;p class=&quot;whiteline&quot;&gt;Herokus Seite ist der einfache Part. Auf &lt;a href=&quot;https://www.heroku.com/&quot; title=&quot;Heroku | Cloud Application Platform&quot;&gt;https://www.heroku.com/&lt;/a&gt; einen Account anlegen und der &lt;a href=&quot;https://devcenter.heroku.com/articles/quickstart&quot; title=&quot;Getting Started with Heroku | Heroku Dev Center&quot;&gt;Anleitung&lt;/a&gt; folgen:
&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh    # Heroku-Tools installieren
heroku login    # einloggen und public ssh-keys hochladen&lt;/pre&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Nun der rubyspezifische Teil (&lt;a href=&quot;https://devcenter.heroku.com/articles/ruby&quot; title=&quot;Getting Started with Ruby on Heroku | Heroku Dev Center&quot;&gt;diese Anleitung&lt;/a&gt;). Für die Verwaltung der gems muss eine Datei &lt;strong&gt;Gemfile&lt;/strong&gt; im Anwendungsverzechnis angelegt werden. Der Inhalt:&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;source :rubygems
gem &#039;sinatra&#039;
gem &#039;pg&#039;
# die weiteren genutzten gems
&lt;/pre&gt;&lt;p class=&quot;break&quot;&gt;Wer aus der Rails-Welt kommt, kennt das wohl. Die Datei dann auch nutzen:&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;bundle install&lt;/pre&gt;&lt;p class=&quot;break&quot;&gt;Außerdem fehlt noch die &lt;strong&gt;config.ru&lt;/strong&gt; mit diesem Inhalt:&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;web: bundle exec rackup config.ru -p $PORT&lt;/pre&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Damit sind die benötigten Dateien zusammen. Dies alles nun in git festhalten und heruko übergeben:&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;git init
git add .
git commit -m &quot;init&quot;
heroku create
git push heroku master&lt;/pre&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Um später Updates an heroku zu sende, diesen Schritt ohne &lt;code&gt;git init&lt;/code&gt; und &lt;code&gt;heroku create&lt;/code&gt; ausführen

&lt;/p&gt;&lt;h4&gt;Postgresql installieren&lt;/h4&gt;&lt;p class=&quot;whiteline&quot;&gt;Leider kann heroku nicht die von mir bevorzugte SQL-Datenbank nutzen, sqlite. Stattdessen muss man Postgresql nutzen, was mir eigentlich gar nicht passte - mir sind die nicht-dateibasierten Datenbank zu konfigurationslastig. So ist auch postgresql etwas knifflig einzurichten. Immerhin sollte der Wechsel der Performance der Anwendung gut tun.
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Auf Heroku ist die postgresql-Datenbank schnell aktiviert:&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;heroku addons:add heroku-postgresql:dev&lt;/pre&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Um aber den Code weiter lokal testen zu können und den Datenbank-Remotezugriff nutzen zu können, muss Postgresql auch lokal installiert werden. Dafür installiert man das Paket &lt;strong&gt;postgresql&lt;/strong&gt;. Die Datenbank muss aber noch konfiguriert werden. Am einfachsten ist &lt;a href=&quot;https://help.ubuntu.com/community/PostgreSQL#Alternative_Server_Setup&quot; title=&quot;PostgreSQL - Community Ubuntu Documentation&quot;&gt;dieser Weg&lt;/a&gt;:
&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;sudo -u postgres createuser --superuser $USER
sudo -u postgres psql
postgres=# \password $USERNAME    # des Hauptnutzers, unter dem entwickelt wird
postgres=# \q
createdb $USER    &lt;/pre&gt;&lt;p class=&quot;whiteline&quot;&gt;Hier wird eine Datenbank so eingerichtet, dass der Hauptnutzer sich mit einem &lt;strong&gt;psql&lt;/strong&gt; in die Datenbank einwählen kann.
&lt;/p&gt;&lt;h4&gt;Datenbankcode für Postgresql anpassen&lt;/h4&gt;&lt;p class=&quot;whiteline&quot;&gt;Nun muss noch der Code angepasst werden. Wer hier ein ORM nutzt, findet dafür in der Doku Code. Wer wie ich direkt mit SQL-Statements arbeiten will, der hat es etwas schwerer. Funktionierenden Beispielcode fand ich gar nicht.
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Zuerst braucht man den Datenbankpfad. Ein &lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;heroku config | grep HEROKU_POSTGRESQL&lt;/pre&gt;&lt;p class=&quot;whiteline&quot;&gt;sollte einen String der Form &lt;code&gt;postgres://USERNAME:PASSWORD@ec2-107-...-213.compute-1.amazonaws.com:5432/d9...rnr&lt;/code&gt; zurückgeben. Diesem können nun die Datenbankdaten entnommen werden.
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Im Ganzen: Ich habe eine database.rb, vorher ein Wrapper für sqlite. Vorher:&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;class Database
    def initialize()
        begin
            @@db    # create a singleton - if this class-variable is uninitialized, this will fail and can then be initialized
        rescue
            @@db = SQLite3::Database.new &quot;rssnotifier.db&quot;

            begin
                puts &quot;creating Database&quot;
                @@db.execute &quot;CREATE TABLE IF NOT EXISTS watches(
                     ...
       
                @@db.execute &quot;PRAGMA foreign_keys = ON;&quot;
                @@db.results_as_hash = true
            rescue =&gt; error
                puts &quot;error creating tables: #{error}&quot;
            end
        end
    end

def getPages(subscribed)
        begin
            pages = []
            @@db.execute(&#039;SELECT DISTINCT url FROM watches WHERE subscribed = ?&#039;, subscribed ? 1 : 0) do |row|
                pages.push(Page.new(row[&quot;url&quot;]))
            end
            return pages
        rescue =&gt; error
            puts &quot;error getting pages: #{error}&quot;
        end
    end

    ...
&lt;/pre&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Umgestellt auf postgresql:&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;class Database
    def initialize()
         db = URI.parse(ENV[&#039;DATABASE_URL&#039;] || &#039;postgres://USERNAME:PASSWORD@ec2-107-...-213.compute-1.amazonaws.com:5432/d9...rnr&#039;)
         @db = PG::Connection.open(:dbname =&gt; db.path[1..-1], :user =&gt; db.user, :password =&gt; db.password, :port =&gt; db.port, :host =&gt; db.host, :sslmode =&gt; &#039;require&#039;)
         #@db = PG::Connection.open(:dbname =&gt; &#039;onli&#039;, :user =&gt; &#039;onli&#039;, :port =&gt; 5433)     # lokaler Zugriff

         begin
              puts &quot;creating Database&quot;
              @db.exec &quot;CREATE TABLE IF NOT EXISTS watches(
                                ....
         rescue =&gt; error
                puts &quot;error creating tables: #{error}&quot;
         end
    end

def getPages(subscribed)
        begin
            pages = []
            @db.exec(&#039;SELECT DISTINCT url FROM watches WHERE subscribed = $1&#039;, [subscribed] ? [1] : [0]) do |results|
                results.each do |row|
                    pages.push(Page.new(row[&quot;url&quot;]))
                end
            end
            return pages
        rescue =&gt; error
            puts &quot;error getting pages: #{error}&quot;
        end
    end

    ...&lt;/pre&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Eine Liste der Änderungen:&lt;/p&gt;&lt;ol&gt;
  &lt;li&gt;Kein Singleton für die Verbindung nutzen! Das führte zu ziemlich widerlichen SSL-Fehlern und es dauerte ewig, bis ich darauf kam, dass es daran lag (übrigens kein Heroku-spezifischer Bug).&lt;/li&gt;
  &lt;li&gt;Die Datenbankkonfiguration wird aus der Datenbankurl geparst (abgeleitet aus der &lt;a href=&quot;https://devcenter.heroku.com/articles/rack#using-activerecord&quot; title=&quot;Deploying Rack-based Apps | Heroku Dev Center&quot;&gt;Doku&lt;/a&gt;). Da habe ich mir Beispielcode (ohne ActiveRecord) in der Doku und einen schöneren Weg, ohne Parsen des Datenbankpfades, erhofft.&lt;/li&gt;
  &lt;li&gt;exec ersetzt execute.&lt;/li&gt;
  &lt;li&gt;Man beachte den zusätzlichen |results|-Zwischenschritt.&lt;/li&gt;
  &lt;li&gt;(Nicht im Code) Postgresql beherrscht kein INSERT OR REPLACE. Stattdessen erst ein UPDATE, dann ein INSERT ausführen.&lt;/li&gt;
  &lt;li&gt;Die Parameterersetzung hat eine andere Syntax: $X statt ? und Übergabe eines einzelnen Arrays statt der einzelnen Argumente.&lt;/li&gt;
   &lt;li&gt;Den Code zum Zugriff auf die lokale Datenbank habe ich der Einfachheit halber hier festgehalten (den muss man nämlich auch erstmal finden). Man beachte den Port, der nicht der Standardport ist!&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Die Anpassungen an den SQL-Queries selbst ist nicht zu schlimm, größtenteils scheint sqlite3 eine Submenge von postgresql zu sein. Bei den Datumsfunktionen bin ich dagegen direkt auf Rubycode umgestiegen.
&lt;/p&gt;&lt;h4&gt;Lohnt das?&lt;/h4&gt;&lt;p class=&quot;break&quot;&gt;Durchaus ein Haufen Aufwand, vor allem ohne diese Anleitung. Für meine Anwendung hat sich das ganze nichtmal gelohnt, heroku war schlicht zu langsam und die mit meiner Anwendung kommunizierenden Dienste liefen immer(!) in Timeouts. Wenn der freie Plan nichtmal zum Testen ohne jegliche Last reicht, ist das kein gutes Zeichen. Um festzustellen, an welcher Stelle die Anwendung hakt, bietet heroku mit &lt;strong&gt;New Relic&lt;/strong&gt; die laut Liste nötigen Daten, ebenfalls mit einem kostenlosen Tarif - aber um den zu aktivieren, wird trotzdem eine Kreditkarte gefordert. Die ich weder besitze noch zu diesem Zeitpunkt angeben wollen würde.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Und so reizvoll die Skalierbarkeit solch einer Cloudplattform auch ist: Die Preise sind heftig. Ein eigener Server hat da echte Vorteile. &lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 06 Apr 2013 08:58:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1289/guid.html</guid>
    
</item>
<item>
    <title>Riots LoL-Nachfolger</title>
    <link>http://www.onli-blogging.de/index.php?/1288/Riots-LoL-Nachfolger.html</link>
            <category>Spiele</category>
    
    <comments>http://www.onli-blogging.de/index.php?/1288/Riots-LoL-Nachfolger.html#comments</comments>
    <wfw:comment>http://www.onli-blogging.de/wfwcomment.php?cid=1288</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.onli-blogging.de/rss.php?version=2.0&amp;type=comments&amp;cid=1288</wfw:commentRss>
    

    <author>nospam@example.com (onli)</author>
    <content:encoded>
    &lt;p class=&quot;whiteline&quot;&gt;Auf &lt;a href=&quot;http://www.chewgame.com/en/chew/&quot; title=&quot;CHEW - Cho&#039;gath Eats the World&quot;&gt;chewgame&lt;/a&gt; findet sich Riots Aprilscherz. Ziemlich großartig gemachtes 8-Bit-artiges Flashgame, eigentlich sogar zwei (wenn man mit Gentleman-Chogath den Regenbogen aufisst).
&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;a href=&quot;https://picasaweb.google.com/lh/photo/IE570H3fW7SJ3UPXCeLxf9MTjNZETYmyPJy0liipFm0?feat=embedwebsite&quot; title=&quot;Picasa Web Albums - onli onli&quot;&gt;&lt;img src=&quot;https://lh6.googleusercontent.com/-YNFZrp1-G2Q/UVnH6O4ERNI/AAAAAAAAChg/VhRIfDpdT78/s800/chew2.jpg&quot; height=&quot;690&quot; width=&quot;798&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;a href=&quot;https://picasaweb.google.com/lh/photo/DlAKHNQLRKScrpL3VXVoGtMTjNZETYmyPJy0liipFm0?feat=embedwebsite&quot; title=&quot;Picasa Web Albums - onli onli&quot;&gt;&lt;img src=&quot;https://lh5.googleusercontent.com/-2uyXYsp2avA/UVm2t7nszKI/AAAAAAAAChA/OdMn6G0e_ro/s800/chew.jpg&quot; height=&quot;690&quot; width=&quot;800&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 01 Apr 2013 18:28:21 +0200</pubDate>
    <guid isPermaLink="false">http://www.onli-blogging.de/index.php?/1288/guid.html</guid>
    
</item>

</channel>
</rss>
