<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>Scratchbook &#187; Webentwicklung</title> <atom:link href="http://scratchbook.ch/category/php/feed/" rel="self" type="application/rss+xml" /><link>http://scratchbook.ch</link> <description>Das Leben ist immer anders als die Realität.</description> <lastBuildDate>Fri, 25 May 2012 06:55:16 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>My Little Pony</title><link>http://scratchbook.ch/2012/05/03/my-little-pony/</link> <comments>http://scratchbook.ch/2012/05/03/my-little-pony/#comments</comments> <pubDate>Thu, 03 May 2012 17:37:56 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Humor]]></category> <category><![CDATA[Magie & Mystik]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=11693</guid> <description><![CDATA[*glitzer* *wirbel* *wieher* &#8211;> Intro Twilight Sparkle hat von Prinzessin Celestia den Auftrag, in Equestria die Freundschaft zu studieren. Äußerliche Erkennungsmerkmale sind ihr lila Fell, ihre blaue Mähne mit pinken und violetten Strähnen und ihr magisches Horn auf der Stirn. Was für ein sympathischer Haufen Ponies! Jedes mit seiner Charaktereigenschaft und seinem («cutie mark»); ein [...]]]></description> <content:encoded><![CDATA[<p><img src="http://scratchbook.ch/wp-content/uploads/2012/05/830px-Rainbow_Dash_Wonderbolt_fantasy_S1E3-618x347.png" alt="" title="Rainbow Dash Wonderbolt fantasy" width="618" height="347" class="alignnone size-large wp-image-11694" /></p><h2>*glitzer* *wirbel* *wieher* &#8211;> <a href="http://www.youtube.com/watch?v=8xtle0njT8M">Intro</a></h2><p><em>Twilight Sparkle</em> hat von Prinzessin Celestia den Auftrag, in <em>Equestria</em> die <em>Freundschaft</em> zu studieren. Äußerliche Erkennungsmerkmale sind ihr lila Fell, ihre blaue Mähne mit pinken und violetten Strähnen und ihr magisches Horn auf der Stirn.</p><p>Was für ein sympathischer Haufen Ponies! Jedes mit seiner Charaktereigenschaft und seinem («cutie mark»); ein Symbol, welches oberhalb des Hüftgelenks erscheint, sobald das Pony seine individuelle Gabe in sich entdeckt hat.</p><p>Das Ding ganz oben ist <em>Rainbow Dash</em>. Sie ist ein Pegasus-Pony und hat die Aufgabe, den Himmel von Wolken freizuhalten, sofern dies erwünscht ist. Dabei probiert sie immer wieder neue Flugmanöver aus, denn sie möchte einmal der berühmten Fliegertruppe „Wonderbolts“ beitreten. Von den sechs Elementen der Harmonie verkörpert sie die <em>Treue</em>.</p><p>Oder das schüüche <em>Fluttershy</em>:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2012/05/Fluttershy.png" alt="" title="Fluttershy" width="210" height="151" class="alignnone size-full wp-image-11702" /></p><p>Sie ist bekannt für ihre Schüchternheit und Tierliebe. Sie kümmert sich um die Tiere in Ponyville, vor allem um ihr Häschen <em>Angel</em>. Ihr Element der Harmonie ist die <em>Freundlichkeit</em>.</p><p>Aja. Die Elemente der Harmonie:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2012/05/830px-ElementsOfHarmony1-300x168.png" alt="" title="" width="300" height="168" class="alignnone size-medium wp-image-11703" /></p><p>Die Elemente der Harmonie sind magische Artefakte; von denen <em>Twilight Sparkle</em> und ihre Freunde je eines repräsentieren. Die Elemente der Harmonie sind Ehrlichkeit, Lachen, Treue, Freundlichkeit und Grosszügigkeit. Das sechste Element, das der Magie, wird aktiviert, wenn alle anderen zusammenkommen. Sprich, wenn wir alle Ponies versammelt haben, dann kommt die Magie zum Vorschein: Die Freundschaft.</p><p><a href="http://de.wikipedia.org/wiki/My_Little_Pony:_Freundschaft_ist_Magie">Wikipedia: My Little Pony: Freundschaft ist Magie</a></p><p>Das Zielpublikum der Serie sind junge Mädchen. Die meisten Fans sind Männer über 20. <img src='http://scratchbook.ch/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Oops.</p><p>Es geht um Persönlichkeitsentwicklung. Die eigene Gabe erkennen. Es geht um Individualität. Es geht um <a href="http://mlp.wikia.com/wiki/List_of_ponies">Vielfalt</a>. Es geht um Freundschaft. Es geht um Magie.<br /> Was für ein Zauber!</p><blockquote><p>Die Uralt-Serie &#8220;My little Pony&#8221; ist ein Stück Internet-Kultur. Und wie so viel Internet-Kultur begann alles bei 4chan, einer anarchischen Webseite, wo jeder Bilder posten kann, anonym und unkontrolliert. Irgendwann tauchten die pastellfarbenen Ponys auf, wurden kommentiert, montiert und mutierten zu Ikonen der Netzkultur:</p><p>&#8220;Dadurch, dass sie Freundschaft schließen und zusammen denken können, lösen sie ihre Probleme. Und das ist es, was eigentlich das Netz auch ausmacht. Verschiedenste Charaktere denken zusammen und lösen sie. Und das ist eigentlich das gleiche &#8211; nur abgebildet auf Ponys.&#8221;</p></blockquote><p>Sympathisch. Ich konnte mich sowieso noch nie mit den Erwachsenen anfreunden.</p><p>Darauf gestossen bin ich über <a href="http://chaosradio.ccc.de/cr178.html">diesen</a> Chaosradio Podcast über <em>Freundschaft, Ponies und Cumberbitches</em>.</p><h2>Und zum Schluss noch dies…</h2><blockquote><p>&#8220;My Little Pony&#8221; ist eine bald 30 Jahre alte Zeichentrickserie über die Freundschaften einer Handvoll Ponys. Bei den Piraten im Berliner Landtag hat sie es in die Geschäftsordnung geschafft: Jeder Pirat kann, etwa in einer hitzigen Diskussion, beantragen, eine Folge der Kinderserie zu schauen, um die Gemüter zu beruhigen.</p><p>Ein Beamer projiziert das YouTube-Video an die Wand. 15 Berliner Landtagsabgeordnete unterbrechen ihre Fraktionssitzung, um sich eine Kinder-Fernsehsendung anzuschauen &#8211; 20 Minuten lang. (<a href="http://www.dradio.de/dlf/sendungen/dlfmagazin/1630017/">Quelle</a>)</p></blockquote><p><a href='http://scratchbook.ch/wp-content/uploads/2012/05/Piratenpartei-Ponytime.mp3'>Piratenpartei &#8211; Ponytime</a></p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2012/05/03/my-little-pony/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Euer Internet ist nur geborgt!</title><link>http://scratchbook.ch/2012/04/17/euer-internet-ist-nur-geborgt/</link> <comments>http://scratchbook.ch/2012/04/17/euer-internet-ist-nur-geborgt/#comments</comments> <pubDate>Tue, 17 Apr 2012 15:06:31 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Pfeifferisches Menschenfieber]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=11659</guid> <description><![CDATA[Wer Facebook, Twitter oder andere soziale Netzwerke nutzt, ist im Netz nicht wirklich frei. All diese Dienste können von den Betreibern jederzeit verändert, verkauft, zensiert, geschlossen werden. Wer wirklich frei im Internet veröffentlichen will, braucht eine eigene Website. Ende Februar 2012 versucht ein Mitarbeiter von muenchen.de, dem offiziellen Portal der Stadt München, die eigene Facebook-Seite [...]]]></description> <content:encoded><![CDATA[<p><strong>Wer Facebook, Twitter oder andere soziale Netzwerke nutzt, ist im Netz nicht wirklich frei. All diese Dienste können von den Betreibern jederzeit verändert, verkauft, zensiert, geschlossen werden. Wer wirklich frei im Internet veröffentlichen will, braucht eine eigene Website.</strong></p><p><span id="more-11659"></span>Ende Februar 2012 versucht ein Mitarbeiter von muenchen.de, dem offiziellen Portal der Stadt München, die eigene Facebook-Seite zu erreichen, die bis dahin unter facebook.com/muenchen zu finden war. Erfolglos. Die Seite war <a href="http://www.muenchen.de/meta/presse/facebook.html">ohne Vorwarnung gesperrt worden</a>. Die fast 400.000 Fans der Seite &#8211; mit einem Mal so unerreichbar wie das Internet im ICE zwischen Hamburg und Berlin.</p><p>Facebook hatte sich entschieden, Städte selbst zu vermarkten. Aber leider vergessen, das den Städten mitzuteilen.<br /> Rückschwenk in den Januar 2012: Google stellt die twitterähnliche Plattform Jaiku ein, die damit dem Schicksal vieler anderer Google-Dienste folgt: Google Labs, Google Buzz, Google Health, Google Wave. Selbst die &#8220;Social Search&#8221;-Plattform Aardvark wurde geschlossen, obwohl sie einen famosen Rekord des 21. Jahrhunderts hielt: Google bezahlte für 90.000 aktive Nutzer 50 Millionen Dollar. Aardvark liegt damit in der ewigen Rangliste der teuersten Netzunternehmen mit 555 Dollar je Nutzer an dritter Stelle. Die beiden ersten Ränge belegt natürlich konkurrenzlos Jerry Yangs Beerdigungsinstitut für Start Ups: an Platz zwei Geocities für 830 Dollar je Nutzer. Und uneinholbar im ewigen New-Economy-Himmel Broadcast.com mit sagenhaften 10.961 Dollar je aktivem Nutzer, beide 1999 für Milliardenbeträge gekauft von Yahoo. Selbstredend sind auch diese beiden Dienste inzwischen geschlossen.</p><p>Sprung in den März 2012, in dem ein vielgenutztes Start-Up namens Posterous in seinem Blog glücklich verkündet, von Twitter gekauft worden zu sein. Die Gründer erklären, dass ihr Service weiterbestehen wird. Wenn aber wider Erwarten doch nicht &#8211; man kann ja nie wissen! &#8211; würde man zumindest &#8220;ausreichend lange vorher&#8221; Bescheid sagen. Aber trotzdem jetzt schon mal geeignete Instrumente für den Download der Inhalte bereitstellen. Also nur für den Fall. Den rein hypothetischen.</p><p><strong>Monetenhafter Aufstieg</strong></p><p>Obwohl diese drei Ereignisse der sozialen Medienlandschaft aus den ersten drei Monaten des Jahres 2012 scheinbar wenig miteinander zu tun haben, hängen sie damoklesschwer über den anderthalb Milliarden Social-Media-Nutzern der Welt. Denn ihr Internet ist nur geborgt. Wenn aus irgendeinem Grund, der selbst Franz Kafka als unverhältnismäßig kafkaesk erschienen wäre, der eigene Account gesperrt würde &#8211; man stünde einer undurchdringlichen Wand aus Allgemeinen Geschäftsbedingungen gegenüber, verputzt mit Kontaktformularen und einem englischsprachigen Help-Forum, wo nur noch Nutzer Nutzern nutzen.</p><p>Eigentlich ist es eine Banalität und sollte gar nicht mehr erwähnt werden müssen: Daten auf sozialen Netzwerken müssen unter allen Umständen so behandelt werden, als könnten sie jederzeit verloren gehen. Denn sie können jederzeit verloren gehen. Trotzdem scheint die Welt likebegeistert anders zu handeln: All ihr digitales Schaffen findet im geborgten Internet statt. Social Media ist ohne Zweifel der aktuelle Stand des Internets. Vom Umbau des größten Internetunternehmens, Google, in ein doppelplusgutes Social Network mit angeschlossener Suche bis zum Börsengang von Facebook: das Netz atmet social. Aber wer auf seine digitale Freiheit Wert legt, für den bleibt &#8211; solange freie Social Networks wie Diaspora noch irrelevant sind &#8211; nur das schönste, aber anstrengendste Instrument für die soziale Vernetzung und das Teilen von Inhalten übrig: die selbst kontrollierte Website, also das Blog.</p><p>Zeitgleich mit dem monetenhaften Aufstieg der sozialen Netzwerke begann im deutschsprachigen Raum der Niedergang der Blogs. Facebooks Nutzungszahlen sind gigantisch, ebenso YouTubes Abrufe oder Twitters Tweethagel. Und auch Google Plus ist stets bemüht, die ihm übertragenen Aufgaben zur Zufriedenheit der Nutzer zu erledigen.</p><p><strong>Nur auf einem Blog kann man machen, was man möchte</strong></p><p>Gleichzeitig sank aber die Zahl der Verlinkungen von Blogs untereinander so stark, dass Jens Schröder &#8211; über Jahre das inoffizielle, statistische Bundesblogamt &#8211; sein Projekt deutscheblogcharts.de mangels Masse und Sinnfälligkeit einstellte. Der Grund für den Sinkflug des Blogs: Soziale Befindlichkeiten werden heute auf Facebook geteilt, kurze Mitteilungen und Links auf Twitter und auf Facebook, Fotos auf einer der hundert Plattformen sowie auf Facebook, Videos auf YouTube und auf Facebook &#8211; für fast jede Art von Äußerung, die in einem Durchschnittsblog 2005 der Netzöffentlichkeit präsentiert wurde, gibt es heute ein eigenes Social Network. Und Facebook.</p><p>Dabei kann man auf einem Blog machen, was man möchte. Ärgerlicherweise bedeutet das auch, dass man machen muss, was man möchte. Und dauernd möchten zu müssen ist recht energieaufwendig. Ein soziales Netzwerk dagegen bietet nur ein sehr eingeschränktes Spektrum an Möglichkeiten: Auf Facebook kann man sich ganz simpel völlig frei entscheiden zwischen allem, <a href="http://www.spiegel.de/netzwelt/netzpolitik/0,1518,816847,00.html">was Mark Zuckerberg für angemessen hält</a>. Die Veröffentlichung bestimmter Fotos, Links zu bestimmten Websites oder auch die Inhaberschaft bestimmter, problematischer Meinungen gehört nicht dazu.</p><p>Es scheint, als würde sich zwischen den sozialen Netzwerken und den Blogs das ewige gesellschaftspolitische Drama wiederholen: Freiheit ist eine so anstrengende und gelegentlich komplizierte Angelegenheit, dass viele Leute sie offenbar gern eintauschen gegen ein enges Korsett, wenn das bloß gut geheizt ist und sich nicht allzu kompliziert anfühlt. Heute gibt es in Deutschland über 23 Millionen aktive Facebook-Nutzer, aber (nach Expertenschätzung) nur wenige hunderttausend Blogs. Mit dem zunehmenden digitalen Bewusstsein in der Bevölkerung, quer durch alle digitalen Schichten von der Softwareingenieurin bis zum Bundestagsabgeordneten, ist die Zeit für eine Renaissance des selbstkontrollierten Blogs gekommen: Bürger zu Bloggern, das Blog ist die digitale Stimme des Einzelnen.<br /> Es gibt viele Anzeichen, dass sich eine digitale Gesellschaft entwickelt, vom Erfolg der Piratenpartei bis zur Netzselbstverständlichkeit einer jungen Generation. Aber den Rahmen für diese digitale Gesellschaft setzen bisher nicht diejenigen, die er betrifft, sondern die Aktionäre einer handvoll kalifornischer Konzerne. Und das wiederum ist die Schuld derjenigen, die Internet sagen und Social Networks meinen, die nicht bemerken, dass sie auf Facebook, Twitter und Google Plus nur zu Gast sind. Der Weg vom Netzkonsumenten zum mündigen Digitalbürger führt nur über eine selbstkontrollierte Web-Seite, alles andere ist unterhaltsames, nützliches, schmückendes Beiwerk.</p><p><strong>tl;dr</strong></p><p>Social Networks sind gut und nützlich &#8211; wenn die digitale Existenz nicht allein von ihnen abhängt. Blogs sind die Seele von Social Media.</p><p><em>Anmerkung: Der Autor ist mit allen erwähnten Personen freundschaftlich verbunden außer mit Jerry Yang, Mark Zuckerberg, Franz Kafka und den Bundestagsabgeordneten. Außerdem bestreitet er einen Teil des Lebensunterhalts durch Bloggen, weshalb man ihm ein indirektes, wirtschaftliches Interesse an einer florierenden Bloglandschaft unterstellen kann.</em></p><p>(<a href="http://www.spiegel.de/netzwelt/web/0,1518,827995,00.html">Quelle</a>)</p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2012/04/17/euer-internet-ist-nur-geborgt/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Stikked – Open-Source PHP Pastebin</title><link>http://scratchbook.ch/2012/04/15/stikked-open-source-php-pastebin/</link> <comments>http://scratchbook.ch/2012/04/15/stikked-open-source-php-pastebin/#comments</comments> <pubDate>Sun, 15 Apr 2012 17:40:29 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=11652</guid> <description><![CDATA[Ein Pastebin (auch NoPaste) ist eine Webanwendung, die es Benutzern ohne Anmeldung erlaubt, beliebige Textschnipsel, üblicherweise Quelltext von Programmen, auf die Webseite hochzuladen. Dort können die Texte öffentlich eingesehen werden. Zu dem typischen Funktionsumfang eines Pastebin-Systems gehört Syntaxhervorhebung für diverse Programmiersprachen. Es gibt eine Open Source Pastebin Implementierung; Stikked. Voller Bugs. Aber powered by CodeIgniter. [...]]]></description> <content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-11653" title="" src="http://scratchbook.ch/wp-content/uploads/2012/04/stikked-logo.png" alt="" width="351" height="118" /></p><blockquote><p>Ein Pastebin (auch NoPaste) ist eine Webanwendung, die es Benutzern ohne Anmeldung erlaubt, beliebige Textschnipsel, üblicherweise Quelltext von Programmen, auf die Webseite hochzuladen. Dort können die Texte öffentlich eingesehen werden. Zu dem typischen Funktionsumfang eines Pastebin-Systems gehört Syntaxhervorhebung für diverse Programmiersprachen.</p></blockquote><p>Es gibt eine Open Source Pastebin Implementierung; Stikked. <a href="http://code.google.com/p/stikked/issues/list">Voller Bugs</a>. Aber powered by CodeIgniter. Und das ruft den Claude auf den Plan.</p><p>Ich habe mich dieses Wochenende hingesessen und das Teil auf den neusten Stand gebracht. Das Projekt existiert seit 2008, doch der ursprüngliche Autor kümmert sich nicht um die Fehler. Dabei ist Stikked ziemlich cool…</p><blockquote><p>Stikked is an Open-Source PHP Pastebin, with the aim of keeping a simple and easy to use user interface.</p></blockquote><p>Voilà, <a href="https://github.com/claudehohl/Stikked/downloads">hier ist Stikked 0.6</a>.</p><p>Mit der neusten CodeIgniter Version, allen Sprachen, die GeSHi anbietet, bit.ly Support, funktionierendem Downloadlink, lauffähig ohne PHP short tags, automatischem Setup der Datenbank, pastebin.com-Rawmode und einer optional einschaltbaren Minifizierung und Zusammenfassung aller CSS- und JavaScript-Dateien. Yizzz!</p><p>So sieht&#8217;s aus:</p><p><a href="http://paste.scratchbook.ch/view/24065728"><img class="alignnone size-full wp-image-11656" title="" src="http://scratchbook.ch/wp-content/uploads/2012/04/stikked-screenshot.jpg" alt="" width="600" height="529" /></a></p><p><a href="http://paste.scratchbook.ch/">paste.scratchbook.ch</a></p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2012/04/15/stikked-open-source-php-pastebin/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>EU: «ACTA darf nicht scheitern»</title><link>http://scratchbook.ch/2012/03/27/eu-acta-darf-nicht-scheitern/</link> <comments>http://scratchbook.ch/2012/03/27/eu-acta-darf-nicht-scheitern/#comments</comments> <pubDate>Tue, 27 Mar 2012 12:00:47 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Pfeifferisches Menschenfieber]]></category> <category><![CDATA[Politik]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=11621</guid> <description><![CDATA[Der Bürgerprotest wird als “aggressive pan-europäische Kampagne” gegen ACTA bezeichnet, “die von einer demokratisch nicht legitimierten Internetgemeinde getragen werde”. ACTA dürfe laut der Diktatur EU-Kommission nicht scheitern, “da dies ein gefährliches Signal zur Glaubwürdigkeit der grössten Führer aller Zeiten der Europäischen Union aussenden werde. Auf keinen Fall dürfe man dem Druck der Internetgemeinde nachgeben. Schließlich [...]]]></description> <content:encoded><![CDATA[<p><img src="http://scratchbook.ch/wp-content/uploads/2012/03/O_1000_680_680_Zensur-300x170.jpg" alt="" title="" width="300" height="170" class="alignnone size-medium wp-image-11622" /></p><blockquote><p>Der Bürgerprotest wird als “<em>aggressive pan-europäische Kampagne</em>” gegen ACTA bezeichnet, “die von einer demokratisch nicht legitimierten Internetgemeinde getragen werde”. ACTA dürfe laut der <del datetime="2012-03-27T11:44:06+00:00">Diktatur</del> EU-Kommission nicht scheitern, “da dies ein gefährliches Signal zur Glaubwürdigkeit <del datetime="2012-03-27T11:44:06+00:00">der grössten Führer aller Zeiten</del> der Europäischen Union aussenden werde. Auf keinen Fall dürfe man dem Druck der Internetgemeinde nachgeben. Schließlich seien sämtliche Einwände gegen ACTA <em><a href="http://acta.digitalegesellschaft.de/">unbegründet</a></em>.”</p></blockquote><p>(<a href="https://netzpolitik.org/2012/wenn-acta-scheitere-sei-dies-die-schuld-der-internet-gemeinde/">Quelle</a>)</p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2012/03/27/eu-acta-darf-nicht-scheitern/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Google &amp; NSA</title><link>http://scratchbook.ch/2012/03/12/google-nsa/</link> <comments>http://scratchbook.ch/2012/03/12/google-nsa/#comments</comments> <pubDate>Mon, 12 Mar 2012 19:57:30 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Nachdenklich]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=11594</guid> <description><![CDATA[Die EFF hat mal angefragt, inwieweit Google und die NSA zusammenarbeiten. Das Justizministerium hat daraufhin das Gericht aufgefordert, das geheim zu halten. DOJ Asks Court To Keep Secret Any Partnership Between Google, NSA The Justice Department is defending the government&#8217;s refusal to discuss—or even acknowledge the existence of—any cooperative research and development agreement between Google [...]]]></description> <content:encoded><![CDATA[<p>Die EFF hat mal angefragt, inwieweit Google und die NSA zusammenarbeiten.<br /> <a href="http://legaltimes.typepad.com/blt/2012/03/doj-asks-court-to-keep-secret-any-partnership-between-google-nsa.html">Das Justizministerium hat daraufhin das Gericht aufgefordert, das geheim zu halten</a>.</p><p><span id="more-11594"></span><br /><blockquote><strong>DOJ Asks Court To Keep Secret Any Partnership Between Google, NSA</strong></p><p>The Justice Department is defending the government&#8217;s refusal to discuss—or even acknowledge the existence of—any cooperative research and development agreement between Google and the National Security Agency.</p><p>The Washington based advocacy group Electronic Privacy Information Center sued in federal district court here to obtain documents about any such agreement between the Internet search giant and the security agency.</p><p>The NSA responded to the suit with a so-called “Glomar” response in which the agency said it could neither confirm nor deny whether any responsive records exist. U.S. District Judge Richard Leon in Washington sided with the government last July.</p><p>A three-judge panel of the U.S. Court of Appeals for the D.C. Circuit is scheduled to hear the dispute March 20.</p><p>EPIC filed a Freedom of Information Act request in early 2010, noting media reports at the time that the NSA and Google had agreed to a partnership following the cyber attacks in China that year against Google.</p><p>EPIC asked for, among other things, communication between the NSA and Google about Gmail and Google’s “decision to fail to routinely encrypt” messages before Jan. 13, 2010.</p><p>The NSA’s response to the request for records noted that the agency “works with a broad range of commercial partners and research associations” to ensure the availability of secure information systems. The agency, however, refused to confirm or deny any partnership with Google.</p><p>The security agency said it routinely monitors vulnerabilities in commercial technology and cryptographic products because the government relies heavily on private companies for word processing systems and e-mail software.</p><p>“If NSA determines that certain security vulnerabilities or malicious attacks pose a threat to U.S. government information systems, NSA may take action,” DOJ Civil Division lawyers Catherine Hancock and Douglas Letter said in a brief in the D.C. Circuit in January.</p><p>DOJ’s legal team said that acknowledging whether NSA and Google formed a partnership from a cyber attack would illuminate whether the government “considered the alleged attack to be of consequence for critical U.S. government information systems.”</p><p>NSA said it cannot provide documents—or confirm their existence—because the information would alert adversaries about the security agency’s priorities, threat assessments and countermeasures.</p><p>DOJ said media reports about the alleged Google partnership with NSA do not constitute official acknowledgement.</p><p>The Washington Post and The New York Times both reported that Google contacted the NSA after the Jan. 2010 cyber attack, which the company said was rooted in China and targeted access to accounts of Chinese human rights activists. The Wall Street Journal said NSA’s general counsel worked out a cooperative research and development agreement with Google.</p><p>EPIC’s attorneys, including Marc Rotenberg, the group’s president, said in court papers that the document request includes records that are not relevant to the NSA’s information assurance mission.</p><p>“The NSA mischaracterizes EPIC’s FOIA Request by stating that responsive documents would reveal ‘information about a potential Google-NSA relationship,’” Rotenberg said.</p><p>The crux of the records request, Rotenberg said, is Google’s switch to application encryption by default for Gmail accounts soon after the cyber attack. Google in 2008 began allowing users to encrypt mail passing through the company servers, EPIC said in its brief, but encryption was not provided by default.</p><p>EPIC’s brief said the failure of the NSA to conduct a search for records “deprives the court of the ability to meaningfully assess the propriety” of the agency’s response that it can neither confirm nor deny the existence of responsive records.</p><p>“Without first conducting the search, not even the agency can know whether there is a factual basis for its legal position,” Rotenberg said.</p><p>EPIC said its records request does not seek documents about NSA’s role to secure government computer networks. “Google provides cloud-based services to consumers, not critical infrastructure services to the government,” Rotenberg said.</p></blockquote> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2012/03/12/google-nsa/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>A Declaration of the Independence of Cyberspace</title><link>http://scratchbook.ch/2012/02/21/a-declaration-of-the-independence-of-cyberspace/</link> <comments>http://scratchbook.ch/2012/02/21/a-declaration-of-the-independence-of-cyberspace/#comments</comments> <pubDate>Tue, 21 Feb 2012 21:09:42 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Aktivitäten]]></category> <category><![CDATA[Erfreulich]]></category> <category><![CDATA[Freie Informationen]]></category> <category><![CDATA[Informatik]]></category> <category><![CDATA[Pfeifferisches Menschenfieber]]></category> <category><![CDATA[Politik]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=11549</guid> <description><![CDATA[by John Perry Barlow &#60;barlow@eff.org&#62; Governments of the Industrial World, you weary giants of flesh and steel, I come from Cyberspace, the new home of Mind. On behalf of the future, I ask you of the past to leave us alone. You are not welcome among us. You have no sovereignty where we gather. We [...]]]></description> <content:encoded><![CDATA[<p><em>by John Perry Barlow &lt;barlow@eff.org&gt;</em></p><p>Governments of the Industrial World, you weary giants of flesh and  steel, I come from Cyberspace, the new home of Mind. On behalf of the  future, I ask you of the past to leave us alone. You are not welcome  among us. You have no sovereignty where we gather.</p><p>We have no elected government, nor are we likely to have one, so I  address you with no greater authority than that with which liberty  itself always speaks. I declare the global social space we are building  to be naturally independent of the tyrannies you seek to impose on us.  You have no moral right to rule us nor do you possess any methods of  enforcement we have true reason to fear.</p><p>Governments derive their just powers from the consent of the  governed. You have neither solicited nor received ours. We did not  invite you. You do not know us, nor do you know our world. Cyberspace  does not lie within your borders. Do not think that you can build it, as  though it were a public construction project. You cannot. It is an act  of nature and it grows itself through our collective actions.</p><p>You have not engaged in our great and gathering conversation, nor did  you create the wealth of our marketplaces. You do not know our culture,  our ethics, or the unwritten codes that already provide our society  more order than could be obtained by any of your impositions.</p><p>You claim there are problems among us that you need to solve. You use  this claim as an excuse to invade our precincts. Many of these problems  don&#8217;t exist. Where there are real conflicts, where there are wrongs, we  will identify them and address them by our means. We are forming our  own Social Contract . This governance will arise according to the  conditions of our world, not yours. Our world is different.</p><p>Cyberspace consists of transactions, relationships, and thought  itself, arrayed like a standing wave in the web of our communications.  Ours is a world that is both everywhere and nowhere, but it is not where  bodies live.</p><p>We are creating a world that all may enter without privilege or  prejudice accorded by race, economic power, military force, or station  of birth.<br /> We are creating a world where anyone, anywhere may express his or her  beliefs, no matter how singular, without fear of being coerced into  silence or conformity.</p><p>Your legal concepts of property, expression, identity, movement, and  context do not apply to us. They are all based on matter, and there is  no matter here.</p><p>Our identities have no bodies, so, unlike you, we cannot obtain order  by physical coercion. We believe that from ethics, enlightened  self-interest, and the commonweal, our governance will emerge . Our  identities may be distributed across many of your jurisdictions. The  only law that all our constituent cultures would generally recognize is  the Golden Rule. We hope we will be able to build our particular  solutions on that basis. But we cannot accept the solutions you are  attempting to impose.</p><p>In the United States, you have today created a law, the  Telecommunications Reform Act, which repudiates your own Constitution  and insults the dreams of Jefferson, Washington, Mill, Madison,  DeToqueville, and Brandeis. These dreams must now be born anew in us.</p><p>You are terrified of your own children, since they are natives in a  world where you will always be immigrants. Because you fear them, you  entrust your bureaucracies with the parental responsibilities you are  too cowardly to confront yourselves. In our world, all the sentiments  and expressions of humanity, from the debasing to the angelic, are parts  of a seamless whole, the global conversation of bits. We cannot  separate the air that chokes from the air upon which wings beat.</p><p>In China, Germany, France, Russia, Singapore, Italy and the United  States, you are trying to ward off the virus of liberty by erecting  guard posts at the frontiers of Cyberspace. These may keep out the  contagion for a small time, but they will not work in a world that will  soon be blanketed in bit-bearing media.</p><p>Your increasingly obsolete information industries would perpetuate  themselves by proposing laws, in America and elsewhere, that claim to  own speech itself throughout the world. These laws would declare ideas  to be another industrial product, no more noble than pig iron. In our  world, whatever the human mind may create can be reproduced and  distributed infinitely at no cost. The global conveyance of thought no  longer requires your factories to accomplish.</p><p>These increasingly hostile and colonial measures place us in the same  position as those previous lovers of freedom and self-determination who  had to reject the authorities of distant, uninformed powers. We must  declare our virtual selves immune to your sovereignty, even as we  continue to consent to your rule over our bodies. We will spread  ourselves across the Planet so that no one can arrest our thoughts.</p><p>We will create a civilization of the Mind in Cyberspace. May it be more humane and fair than the world your governments have made before.</p><p>Davos, Switzerland<br /> February 8, 1996</p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2012/02/21/a-declaration-of-the-independence-of-cyberspace/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Willkommen im Deepweb.</title><link>http://scratchbook.ch/2012/02/21/willkommen-im-deepweb/</link> <comments>http://scratchbook.ch/2012/02/21/willkommen-im-deepweb/#comments</comments> <pubDate>Tue, 21 Feb 2012 20:57:21 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Erfreulich]]></category> <category><![CDATA[Freie Informationen]]></category> <category><![CDATA[Informatik]]></category> <category><![CDATA[The Moment Of Silence]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=11530</guid> <description><![CDATA[.onion &#8211; Ein eigenständiges, unabhängiges Netz im Internet. Niemand loggt etwas, niemand zensiert etwas. Alle sind anonym. Willkommen im Netzwerk der Rebellion. Willkommen in unserem eigenen Internet. Es hat den Charme des Internets von 1995. Nicht besonders schnell, aber jeder stellt seinen kleinen Dienst bereit, die Websites sind schlicht und bunt. Und man findet böse [...]]]></description> <content:encoded><![CDATA[<p>.onion &#8211; Ein eigenständiges, unabhängiges Netz im Internet. Niemand loggt etwas, niemand zensiert etwas. Alle sind anonym.</p><p>Willkommen im Netzwerk der Rebellion. Willkommen in unserem eigenen Internet.</p><p>Es hat den Charme des Internets von 1995. Nicht besonders schnell, aber jeder stellt seinen kleinen Dienst bereit, die Websites sind schlicht und bunt. Und man findet böse Sachen in diesem verruchten Internet.</p><p>Dieses Internet ist jetzt wieder da &#8211; besser als je zuvor! Verschlüsselt, verschleiert, dezentral. Unendliche Freiheit.</p><p>Ich zeige ein paar Highlights.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bildschirmfoto-2012-02-19-um-14.03.52.png" alt="" title="" width="400" height="312" class="alignnone size-full wp-image-11532" /></p><p><span id="more-11530"></span>Es beginnt. Willkommen im .onion-Netzwerk.</p><h2>Die Bibliotheca Alexandrina</h2><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bildschirmfoto-2012-02-14-um-22.08.14-300x225.png" alt="" title="Bildschirmfoto-2012-02-14-um-22.08.14" width="300" height="225" class="alignnone size-medium wp-image-11531" /></p><blockquote><p>the Free Bibliotheca Alexandrina is dedicated to recapture the spirit of openness and scholarship of the original Bibliotheca Alexandrina. It is much more than a library. In this case it is a collection of all electronic Data difficult to publish in world wide web, because of censorship, owner rights, or legal rights etc.</p><p>What does it mean ?<br /> There are times we know nothing about because books so easy burn. How to prevent this? Write in stone or make multiple copies and spread it round the world.</p><p>Let us look for black listed Books, forbidden Books, important Books etc.</p></blockquote><h2>Allerlei Anleitungen und Dokumentationen</h2><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bildschirmfoto-2012-02-21-um-20.59.13.png" alt="" title="" width="267" height="324" class="alignnone size-full wp-image-11542" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bildschirmfoto-2012-02-21-um-20.58.03.png" alt="" title="" width="262" height="312" class="alignnone size-full wp-image-11541" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bildschirmfoto-2012-02-21-um-20.56.04.png" alt="" title="" width="466" height="262" class="alignnone size-full wp-image-11539" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bildschirmfoto-2012-02-21-um-20.55.55.png" alt="" title="" width="224" height="273" class="alignnone size-full wp-image-11538" /> <img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bildschirmfoto-2012-02-21-um-20.55.48.png" alt="" title="" width="209" height="261" class="alignnone size-full wp-image-11537" /> <img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bildschirmfoto-2012-02-21-um-20.55.42.png" alt="" title="" width="206" height="262" class="alignnone size-full wp-image-11536" /></p><h2>Vom Netz genommene Webseiten</h2><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bildschirmfoto-2012-02-21-um-21.06.23.png" alt="" title="" width="500" height="277" class="alignnone size-full wp-image-11544" /></p><p>How to hack the PS3 <img src='http://scratchbook.ch/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p><h2>Dienste</h2><p>Wir können anonym Dateien &#038; Bilder hosten, haben unseren eigenen Messenger und einen anonymisierten E-Mail Dienst.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bildschirmfoto-2012-02-21-um-21.07.33.png" alt="" title="" width="400" height="282" class="alignnone size-full wp-image-11545" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bildschirmfoto-2012-02-21-um-16.51.22.png" alt="" title="" width="300" height="263" class="alignnone size-full wp-image-11533" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bildschirmfoto-2012-02-21-um-21.05.00.png" alt="" title="" width="300" height="208" class="alignnone size-full wp-image-11543" /></p><h2>Kritische Websites</h2><p>Ich finde es ja spannend, mit welchen Themen sich die Seiten im .onion-Netz beschäftigen.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/hwtext-618x76.png" alt="" title="" width="618" height="76" class="alignnone size-large wp-image-11548" /></p><blockquote><p>Effective revolutionary strategies, occultism, politics, sheeple, computers, health.</p></blockquote><p><a href="http://scratchbook.ch/wp-content/uploads/2012/02/hw.png"><img src="http://scratchbook.ch/wp-content/uploads/2012/02/hw-618x284.png" alt="" title="" width="618" height="284" class="alignnone size-large wp-image-11547" /></a></p><p>Warum kommt mir das alles bloss so bekannt vor? <img src='http://scratchbook.ch/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p><p>EPIC WIN. Ich fühle mich hier zuhause.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bildschirmfoto-2012-02-21-um-20.52.53.png" alt="" title="" width="527" height="329" class="alignnone size-full wp-image-11534" /></p><h2>Der Rest</h2><p>Grösstenteils unbekannt. Siehe <a href="http://scratchbook.ch/2012/02/21/das-internet-ist-tief/">da</a>.</p><p>Man kann auch allerhand Waffen kaufen und Auftragskiller anheuern. Wenn man möchte. Bezahlt wird mit Bitcoin.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bitcoin.png" alt="" title="" width="50" height="50" class="alignnone size-full wp-image-11546" /></p><p>Sodeli. Wir haben unsere eigene Währung, unser eigenes Internet mit seinen eigenen Diensten. Hier entsteht eine Welt, wie sie sein sollte &#8211; frei von Kontrolle. Selbstfunktionierend.</p><blockquote><p>Ich bin hier, um euch zu sagen, wie alles beginnen wird. Ich werde den Hörer auflegen und den Menschen das zeigen, was sie nicht sehen sollen. Ich zeige ihnen eine Welt ohne euch. Eine Welt ohne Gesetze, ohne Kontrollen und ohne Grenzen. Eine Welt, in der alles möglich ist.</p></blockquote> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2012/02/21/willkommen-im-deepweb/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Das Widerstandsnetzwerk</title><link>http://scratchbook.ch/2012/02/19/das-widerstandsnetzwerk/</link> <comments>http://scratchbook.ch/2012/02/19/das-widerstandsnetzwerk/#comments</comments> <pubDate>Sun, 19 Feb 2012 14:36:55 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Aktivitäten]]></category> <category><![CDATA[Erfreulich]]></category> <category><![CDATA[Informatik]]></category> <category><![CDATA[The Moment Of Silence]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=11460</guid> <description><![CDATA[Wir bauen unser eigenes Internet. Fernab von Zensur, zentraler Kontrolle und Überwachung. Ein Rebellennetzwerk. Wir sind der Widerstand. ACTA? Challenge accepted. Und wie machen wir das? Es gibt ein Netzwerk, das heisst Tor &#8211; The onion routing. Normalerweise werden die Daten im Klartext übertragen, wenn wir surfen. Die Regierung oder die Provider könnten uns also [...]]]></description> <content:encoded><![CDATA[<p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/rebellion-e1329657665165-618x241.jpg" alt="" title="" width="618" height="241" class="alignnone size-large wp-image-11519" /></p><p>Wir bauen unser eigenes Internet. Fernab von Zensur, zentraler Kontrolle und Überwachung.<br /> Ein Rebellennetzwerk. Wir sind der Widerstand.</p><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 49px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Determined/Challenge%20Considered-challengeconsidered-considered.png" width="49" height="56" alt="considered"></img></div><div style="overflow: hidden;">ACTA?</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 54px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Determined/Challenge-challenge.png" width="54" height="64" alt="challenge"></img></div><div style="overflow: hidden;">Challenge accepted.</div></div><p><span id="more-11460"></span></p><h2>Und wie machen wir das?</h2><p>Es gibt ein Netzwerk, das heisst <a href="https://www.torproject.org/">Tor</a> &#8211; <strong>T</strong>he <strong>o</strong>nion <strong>r</strong>outing.</p><p>Normalerweise werden die Daten im Klartext übertragen, wenn wir surfen. Die Regierung oder die Provider könnten uns also belauschen.</p><h3>1. Wir brauchen eine <strong>Verschlüsselung</strong>.</h3><p>Es bieten sich viele Varianten an, Daten zu verschlüsseln. Unsere Regierung soll jedoch NICHT merken, wenn wir mit Tor surfen. Weil wenn sie das merken würde und Tor Netzwerkverkehr erkennen könnte, dann könnte sie entsprechende Filter installieren, mit denen das Surfen über Tor nicht mehr möglich wäre.</p><p>Also, was benutzen wir? Die gleiche Verschlüsselung, auf die die Banken und Institute des Systems setzen; SSL.<br /> Jeder, der Onlinebanking macht, nutzt SSL. Wir können also sagen, wenn wir mit Tor surfen, machen wir Online-Banking. Die Regierung kann uns das SSL nicht einfach abschalten, denn sonst könnte niemand mehr Online-Banking machen.</p><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 47px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Victorious/Freddie%20Mercury-freddie-hellyes.png" width="47" height="96" alt="hellyes"></img></div><div style="overflow: hidden;"></div></div><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 30px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Determined/Conflicting%20Emotions-notsure-dunno.png" width="30" height="64" alt="dunno"></img></div><div style="overflow: hidden;">Es gibt aber immer noch ein Problem. Die Daten sind jetzt zwar verschlüsselt, aber die Regierung kann immer noch sehen, zu WELCHEN Servern wir uns verbinden.</div></div><h3>2. Wir brauchen eine <strong>Verschleierung</strong>.</h3><p>Lass uns das so machen: Jeder, der am Tor-Netzwerk teilnimmt, stellt ein Teil seiner Bandbreite für andere Teilnehmer zur Verfügung. Damit können andere über meine Kiste surfen &#8211; und umgekehrt. Nach der Datenübertragung vergessen wir gleich wieder, woher der Benutzer kam und wohin er ging. Die Verbindungsverfolgung ist somit (fast) nicht mehr möglich.</p><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 47px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Victorious/Freddie%20Mercury-freddie-hellyes.png" width="47" height="96" alt="hellyes"></img></div><div style="overflow: hidden;"></div></div><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 30px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Determined/Conflicting%20Emotions-notsure-dunno.png" width="30" height="64" alt="dunno"></img></div><div style="overflow: hidden;">Es gibt aber immer noch ein Problem. Bevor eine verschlüsselte und verschleierte Verbindung aufgebaut werden kann, muss ein Server z.B. die Adresse <em>wikileaks.ch</em> in eine IP-Adresse umwandeln, damit die Verbindung aufgebaut werden kann. Staaten, die das ACTA-Abkommen unterzeichnet haben, könnten ihre Provider dazu zwingen, keine Namensauflösung mehr auf <em>wikileaks.ch</em> durchzuführen &#8211; somit wissen wir nicht mehr, wie die Wikileaks-Server erreichbar sind.</div></div><h3>3. Wir brauchen eine unabhängige <strong>Namensauflösung</strong>.</h3><p>Das find ich besonders schick an Tor: Die haben&#8217;s tatsächlich hinbekommen, eine dezentrale Namensauflösung zu implementieren!<br /> Funktionieren tut das natürlich nur innerhalb des Tor-Netzwerks. Somit weiss die Regierung definitiv nicht mehr, auf welchen Seiten wir innerhalb des Tor-Netzwerks surfen. Und man findet auch nicht heraus, wo der Server steht, und kann ihn somit auch nicht abschalten.</p><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 60px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Pleasure/Me%20Gusta%20Perfect-mgperfect-megustaperfect-mgp.png" width="60" height="52" alt="megustaperfect"></img></div><div style="overflow: hidden;"></div></div><p>Willkommen im .onion-Netzwerk. Unser eigenes kleines <a href="http://de.wikipedia.org/wiki/Arpanet">Arpanet</a>.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/Bildschirmfoto-2012-02-19-um-14.13.15-215x300.png" alt="" title="" width="215" height="300" class="alignnone size-medium wp-image-11516" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/arpanet-5.jpg" alt="" title="" width="400" height="274" class="alignnone size-full wp-image-11520" /></p><p>Ich habe auch schon ein kleines Extra eingerichtet:</p><h2>Scratchbook.ch = 7ue632cgevfjvhfi.onion</h2><p>Du brauchst den <a href="https://www.torproject.org/download/download-easy.html">Tor-Browser</a>. Jetzt.</p><p>ACTA mag kommen. Wir bleiben.</p><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 32px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Epic%20Fail%20Guy-epicfailguy-efg.png" width="32" height="64" alt="efg"></img></div><div style="overflow: hidden;">We are Legion.<br /> We do not forgive.<br /> We do not forget.<br /> Expect us.</div></div> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2012/02/19/das-widerstandsnetzwerk/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>WordPress Trolls</title><link>http://scratchbook.ch/2012/02/16/wordpress-trolls/</link> <comments>http://scratchbook.ch/2012/02/16/wordpress-trolls/#comments</comments> <pubDate>Thu, 16 Feb 2012 15:25:11 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Basteleien]]></category> <category><![CDATA[Erfreulich]]></category> <category><![CDATA[Humor]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=11505</guid> <description><![CDATA[Jemand hat die geniale Idee, Trollfaces in diverse Messenger einzubauen. Der @dulnan hat mir das gezeigt, und nachdem sich mein Lachmuskelkater wieder etwas entspannt hat, dachte ich: Hmmm&#8230; IDEE! Ein WordPress Plugin! Voila: Introducing: WordPress Trolls! Für die feinen emotionalen Untermalungen in den Beiträgen&#8230; Wir geben personenbezogene Daten an Unternehmen, Organisationen oder Personen außerhalb von [...]]]></description> <content:encoded><![CDATA[<p>Jemand hat die geniale Idee, <a href="https://github.com/sagargp/trollicons">Trollfaces in diverse Messenger einzubauen</a>. Der <a href="http://twitter.com/#!/dulnan">@dulnan</a> hat mir das gezeigt, und nachdem sich mein Lachmuskelkater wieder etwas entspannt hat, dachte ich: Hmmm&#8230; IDEE! Ein WordPress Plugin!</p><p>Voila:</p><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 131px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Trollicons-trollicons.png" width="131" height="125" alt="trollicons"></img></div><div style="overflow: hidden;">Introducing: WordPress Trolls!</div></div><p>Für die feinen emotionalen Untermalungen in den Beiträgen&#8230; <img src='http://scratchbook.ch/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 98px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Cereal%20guy/Cereal%20Spitting-cerealspit-spit.png" width="98" height="64" alt="spit"></img></div><div style="overflow: hidden;"><blockquote><p>Wir geben personenbezogene Daten an Unternehmen, Organisationen oder Personen außerhalb von Google weiter, wenn wir hierfür Ihre Einwilligung erhalten haben.</p></blockquote></div></div><h2>Syntax</h2><h3>Variante 1</h3><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/usage1.png" alt="" title="" width="141" height="68" class="alignnone size-full wp-image-11506" /></p><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 60px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Amazed/Dumbfounded%20Kid-whoa-ooh.png" width="60" height="64" alt="ooh"></img></div><div style="overflow: hidden;">(Text)</div></div><h3>Variante 2: Zitiert</h3><p><img src="http://scratchbook.ch/wp-content/uploads/2012/02/usage2.png" alt="" title="" width="136" height="67" class="alignnone size-full wp-image-11507" /></p><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 60px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Amazed/Dumbfounded%20Kid-whoa-ooh.png" width="60" height="64" alt="ooh"></img></div><div style="overflow: hidden;"><blockquote><p>(Text)</p></blockquote></div></div><p>Github: <a href="https://github.com/claudehohl/Wordpress-Trolls">https://github.com/claudehohl/Wordpress-Trolls</a><br /> Wordpress-Plugin: <a href="http://scratchbook.ch/wp-content/uploads/2012/02/wp-trolls.zip">wp-trolls.zip</a></p><p><span id="more-11505"></span></p><hr /><h2>Liste aller Trolle</h2><h3>Actually</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 87px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Actually/Actually-actually-okay3.png" width="87" height="64" alt="actually"></img></div><div style="overflow: hidden;">actually</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 87px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Actually/It's%20Not%20Okay-itsnotokay-okay4.png" width="87" height="64" alt="itsnotokay"></img></div><div style="overflow: hidden;">itsnotokay</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 87px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Actually/Sad%20Shadow-sadshadow-okay2.png" width="87" height="64" alt="sadshadow"></img></div><div style="overflow: hidden;">sadshadow</div></div><h3>Amazed</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 60px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Amazed/Dumbfounded%20Kid-whoa-ooh.png" width="60" height="64" alt="ooh"></img></div><div style="overflow: hidden;">ooh</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 87px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Amazed/Gasp-gasp.png" width="87" height="64" alt="gasp"></img></div><div style="overflow: hidden;">gasp</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 51px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Amazed/Milk-milk.png" width="51" height="64" alt="milk"></img></div><div style="overflow: hidden;">milk</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 69px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Amazed/Moonshot-moonshot-noway-shocked.png" width="69" height="64" alt="moonshot"></img></div><div style="overflow: hidden;">moonshot</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 73px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Amazed/Not%20Bad%20Obama-notbadobama-notbad-obama.png" width="73" height="64" alt="notbad"></img></div><div style="overflow: hidden;">notbad</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Amazed/Rage%20Blank-blankrage.png" width="59" height="64" alt="blankrage"></img></div><div style="overflow: hidden;">blankrage</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 61px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Amazed/Surprised%20Wide%20Open%20Mouth-surprised3.png" width="61" height="64" alt="surprised3"></img></div><div style="overflow: hidden;">surprised3</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 61px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Amazed/surprised-surprised1-surprised.png" width="61" height="64" alt="surprised"></img></div><div style="overflow: hidden;">surprised</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 85px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Amazed/Wait-wait-awno.png" width="85" height="46" alt="wait"></img></div><div style="overflow: hidden;">wait</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 87px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Amazed/Clever%20Girl-clevergirl.jpg" width="87" height="64" alt="clevergirl"></img></div><div style="overflow: hidden;">clevergirl</div></div><h3>Angry</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 72px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Angry/Desk%20flip-deskflip-flip-tableflip-desk-table.png" width="72" height="72" alt="deskflip"></img></div><div style="overflow: hidden;">deskflip</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Angry/Drool-drool.png" width="59" height="64" alt="drool"></img></div><div style="overflow: hidden;">drool</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 58px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Angry/Eyes-eyes-fff-imminent.png" width="58" height="64" alt="eyes"></img></div><div style="overflow: hidden;">eyes</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 43px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Angry/I%20Am%20Disappoint-son-disappoint.png" width="43" height="64" alt="son"></img></div><div style="overflow: hidden;">son</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Angry/Look-look.png" width="59" height="64" alt="look"></img></div><div style="overflow: hidden;">look</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 53px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Angry/Mom-mom.png" width="53" height="64" alt="mom"></img></div><div style="overflow: hidden;">mom</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 62px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Angry/No-no.png" width="62" height="64" alt="no"></img></div><div style="overflow: hidden;">no</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 57px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Angry/Not%20Okay-notokay-bitter.png" width="57" height="65" alt="bitter"></img></div><div style="overflow: hidden;">bitter</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Angry/Shaking-shaking.png" width="59" height="64" alt="shaking"></img></div><div style="overflow: hidden;">shaking</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 62px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Angry/Side%20Mouth-sidemouth-lefu.png" width="62" height="64" alt="lefu"></img></div><div style="overflow: hidden;">lefu</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 87px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Angry/Stare-stare.png" width="87" height="64" alt="stare"></img></div><div style="overflow: hidden;">stare</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 58px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Angry/Uhm-uhm-mad.png" width="58" height="64" alt="mad"></img></div><div style="overflow: hidden;">mad</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 55px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Angry/What%20Have%20You%20Done-whathaveyoudone-whyd-done.png" width="55" height="64" alt="whathaveyoudone"></img></div><div style="overflow: hidden;">whathaveyoudone</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 63px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Angry/Y%20U%20NO-yuno.png" width="63" height="64" alt="yuno"></img></div><div style="overflow: hidden;">yuno</div></div><h3>Cereal guy</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 75px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Cereal%20guy/Beer%20Guy-beerguy-beer.png" width="75" height="64" alt="beer"></img></div><div style="overflow: hidden;">beer</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 76px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Cereal%20guy/Cereal%20Guy%20Angry-cerealguyangry-cerealangry.png" width="76" height="64" alt="cerealangry"></img></div><div style="overflow: hidden;">cerealangry</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 78px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Cereal%20guy/Cereal%20Guy%20Squint-cerealguysquint-cerealsquint.png" width="78" height="64" alt="cerealsquint"></img></div><div style="overflow: hidden;">cerealsquint</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 74px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Cereal%20guy/Cereal%20Guy-cerealguy-cereal.png" width="74" height="64" alt="cereal"></img></div><div style="overflow: hidden;">cereal</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 98px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Cereal%20guy/Cereal%20Spitting-cerealspit-spit.png" width="98" height="64" alt="spit"></img></div><div style="overflow: hidden;">spit</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 60px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Cereal%20guy/Newspaper%20Guy%20Tear-newspaperguytear-newspapertear-tear.png" width="60" height="64" alt="tear"></img></div><div style="overflow: hidden;">tear</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 87px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Cereal%20guy/Newspaper%20Guy-newspaperguy-newspaper.png" width="87" height="64" alt="newspaper"></img></div><div style="overflow: hidden;">newspaper</div></div><h3>Determined</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 49px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Determined/Challenge%20Considered-challengeconsidered-considered.png" width="49" height="56" alt="considered"></img></div><div style="overflow: hidden;">considered</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 54px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Determined/Challenge-challenge.png" width="54" height="64" alt="challenge"></img></div><div style="overflow: hidden;">challenge</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 30px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Determined/Conflicting%20Emotions-notsure-dunno.png" width="30" height="64" alt="dunno"></img></div><div style="overflow: hidden;">dunno</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 58px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Determined/Crazy%20Concentrate%20Sweat-sweat-workinghard.png" width="58" height="64" alt="workinghard"></img></div><div style="overflow: hidden;">workinghard</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 87px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Determined/Fu%20Manchu-fumanchu.png" width="87" height="64" alt="fumanchu"></img></div><div style="overflow: hidden;">fumanchu</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Determined/Gah-gah-sweaty.png" width="59" height="64" alt="gah"></img></div><div style="overflow: hidden;">gah</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Determined/Hmm-hmm.png" width="59" height="64" alt="hmm"></img></div><div style="overflow: hidden;">hmm</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 57px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Determined/It's%20Time-itstime-serious-determined.png" width="57" height="64" alt="serious"></img></div><div style="overflow: hidden;">serious</div></div><h3>Happy</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 80px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Happy/Everything%20Went%20Better%20Than%20Expected-everythingwentbetterthanexpected-betterthanexpected-ewbte.png" width="80" height="64" alt="betterthanexpected"></img></div><div style="overflow: hidden;">betterthanexpected</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 61px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Happy/Excited-ya-yey.png" width="61" height="64" alt="yey"></img></div><div style="overflow: hidden;">yey</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 56px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Happy/Forever%20Alone%20Excited-foreveraloneexcited-faexcited-falaugh-friends.png" width="56" height="64" alt="friends"></img></div><div style="overflow: hidden;">friends</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 65px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Happy/Grandma-grandma-granny.png" width="65" height="64" alt="grandma"></img></div><div style="overflow: hidden;">grandma</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 60px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Happy/Happy-happy.png" width="60" height="64" alt="happy"></img></div><div style="overflow: hidden;">happy</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 54px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Happy/Haters%20Gonna%20Hate-hatersgonnahate-haters-hgh.png" width="54" height="64" alt="haters"></img></div><div style="overflow: hidden;">haters</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 60px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Happy/Heh%20heh-hehheh-hehehe.png" width="60" height="64" alt="hehehe"></img></div><div style="overflow: hidden;">hehehe</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 67px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Happy/I%20See-isee-iseewhatyoudidthere.png" width="67" height="64" alt="isee"></img></div><div style="overflow: hidden;">isee</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 64px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Happy/Overjoyed-overjoyed-nowords-daww.png" width="64" height="67" alt="overjoyed"></img></div><div style="overflow: hidden;">overjoyed</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 79px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Happy/Ok-ok-nice-great-thumb-thumbs.png" width="79" height="64" alt="ok"></img></div><div style="overflow: hidden;">ok</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 73px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Happy/Perfect-perfect-biggrin.png" width="73" height="64" alt="perfect"></img></div><div style="overflow: hidden;">perfect</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 61px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Happy/Satisfied-satisfied-relief-ahh-ah.png" width="61" height="64" alt="ahh"></img></div><div style="overflow: hidden;">ahh</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 65px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Happy/Smile-smile-catsmile.png" width="65" height="64" alt="smile"></img></div><div style="overflow: hidden;">smile</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Happy/Win-win-epicwin.png" width="59" height="64" alt="win"></img></div><div style="overflow: hidden;">win</div></div><h3>Laughing</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 48px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Laughing/Aint%20That%20Some%20Shit-celo-aintthatsomeshit.png" width="48" height="64" alt="aintthatsomeshit"></img></div><div style="overflow: hidden;">aintthatsomeshit</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 85px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Laughing/Awww%20Yea-awyea-awyeah-ay.png" width="85" height="46" alt="ay"></img></div><div style="overflow: hidden;">ay</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 46px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Laughing/Fuck%20That%20Shit%20Right-rightfuckthat-rft.png" width="46" height="64" alt="rightfuckthat"></img></div><div style="overflow: hidden;">rightfuckthat</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 46px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Laughing/Fuck%20That%20Shit-fuckthatshit-fuckthat-ft-leftfuckthat-lft.png" width="46" height="64" alt="fuckthat"></img></div><div style="overflow: hidden;">fuckthat</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 55px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Laughing/High-high.png" width="55" height="64" alt="high"></img></div><div style="overflow: hidden;">high</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 41px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Laughing/LOL%20(No%20Text)-ooo.png" width="41" height="47" alt="ooo"></img></div><div style="overflow: hidden;">ooo</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 64px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Laughing/LOL-lol-LOL.png" width="64" height="48" alt="lol"></img></div><div style="overflow: hidden;">lol</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 84px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Laughing/Pffttchhchhh-pft2-expectant.png" width="84" height="64" alt="expectant"></img></div><div style="overflow: hidden;">expectant</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Laughing/Pft-pft-lulz.png" width="59" height="64" alt="lulz"></img></div><div style="overflow: hidden;">lulz</div></div><h3>Malicious</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 49px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Devil%20Troll-deviltroll-evil.png" width="49" height="64" alt="deviltroll"></img></div><div style="overflow: hidden;">deviltroll</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 61px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Douchebag-dbag-brah-douche-douchebag.png" width="61" height="64" alt="dbag"></img></div><div style="overflow: hidden;">dbag</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 57px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Evil%20Smile-evilsmile-hah.png" width="57" height="64" alt="hah"></img></div><div style="overflow: hidden;">hah</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Gay%20Troll-gaytroll.png" width="59" height="64" alt="gaytroll"></img></div><div style="overflow: hidden;">gaytroll</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 68px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Granny%20Troll-grannytroll.png" width="68" height="64" alt="grannytroll"></img></div><div style="overflow: hidden;">grannytroll</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 56px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Grinch-grinch.png" width="56" height="64" alt="grinch"></img></div><div style="overflow: hidden;">grinch</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 76px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/I%20Lied-ilied-wayevil.png" width="76" height="64" alt="ilied"></img></div><div style="overflow: hidden;">ilied</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 57px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Melvin-melvin.png" width="57" height="64" alt="melvin"></img></div><div style="overflow: hidden;">melvin</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 81px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Problem%20Guy-problemguy-okaytroll.png" width="81" height="64" alt="okaytroll"></img></div><div style="overflow: hidden;">okaytroll</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 55px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Rage%20Happy-happyrage-hrage.png" width="55" height="64" alt="happyrage"></img></div><div style="overflow: hidden;">happyrage</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Sad%20Melvin-sadmelvin.png" width="59" height="64" alt="sadmelvin"></img></div><div style="overflow: hidden;">sadmelvin</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 83px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Sad%20Troll-sadtroll.png" width="83" height="64" alt="sadtroll"></img></div><div style="overflow: hidden;">sadtroll</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 43px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Troll%20Dad%20Jump-trolldadjump-tdjump-tdj.png" width="43" height="64" alt="trolldadjump"></img></div><div style="overflow: hidden;">trolldadjump</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 48px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Troll%20Dad%20Monocle-trolldadmonocle-trolldadm-tdm.png" width="48" height="64" alt="tdm"></img></div><div style="overflow: hidden;">tdm</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 68px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Troll%20Hot-trollhot-hottroll-babe.png" width="68" height="64" alt="babe"></img></div><div style="overflow: hidden;">babe</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 68px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Troll%20Insane-insanetroll-insane-excited.png" width="68" height="64" alt="insane"></img></div><div style="overflow: hidden;">insane</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 97px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Troll%20Lol-trolol-trollol-trolllol.png" width="97" height="49" alt="trolol"></img></div><div style="overflow: hidden;">trolol</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 65px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Troll%20peeking-peek-trollpeek.png" width="65" height="22" alt="peek"></img></div><div style="overflow: hidden;">peek</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 65px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/Troll-troll-problem-umad.png" width="65" height="64" alt="troll"></img></div><div style="overflow: hidden;">troll</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 45px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Malicious/TrollDad-trolldad.png" width="45" height="64" alt="trolldad"></img></div><div style="overflow: hidden;">trolldad</div></div><h3>Miscellaneous</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 69px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/All%20the%20things-allthethings.png" width="69" height="64" alt="allthethings"></img></div><div style="overflow: hidden;">allthethings</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 58px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Busted-busted-oops.png" width="58" height="64" alt="oops"></img></div><div style="overflow: hidden;">oops</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 56px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Confused-confused-butwhy.png" width="56" height="64" alt="confused"></img></div><div style="overflow: hidden;">confused</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 45px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Drunk-drunk.png" width="45" height="64" alt="drunk"></img></div><div style="overflow: hidden;">drunk</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 32px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Epic%20Fail%20Guy-epicfailguy-efg.png" width="32" height="64" alt="efg"></img></div><div style="overflow: hidden;">efg</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 73px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Errg-errg-release.png" width="73" height="64" alt="errg"></img></div><div style="overflow: hidden;">errg</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 44px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Grandma%20Shit-grandmashit-shit.png" width="44" height="64" alt="shit"></img></div><div style="overflow: hidden;">shit</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 100px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Nothing%20to%20do%20here-rocket-jetpack.png" width="100" height="80" alt="rocket"></img></div><div style="overflow: hidden;">rocket</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 51px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Oh%20God%20Right-rohgod-rgross-rwtf.png" width="51" height="64" alt="rwtf"></img></div><div style="overflow: hidden;">rwtf</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 51px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Oh%20God-ohgod-gross-wtf-lgross-lwtf.png" width="51" height="64" alt="wtf"></img></div><div style="overflow: hidden;">wtf</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 108px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Omg%20Run-omgrun-run.png" width="108" height="64" alt="omgrun"></img></div><div style="overflow: hidden;">omgrun</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 69px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/So%20Close-soclose.png" width="69" height="66" alt="soclose"></img></div><div style="overflow: hidden;">soclose</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 51px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Spiderpman-subtle-nonchalant.png" width="51" height="64" alt="subtle"></img></div><div style="overflow: hidden;">subtle</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 64px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Tada%20left-ltada.png" width="64" height="93" alt="ltada"></img></div><div style="overflow: hidden;">ltada</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 64px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Tada-tada-rtada.png" width="64" height="93" alt="tada"></img></div><div style="overflow: hidden;">tada</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 62px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Throw%20Up%20In%20Mouth-throwupinmouth-throwup-fullmouth.png" width="62" height="64" alt="throwup"></img></div><div style="overflow: hidden;">throwup</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 64px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/True%20Story-truestory.png" width="64" height="64" alt="truestory"></img></div><div style="overflow: hidden;">truestory</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 52px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/What-concerned.png" width="52" height="64" alt="concerned"></img></div><div style="overflow: hidden;">concerned</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Miscellaneous/Youthful%20Fear-mommy-zomg.png" width="59" height="64" alt="zomg"></img></div><div style="overflow: hidden;">zomg</div></div><h3>Neutral</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 51px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Neutral/Bad%20Poker%20Face-badpokerface-badpoker.png" width="51" height="64" alt="badpokerface"></img></div><div style="overflow: hidden;">badpokerface</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 61px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Neutral/Beh-beh.png" width="61" height="64" alt="beh"></img></div><div style="overflow: hidden;">beh</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Neutral/Dazed-dazed.png" width="59" height="64" alt="dazed"></img></div><div style="overflow: hidden;">dazed</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Neutral/Dude-dude-meh.png" width="59" height="64" alt="dude"></img></div><div style="overflow: hidden;">dude</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 60px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Neutral/Occupied-working-busy-focus.png" width="60" height="64" alt="working"></img></div><div style="overflow: hidden;">working</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 54px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Neutral/Poker%20Face%20Thick-thickpokerface-thickpoker-guilty.png" width="54" height="64" alt="thickpokerface"></img></div><div style="overflow: hidden;">thickpokerface</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Neutral/Poker%20Face-pokerface-poker-pf.png" width="59" height="64" alt="pokerface"></img></div><div style="overflow: hidden;">pokerface</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 46px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Neutral/Rich%20Fu-richfu-rich-quite.png" width="46" height="64" alt="richfu"></img></div><div style="overflow: hidden;">richfu</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Neutral/Straight-straight.png" width="59" height="64" alt="straight"></img></div><div style="overflow: hidden;">straight</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 71px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Neutral/ThingsWentOkay-thingswentokay-wentokay.png" width="71" height="64" alt="thingswentokay"></img></div><div style="overflow: hidden;">thingswentokay</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 61px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Neutral/Tongue-tongue.png" width="61" height="64" alt="tongue"></img></div><div style="overflow: hidden;">tongue</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 61px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Neutral/Wah-wah-huh.png" width="61" height="64" alt="huh"></img></div><div style="overflow: hidden;">huh</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Neutral/Wat-wat-suspicious.png" width="59" height="64" alt="wat"></img></div><div style="overflow: hidden;">wat</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 57px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Neutral/Yawn-yawn.png" width="57" height="64" alt="yawn"></img></div><div style="overflow: hidden;">yawn</div></div><h3>Pleasure</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Pleasure/Classy%20Fap-classyfap-richfap.png" width="59" height="64" alt="richfap"></img></div><div style="overflow: hidden;">richfap</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 79px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Pleasure/Dog%20Sweet%20Jesus-dogsweetjesus.png" width="79" height="64" alt="dogsweetjesus"></img></div><div style="overflow: hidden;">dogsweetjesus</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 72px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Pleasure/Fap%20Fap-fap-fapfap-fapfapfap.png" width="72" height="64" alt="fapfapfap"></img></div><div style="overflow: hidden;">fapfapfap</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 56px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Pleasure/Female%20Fap-femalefap-schlick.png" width="56" height="64" alt="femalefap"></img></div><div style="overflow: hidden;">femalefap</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 64px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Pleasure/Gonna%20fuck%20that%20taco-taco.png" width="64" height="65" alt="taco"></img></div><div style="overflow: hidden;">taco</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 62px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Pleasure/Me%20Gusta%20Mucho%20Creepy-creepymegusta-cmg-evilmegusta-emg.png" width="62" height="64" alt="evilmegusta"></img></div><div style="overflow: hidden;">evilmegusta</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 60px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Pleasure/Me%20Gusta%20Perfect-mgperfect-megustaperfect-mgp.png" width="60" height="52" alt="megustaperfect"></img></div><div style="overflow: hidden;">megustaperfect</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 62px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Pleasure/Me%20Gusta-bepistrollingyoubetter-megusta-mg.png" width="62" height="64" alt="megusta"></img></div><div style="overflow: hidden;">megusta</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 64px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Pleasure/No%20Me%20Gusta-nmg-nomegusta.png" width="64" height="72" alt="nomegusta"></img></div><div style="overflow: hidden;">nomegusta</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 71px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Pleasure/Ohhh%20Yes-ohyes.png" width="71" height="64" alt="ohyes"></img></div><div style="overflow: hidden;">ohyes</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 55px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Pleasure/Son%20Me%20Gusta-sonmegusta-smg.png" width="55" height="64" alt="sonmegusta"></img></div><div style="overflow: hidden;">sonmegusta</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 65px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Pleasure/Sweet%20Jesus%20Face-sweetjesus-sj.png" width="65" height="64" alt="sweetjesus"></img></div><div style="overflow: hidden;">sweetjesus</div></div><h3>Rage</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 56px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Rage/Canadian%20Rage-canadianrage-canadian.png" width="56" height="64" alt="canadian"></img></div><div style="overflow: hidden;">canadian</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 78px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Rage/Fuu-rage2-epicrage-fu2.png" width="78" height="64" alt="epicrage"></img></div><div style="overflow: hidden;">epicrage</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 62px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Rage/Pig-pig-pigrage.png" width="62" height="64" alt="pig"></img></div><div style="overflow: hidden;">pig</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 78px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Rage/Rage%20Classic-fu-rage.png" width="78" height="64" alt="fu"></img></div><div style="overflow: hidden;">fu</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 87px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Rage/Rage%20Extreme-extremerage-xrage.png" width="87" height="64" alt="extremerage"></img></div><div style="overflow: hidden;">extremerage</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 68px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Rage/Rage%20Lion-ragelion.png" width="68" height="64" alt="ragelion"></img></div><div style="overflow: hidden;">ragelion</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 66px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Rage/Rage%20Nuclear-nuclearrage-nrage-fu3.png" width="66" height="64" alt="nuclearrage"></img></div><div style="overflow: hidden;">nuclearrage</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 71px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Rage/Rage%20Omega-omegarage-orage-fu4.png" width="71" height="64" alt="omegarage"></img></div><div style="overflow: hidden;">omegarage</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 72px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Rage/Rage%20Quiet-quietrage.png" width="72" height="64" alt="quietrage"></img></div><div style="overflow: hidden;">quietrage</div></div><h3>Sad</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 72px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Sad/Aw%20Man-awman-whyhands.png" width="72" height="64" alt="whyhands"></img></div><div style="overflow: hidden;">whyhands</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 61px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Sad/Aw-aw-why.png" width="61" height="64" alt="why"></img></div><div style="overflow: hidden;">why</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 66px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Sad/Cry-cry-baw.png" width="66" height="64" alt="cry"></img></div><div style="overflow: hidden;">cry</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 63px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Sad/Forever%20Alone-foreveralone-fa.png" width="63" height="64" alt="foreveralone"></img></div><div style="overflow: hidden;">foreveralone</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 74px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Sad/Numb-numb-fear-scared-depressed.png" width="74" height="64" alt="depressed"></img></div><div style="overflow: hidden;">depressed</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 57px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Sad/Oh%20No-uh-ohno.png" width="57" height="64" alt="uh"></img></div><div style="overflow: hidden;">uh</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 56px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Sad/Okay-okay.png" width="56" height="65" alt="okay"></img></div><div style="overflow: hidden;">okay</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 59px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Sad/Sad-sad.png" width="59" height="64" alt="sad"></img></div><div style="overflow: hidden;">sad</div></div><h3>Stupidity</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 65px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Stupidity/Are%20You%20Kidding%20Me-areyoukiddingme-areyoukidding-stfu-areyoufuckingkiddingme.png" width="65" height="64" alt="stfu"></img></div><div style="overflow: hidden;">stfu</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 60px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Stupidity/Herp%20Derp-herpderp-herp-derp.png" width="60" height="64" alt="herp"></img></div><div style="overflow: hidden;">herp</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 62px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Stupidity/Oh%20God%20Why-ohgodwhy.png" width="62" height="64" alt="ohgodwhy"></img></div><div style="overflow: hidden;">ohgodwhy</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 46px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Stupidity/Retard%20Dog-retarddog-dog.png" width="46" height="64" alt="dog"></img></div><div style="overflow: hidden;">dog</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 101px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Stupidity/Seriously%20Chan-jackie-chan.png" width="101" height="64" alt="jackie"></img></div><div style="overflow: hidden;">jackie</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 88px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Stupidity/So%20hardcore-hardcore-sohardcore.png" width="88" height="64" alt="sohardcore"></img></div><div style="overflow: hidden;">sohardcore</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 66px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Stupidity/The%20Fuck%20Female-gthefuck-gtf.png" width="66" height="64" alt="gtf"></img></div><div style="overflow: hidden;">gtf</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 89px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Stupidity/The%20Fuck-thefuck-tf.png" width="89" height="64" alt="thefuck"></img></div><div style="overflow: hidden;">thefuck</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 47px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Victorious/Freddie%20Mercury-freddie-hellyes.png" width="47" height="96" alt="badass"></img></div><div style="overflow: hidden;">badass</div></div><h3>Unofficial</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 50px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Unofficial/Gropaga-gropaga.png" width="50" height="45" alt="gropaga"></img></div><div style="overflow: hidden;">gropaga</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 90px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Unofficial/Gun%20Left-lgun.png" width="90" height="57" alt="lgun"></img></div><div style="overflow: hidden;">lgun</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 90px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Unofficial/Gun%20Right-rgun.png" width="90" height="57" alt="rgun"></img></div><div style="overflow: hidden;">rgun</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 57px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Unofficial/Pickle%20Time-pickletime-pickle.png" width="57" height="18" alt="pickle"></img></div><div style="overflow: hidden;">pickle</div></div><h3>Victorious</h3><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 68px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Victorious/Close%20Enough-closeenough-ce.png" width="68" height="64" alt="closeenough"></img></div><div style="overflow: hidden;">closeenough</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 47px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Victorious/Freddie%20Mercury-freddie-hellyes.png" width="47" height="96" alt="hellyes"></img></div><div style="overflow: hidden;">hellyes</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 68px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Victorious/Fuck%20Yeah%20Words-fuckyeahwords-fywords.png" width="68" height="64" alt="fuckyeahwords"></img></div><div style="overflow: hidden;">fuckyeahwords</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 67px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Victorious/Fuck%20Yeah-fuckyeah-fy.png" width="67" height="64" alt="fuckyeah"></img></div><div style="overflow: hidden;">fuckyeah</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 81px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Victorious/GTFO-gtfo.png" width="81" height="64" alt="gtfo"></img></div><div style="overflow: hidden;">gtfo</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 62px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Victorious/Melvin%20Fuck%20Yeah-melvinfuckyeah-melvinfy-mfy.png" width="62" height="64" alt="melvinfuckyeah"></img></div><div style="overflow: hidden;">melvinfuckyeah</div></div><br /><div style="overflow: hidden; padding-bottom: 1em;"><div style="float: left; padding-right: 15px; width: 81px;"><img src="http://scratchbook.ch/wp-content/plugins/wp-trolls/img/Victorious/That%20Way-thatway.png" width="81" height="64" alt="thatway"></img></div><div style="overflow: hidden;">thatway</div></div> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2012/02/16/wordpress-trolls/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>ACTA &#8211; Gesammelte Infos</title><link>http://scratchbook.ch/2012/02/10/acta-gesammelte-infos/</link> <comments>http://scratchbook.ch/2012/02/10/acta-gesammelte-infos/#comments</comments> <pubDate>Fri, 10 Feb 2012 22:21:24 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Aktivitäten]]></category> <category><![CDATA[Informatik]]></category> <category><![CDATA[Nachdenklich]]></category> <category><![CDATA[Pfeifferisches Menschenfieber]]></category> <category><![CDATA[Politik]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=11457</guid> <description><![CDATA[[Im Feed kann dieses Video nicht angezeigt werden.Klicke zum Blogeintrag um das Video anzusehen.]]]></description> <content:encoded><![CDATA[<p>[Im Feed kann dieses Video nicht angezeigt werden.<a href="http://scratchbook.ch/2012/02/10/acta-gesammelte-infos/">Klicke zum Blogeintrag um das Video anzusehen.]</a></p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2012/02/10/acta-gesammelte-infos/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>7XX HTTP Status codes</title><link>http://scratchbook.ch/2012/01/24/7xx-http-status-codes/</link> <comments>http://scratchbook.ch/2012/01/24/7xx-http-status-codes/#comments</comments> <pubDate>Tue, 24 Jan 2012 08:55:50 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Humor]]></category> <category><![CDATA[Informatik]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=11438</guid> <description><![CDATA[Es gibt neue HTTP Statuscodes. There are many ways for a developer to screw up their implementation, but no code to share the nature of the error with the end user. We humbly suggest the following status codes are included in the HTTP spec in the 7XX range. 70X &#8211; Inexcusable 701 &#8211; Meh 702 [...]]]></description> <content:encoded><![CDATA[<p>Es gibt neue HTTP Statuscodes. <img src='http://scratchbook.ch/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p><blockquote><p>There are many ways for a developer to screw up their implementation, but no code to share the nature of the error with the end user.</p><p>We humbly suggest the following status codes are included in the HTTP spec in the 7XX range.</p></blockquote><p><span id="more-11438"></span><ul><li>70X &#8211; Inexcusable<ul><li>701 &#8211; Meh</li><li>702 &#8211; Emacs</li></ul></li><li>71X &#8211; Novelty Implementations<ul><li>710 &#8211; PHP</li><li>711 &#8211; Convenience Store</li><li>719 &#8211; I am not a teapot</li></ul></li><li>72X &#8211; Edge Cases<ul><li>720 &#8211; Unpossible</li><li>721 &#8211; Known Unknowns</li><li>722 &#8211; Unknown Unknowns</li><li>723 &#8211; Tricky</li><li>724 &#8211; This line should be unreachable</li><li>725 &#8211; It works on my machine</li><li>726 &#8211; It&#8217;s a feature, not a bug</li></ul></li><li>73X &#8211; Fucking<ul><li>731 &#8211; Fucking Rubygems</li><li>732 &#8211; Fucking Unicode</li><li>733 &#8211; Fucking Deadlocks</li><li>734 &#8211; Fucking Deferreds</li><li>735 &#8211; Fucking IE</li><li>736 &#8211; Fucking Race Conditions</li><li>737 &#8211; FuckThreadsing</li><li>738 &#8211; Fucking Bundler</li><li>739 &#8211; Fucking Windows</li></ul></li><li>74X &#8211; Meme Driven<ul><li>741 &#8211; Compiling</li><li>742 &#8211; A kitten dies</li><li>743 &#8211; I thought I knew regular expressions</li><li>744 &#8211; Y U NO write integration tests?</li><li>745 &#8211; I don&#8217;t always test my code, but when I do I do it in production</li><li>746 &#8211; Missed Ballmer Peak</li><li>747 &#8211; Motherfucking Snakes on the Motherfucking Plane</li><li>748 &#8211; Confounded by Ponies</li><li>749 &#8211; Reserved for Chuck Norris</li></ul></li><li>75X &#8211; Syntax Errors<ul><li>750 &#8211; Didn&#8217;t bother to compile it</li><li>753 &#8211; Syntax Error</li></ul></li><li>76X &#8211; Substance-Affected Developer<ul><li>761 &#8211; Hungover</li><li>762 &#8211; Stoned</li><li>763 &#8211; Under-Caffeinated</li><li>764 &#8211; Over-Caffeinated</li><li>765 &#8211; Railscamp</li><li>766 &#8211; Sober</li><li>767 &#8211; Drunk</li></ul></li><li>77X &#8211; Predictable Problems<ul><li>771 &#8211; Cached for too long</li><li>772 &#8211; Not cached long enough</li><li>773 &#8211; Not cached at all</li><li>774 &#8211; Why was this cached?</li><li>776 &#8211; Error on the Exception</li><li>777 &#8211; Coincidence</li><li>778 &#8211; Off By One Error</li><li>779 &#8211; Off By Too Many To Count Error</li></ul></li><li>78X &#8211; Somebody Else&#8217;s Problem<ul><li>781 &#8211; Operations</li><li>782 &#8211; QA</li><li>783 &#8211; It was a customer request, honestly</li><li>784 &#8211; Management, obviously</li><li>785 &#8211; TPS Cover Sheet not attached</li></ul></li><li>79X &#8211; Internet crashed<ul><li>797 &#8211; This is the last page of the Internet. Go back</li><li>799 &#8211; End of the world</li></ul></li></ul><p><a href="https://github.com/joho/7XX-rfc">github.com/joho/7XX-rfc</a></p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2012/01/24/7xx-http-status-codes/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>WE ARE COMIC SANS!</title><link>http://scratchbook.ch/2011/12/13/we-are-comic-sans/</link> <comments>http://scratchbook.ch/2011/12/13/we-are-comic-sans/#comments</comments> <pubDate>Tue, 13 Dec 2011 20:10:48 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Humor]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=11393</guid> <description><![CDATA[WE ARE THE COMIC SANS DEFENDERS. WE FEAR NO FONTS AND WE WILL MAKE THE WHOLE WORLD COMIC SANS. BECAUSE HELVETICA IS SOOO 2011 comicsansproject.tumblr.com]]></description> <content:encoded><![CDATA[<p><font face="Comic Sans MS, Comic Sans, Marker Felt">WE ARE THE <a href="http://scratchbook.ch/2010/07/09/im-comic-sans-asshole/">COMIC SANS</a> DEFENDERS.<br /> WE FEAR NO FONTS AND WE WILL MAKE THE WHOLE WORLD COMIC SANS.<br /> BECAUSE HELVETICA IS SOOO 2011</font></p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/12/tumblr_lw5hu8KuET1r7viaco1_500.png" alt="" title="" width="500" height="500" class="alignnone size-full wp-image-11394" /></p><p><span id="more-11393"></span><img src="http://scratchbook.ch/wp-content/uploads/2011/12/tumblr_lvh55kfEsl1r7viaco1_500.jpg" alt="" title="" width="500" height="500" class="alignnone size-full wp-image-11402" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/12/tumblr_lvvvdltCYw1r7viaco1_500.jpg" alt="" title="" width="500" height="500" class="alignnone size-full wp-image-11397" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/12/tumblr_lvs5d0v6EU1r7viaco1_500.jpg" alt="" title="" width="500" height="500" class="alignnone size-full wp-image-11396" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/12/tumblr_lvh57n2Dwe1r7viaco1_500.jpg" alt="" title="" width="500" height="500" class="alignnone size-full wp-image-11395" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/12/tumblr_lvwbk1pRby1r7viaco1_500.jpg" alt="" title="" width="500" height="500" class="alignnone size-full wp-image-11398" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/12/tumblr_lvxt9xcpj21r7viaco1_500.jpg" alt="" title="" width="500" height="500" class="alignnone size-full wp-image-11399" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/12/tumblr_lvzhzy4cds1r7viaco1_500.jpg" alt="" title="" width="500" height="500" class="alignnone size-full wp-image-11401" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/12/tumblr_lvy38cBkB51r7viaco1_500.jpg" alt="" title="" width="500" height="233" class="alignnone size-full wp-image-11400" /></p><p><a href="http://comicsansproject.tumblr.com/">comicsansproject.tumblr.com</a></p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2011/12/13/we-are-comic-sans/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Information wants to be free</title><link>http://scratchbook.ch/2011/10/27/information-wants-to-be-free/</link> <comments>http://scratchbook.ch/2011/10/27/information-wants-to-be-free/#comments</comments> <pubDate>Thu, 27 Oct 2011 13:54:27 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Nachdenklich]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=11335</guid> <description><![CDATA[In Anlehnung an den bereits vor 2 Jahren verfassten Beitrag: Self Secret Service &#160; An der Botschaft hat sich seither nichts verändert. Nur erfüllt. Google gibt Daten heraus. Ich bin es satt, Leute dafür zu sensibilisieren. Aber ich habe einen Schieberegler entdeckt: Ihr müsst wissen was ihr tut. Aber die Information, die ihr heute erfasst, [...]]]></description> <content:encoded><![CDATA[<p><img src="http://scratchbook.ch/wp-content/uploads/2011/10/AcIA8tKCMAEHD8h-618x283.jpg" alt="" title="AcIA8tKCMAEHD8h" width="618" height="283" class="alignnone size-large wp-image-11336" /></p><p>In Anlehnung an den bereits vor 2 Jahren verfassten Beitrag:</p><h1><a href="http://scratchbook.ch/2009/07/21/self-secret-service/">Self Secret Service</a></h1><h3>&nbsp;</h3><p>An der Botschaft hat sich seither nichts verändert. Nur erfüllt. <a href="http://www.silicon.de/management/wirtschaft/0,39044010,41556753,00/google_regierungen_sammeln_immer_mehr_daten.htm">Google gibt Daten heraus</a>.<br /> Ich bin es satt, Leute dafür zu sensibilisieren. Aber ich habe einen Schieberegler entdeckt:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/10/regler.png" alt="" width="562" height="166" class="alignnone size-full wp-image-11337" /></p><p>Ihr müsst wissen was ihr tut. Aber die Information, die ihr heute erfasst, vergisst Google/Facebook/XYZ nicht. Alles, was gratis ist, nützt jemand anderem. Wir sind das Produkt.</p><p>In 4 Jahren kommt dann ein Gesetz:</p><blockquote><p>Alle, die sich in den letzten 4 Jahren im Kreis XY herumgetrieben haben / dieser Gruppe beigetreten sind, werden verhaftet. #Beispiel</p></blockquote><p>Die Informationen, die ihr heute erfasst, können in Zukunft gegen euch verwendet werden.<br /> Sie haben das Recht zu schweigen.</p><p>Und apropos <a href="http://www.guardian.co.uk/technology/2008/sep/29/cloud.computing.richard.stallman">Cloud</a>, von wegen &#8220;die Daten sind bei diesen erfahrenen und professionellen Betreibern sicherer.&#8221;: Grosse Datenansammlungen sind besonders attraktiv für Angreifer.</p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2011/10/27/information-wants-to-be-free/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>The Passion of Corporate Egoists</title><link>http://scratchbook.ch/2011/09/19/the-passion-of-corporate-egoists/</link> <comments>http://scratchbook.ch/2011/09/19/the-passion-of-corporate-egoists/#comments</comments> <pubDate>Mon, 19 Sep 2011 13:29:37 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=11136</guid> <description><![CDATA[Menschen mit Passion haben nicht nur eine Aufgabe, sondern stehen auch für diese ein, lehnen sich manchmal weit aus dem Fenster. Aus Überzeugung. Meinungsstark, mit klaren Positionen – gerne auch kontrovers. Das unterscheidet sie von den PR-Fatzkes aka Arschkriechern mit weichgespülten Lull-Statements und den Marketing-Mäuschen mit den totlangweiligen Facebook-Status über irgendwelche bescheuerten Messeauftritte. Passion, das ist [...]]]></description> <content:encoded><![CDATA[<p>Menschen mit Passion haben nicht nur eine Aufgabe, sondern stehen auch für diese ein, lehnen sich manchmal weit aus dem Fenster. Aus Überzeugung. Meinungsstark, mit klaren Positionen – gerne auch kontrovers. Das unterscheidet sie von den PR-Fatzkes aka Arschkriechern mit weichgespülten Lull-Statements und den Marketing-Mäuschen mit den totlangweiligen Facebook-Status über irgendwelche bescheuerten Messeauftritte.</p><p>Passion, das ist nicht der naive Enthusiasmus, den ein Volontär heute mitbringt, weil er besonders viele Twitter-Tools kennt oder einen Facebook-Account hat und auch gerne nutzt. Der aus Mashable-Artikeln zitieren kann und gerne von Transparenz, Authentizität, Echtzeit und anderem Hipster-Scheiß erzählt. Der immer vorne mit dabei ist, wenn wieder mal BETA-Invites für irgendwelche coolen Web-Services verteilt werden. Genau diese Tool-Fixiertheit führt Kommunikatoren in die Frustration, macht müde.</p><h2>Social Tools are for Fools.</h2><blockquote><p>Texte ins Netz stellen kann jeder. Bloggen nicht.</p></blockquote><p>Es ist kein Zufall, dass die ganzen Positivbeispiele da oben (fast) alle Blogs zum Gegenstand haben. Denn anders als auf Facebook (Werbefläche) und Twitter (Networking/Curating) ist es in Blogs möglich, sein Produkt, seine Marke voll und ganz auszuleben. Nicht selten ist ein Blog selbst das Produkt. Ohne Limitation in Form von Zeichenbegrenzug, Usability-Bugs und unerwünschter Werbung für irgendwelche Möbelhaus-Gewinnspiele. Dafür mit redaktionellen Inhalten.</p><p>Das Blog ist die ureigene Spielwiese, dort hat nur einer das Sagen und es ist nicht Mark Zuckerberg. Gute Blogs vermitteln Persönlichkeit. Das Blog ist die Arena, in der Passion voll und ganz zur Geltung kommt. In Gestalt richtig geiler Postings, die gerne von der Zielgruppe verlinkt werden.</p><p>Es braucht leidenschaftliche Menschen, um Social Media Projekte zum Erfolg zu führen. Weil nur Leidenschaft den ständigen Willen, sich zu verbessern, mehr Wissen zu erlangen, mehr Menschen für sich zu gewinnen, mit sich bringt. Unbändige Neugierde inklusive.</p><p>Danke, liebe (<a href="http://cluetrainpr.de/index.php/tschuss-social-media-es-ist-vorbei-the-passion-haz-gone/">Quelle</a>).</p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2011/09/19/the-passion-of-corporate-egoists/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>OOA, OOD, OOP &#8211; OOOOPS, die OOP-Sekte!</title><link>http://scratchbook.ch/2011/03/23/ooa-ood-oop-oooops-die-oop-sekte/</link> <comments>http://scratchbook.ch/2011/03/23/ooa-ood-oop-oooops-die-oop-sekte/#comments</comments> <pubDate>Wed, 23 Mar 2011 15:58:12 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Informatik]]></category> <category><![CDATA[Pfeifferisches Menschenfieber]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=10859</guid> <description><![CDATA[Neulich wurde ich angehauen: Es sei &#8220;unschön&#8221;, wenn man statt echo new publicAbstractFactoryImplementationSuperGeilesFormEndTag&#40;void string args&#91;&#93;&#41;; einfach das schreibt, was man möchte: &#60;/form&#62; Liebe Softwarepäpste und Enterprisearschitekten. Hier kommt meine Philosophie: Ich bin faul. Die Maschine soll für mich arbeiten. Und sie soll das möglichst schnell tun, ohne viel Ressourcen zu beanspruchen. Andere Menschen mit weniger [...]]]></description> <content:encoded><![CDATA[<p>Neulich wurde ich angehauen:</p><p><img class="alignnone size-full wp-image-10860" title="00000092" src="http://scratchbook.ch/wp-content/uploads/2011/03/00000092.png" alt="" width="551" height="601" /></p><p>Es sei &#8220;unschön&#8221;, wenn man statt</p><div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">echo</span> <span style="color: #000000; font-weight: bold;">new</span> publicAbstractFactoryImplementationSuperGeilesFormEndTag<span style="color: #009900;">&#40;</span>void string args<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>einfach das schreibt, was man möchte:</p><div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;/</span>form<span style="color: #339933;">&gt;</span></pre></div></div><p>Liebe Softwarepäpste und Enterprisearschitekten. Hier kommt meine Philosophie:</p><ul><li>Ich bin faul.</li><li>Die Maschine soll für mich arbeiten.</li><li>Und sie soll das möglichst schnell tun, ohne viel Ressourcen zu beanspruchen.</li><li>Andere Menschen mit weniger Erfahrung sollen das, was ich entwickelt habe, Verstehen und weiterentwickeln können.</li></ul><blockquote><p> Aber nein, so geht das doch nicht. Was wir brauchen, sind möglichst komplizierte Strukturen und Muster, die überhaupt niemand mehr ausser der Autor selbst checkt, damits softwarearchitektonisch schön ist und die Wartbarkeit erhöht wird.</p><p>Und wenn man dann genug Singletons mit der Abstract Factory instanziiert hat, welche die Facade durch den Proxy decoraten, damit der Mediator den Observer nicht beim visiten des Mementos dependency-injected, dann kann das Data Access Object mit dem Plugin via Null Object Flyweight durch das Composite iterieren und das emitten, was man eigentlich ursprünglich wollte:</p><p>Hello World.</p></blockquote><p>Grässlich. Und dann wird mit einer &#8220;höheren Schulbildung&#8221; geprahlt; einer Bildung, wo einem das Hirni dermassen durchgemantscht und verdreht wird, dass man am Schluss überhaupt nicht mehr weiss, wie man einen simplen Text ausgibt, weil man ja erst eine abstrakte Factory braucht, die man dann in einer Implementation per Dependency-Injection instanziieren kann, damit man sie dann durch alle DAO und SOA-Layer rauf und runter über tausend Schnittstellen via XML schicken kann, damit am Ende&#8230; Ääh, was wollten wir eigentlich?</p><p>Dass so eine Erdölraffinerie* ordentlich Speicher frisst, liegt auf der Hand. Und warten können&#8217;s nur solche, die auch so eine Hochbildung haben. Die OOP-Sekte.</p><p>Kein Wunder fühlen sich Enterprise-Senior-Supermega-OOP-Engineering-Technical-Softwarearchitekts gleich angepisst, wenn man ihr lange und mühsam erlerntes Hoheitsgebiet mit schnellen, schlanken, praktischen und gut funktionierenden Quickwins erschiesst. Die wollen ihren &#8220;Marktwert&#8221; erhalten.</p><p>Nein. So will ich nicht enden. Entwurfsmuster als Inspiration ja, aber schlichte Ansätze als &#8220;unschön&#8221; bezeichnen, nur weil&#8217;s halt grad nicht in ein Enterprise-Pattern passt: <a href="http://fffffffffffffffffffffffuuuuuuuuuuuuuuuuuuuuuu.com/">FFFUUUU</a>.</p><blockquote><p> <strong>* Erdölraffinerie (engl. Gas factory)</strong><br /> Unnötig komplexe Systementwürfe für relativ simple Probleme werden abwertend als Erdölraffinerien bezeichnet.</p><p>(Wikipedia: <a href="http://de.wikipedia.org/wiki/Anti-Pattern">Anti-Patterns</a>)</p></blockquote> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2011/03/23/ooa-ood-oop-oooops-die-oop-sekte/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Google Maps in China</title><link>http://scratchbook.ch/2011/03/10/google-maps-in-china/</link> <comments>http://scratchbook.ch/2011/03/10/google-maps-in-china/#comments</comments> <pubDate>Thu, 10 Mar 2011 07:41:42 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=10819</guid> <description><![CDATA[Ausprobieren!]]></description> <content:encoded><![CDATA[<p><img src="http://scratchbook.ch/wp-content/uploads/2011/03/Bildschirmfoto-2011-03-10-um-08.40.12-618x389.jpg" alt="" title="Bildschirmfoto 2011-03-10 um 08.40.12" width="618" height="389" class="alignnone size-large wp-image-10820" /></p><p><a href="http://map.baidu.com/?newmap=1&#038;l=18&#038;tn=B_DIMENSIONAL_MAP&#038;c=632220,9418008&#038;cc=bj&#038;s=cur%26curtp%3D0%26wd%3D&#038;sc=0">Ausprobieren!</a></p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2011/03/10/google-maps-in-china/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>The Github experience</title><link>http://scratchbook.ch/2011/03/04/the-github-experience/</link> <comments>http://scratchbook.ch/2011/03/04/the-github-experience/#comments</comments> <pubDate>Fri, 04 Mar 2011 18:23:37 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Informatik]]></category> <category><![CDATA[Nützlich]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=10810</guid> <description><![CDATA[Ich habe gerade die Vorteile, die Git &#038; Github bieten, hautnah erfahren! Hoh, da ist etwas tolles auf Github: node-search-engine. Ein auf node.js basierter Webcrawler, der das Internet durchsucht (asynchron und parallel, yay) und in einer CouchDB speichert. *geifer* &#8211; gleich ausprobieren! Ich mache also einen &#8220;Fork&#8221;. Was passiert da: Das Repository node-search-engine, welches dem [...]]]></description> <content:encoded><![CDATA[<p><img src="http://scratchbook.ch/wp-content/uploads/2011/03/logov3.png" alt="" title="logov3" width="100" height="45" class="alignnone size-full wp-image-10811" /></p><p>Ich habe gerade die Vorteile, die Git &#038; Github bieten, hautnah erfahren!</p><p>Hoh, da ist etwas tolles auf Github: <a href="https://github.com/kurokikaze/node-search-engine">node-search-engine</a>. Ein auf <a href="http://nodejs.org/">node.js</a> basierter Webcrawler, der das Internet durchsucht (asynchron und parallel, yay) und in einer <a href="http://couchdb.apache.org/">CouchDB</a> speichert.</p><p>*geifer* &#8211; gleich ausprobieren!</p><p>Ich mache also einen &#8220;Fork&#8221;.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/03/Bildschirmfoto-2011-03-04-um-18.56.05.png" alt="" title="Bildschirmfoto 2011-03-04 um 18.56.05" width="359" height="41" class="alignnone size-full wp-image-10812" /></p><p>Was passiert da: Das Repository <em><a href="https://github.com/kurokikaze/node-search-engine">node-search-engine</a></em>, welches dem Benutzer <em>kurokikaze</em> gehört, wird unter meinen Account als <a href="https://github.com/claudehohl/node-search-engine">eigenständiges Repository</a> kopiert.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/03/Bildschirmfoto-2011-03-04-um-18.44.20-618x434.png" alt="" title="Bildschirmfoto 2011-03-04 um 18.44.20" width="618" height="434" class="alignnone size-large wp-image-10813" /></p><p>Jetzt gehörst du mir. Und ich kann dich klonen und drücken wie es mir beliebt.</p><p>Uuh, da läuft noch was nicht. Eine binäre Library funktioniert unter Mac OS X nicht, ein Syntaxfehler, und ein Funktionsname hat sich geändert.</p><p>So. Ich glaube jetzt läufts! Gleich committen und auf Github übertragen.</p><p>Hmm. Ich habe wohl gerade ein paar Bugs gefixt. Das Projekt liegt seit April 2010 brach &#8211; vielleicht freut sich der Entwickler ja über meine Verbesserungen.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/03/Bildschirmfoto-2011-03-04-um-19.11.14.png" alt="" title="Bildschirmfoto 2011-03-04 um 19.11.14" width="352" height="39" class="alignnone size-full wp-image-10814" /></p><p>Ich schicke ihm eine <em><a href="https://github.com/kurokikaze/node-search-engine/pull/1">Pull-Anfrage</a></em>:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/03/Bildschirmfoto-2011-03-04-um-15.57.44.png" alt="" title="Bildschirmfoto 2011-03-04 um 15.57.44" width="440" height="112" class="alignnone size-full wp-image-10815" /></p><p>Das heisst soviel wie: &#8220;Hey schau mal, ich habe da <a href="https://github.com/claudehohl/node-search-engine/commit/12be8ee80532bf29c289ad4ecd52072a4f9a62a3">eine Verbesserung</a> für dein Projekt &#8211; wenn es dir gefällt, kannst du diese Änderungen übernehmen!&#8221;</p><p>2 Minuten später:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/03/Bildschirmfoto-2011-03-04-um-15.56.38.png" alt="" title="Bildschirmfoto 2011-03-04 um 15.56.38" width="553" height="102" class="alignnone size-full wp-image-10816" /></p><p>Noch ein bisschen später:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/03/Bildschirmfoto-2011-03-04-um-18.14.11.png" alt="" title="Bildschirmfoto 2011-03-04 um 18.14.11" width="582" height="109" class="alignnone size-full wp-image-10817" /></p><p>Er ist dankbar und hat meine Verbesserungen gleich übernommen! YAY</p><p>Ist ja ein tolles Konzept! Jeder hat sein Repository. Jeder kann es kopieren. Es braucht keine Berechtigungen, kein &#8220;Hauptentwicklungszweig&#8221;. Was toll ist, wird geforkt, und wenn die Änderung passt, wird sie übernommen. Wenn nicht, existiert einfach ein Fork, eine Variante der Software eigenständig weiter.</p><p>Schläft die Entwicklung ein, finden sich sicher Entwickler um einen populären Fork, die ihn weiterentwickeln. Die Macht ist quasi nicht mehr bei den Entwicklern oder bei einer Firma, sondern bei der Software selbst. Die Firma mag Konkurs gehen, die Software lebt weiter. Der beste Fork gewinnt.</p><p>Erst durch Github wird das Opensource-Prinzip wirklich gelebt.</p><p><a href="http://github.com/">http://github.com/</a></p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2011/03/04/the-github-experience/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Der Graph von Dezibert</title><link>http://scratchbook.ch/2011/02/25/der-graph-von-dezibert/</link> <comments>http://scratchbook.ch/2011/02/25/der-graph-von-dezibert/#comments</comments> <pubDate>Fri, 25 Feb 2011 10:36:29 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Basteleien]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=10775</guid> <description><![CDATA[Upgrades für Dezibert: Ein Graph. Echtzeitstatistiken mit einem Canvas-Element, welches sekündlich mit Daten gefüttert wird. Und wenn‘s dann zu laut wird, und der Finger sich hebt &#8211; dann hebt auch der Graf dank einer CSS3-Transition seinen Finger: Ich hatte ja vor kurzem smoothiecharts.org entdeckt, und da hat‘s mich einfach gejuckt, sowas für den Geräuschpegel unserer [...]]]></description> <content:encoded><![CDATA[<p>Upgrades für <a href="http://scratchbook.ch/2010/11/19/wenns-zu-laut-wird-dezibert-hebt-den-finger/">Dezibert</a>: Ein Graph.</p><p><a href="http://scratchbook.ch/wp-content/uploads/2011/02/count_down.jpg"><img src="http://scratchbook.ch/wp-content/uploads/2011/02/count_down-300x252.jpg" alt="" title="count_down" width="300" height="252" class="alignnone size-medium wp-image-10779" /></a></p><p>Echtzeitstatistiken mit einem Canvas-Element, welches sekündlich mit Daten gefüttert wird. Und wenn‘s dann zu laut wird, und der Finger sich hebt &#8211; dann hebt auch der Graf dank einer CSS3-Transition seinen Finger:</p><p><a href="http://scratchbook.ch/wp-content/uploads/2011/02/count_up.jpg"><img src="http://scratchbook.ch/wp-content/uploads/2011/02/count_up-300x268.jpg" alt="" title="count_up" width="300" height="268" class="alignnone size-medium wp-image-10780" /></a></p><p>Ich hatte ja vor kurzem smoothiecharts.org <a href="http://twitter.com/claudehohl/status/38160116268142592">entdeckt</a>, und da hat‘s mich einfach gejuckt, sowas für den Geräuschpegel unserer Arduino-Installation zu machen.</p><p>Nur war das nicht so einfach. Die Ethernet-Schnittstelle von Arduino ist alles andere als stabil. Maximal 4 Sockets, Verbindungen, die nicht sauber getrennt werden, Bugs im Firmwarecode&#8230; Es wurde einige male <a href="http://www.flickr.com/photos/jwaibel/5465710616/in/pool-75696847@N00/">spät am Abend</a>, und ich habe etliche Möglichkeiten durchprobiert. Die Schnittstelle stürzte nach ca. 1h immer wieder ab.</p><p>Die Lösung des Problems ist dieser Dreizeiler:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/02/client_stop.png" alt="" title="client_stop" width="182" height="44" class="alignnone size-full wp-image-10783" /></p><p>Heisst soviel wie: „Solange du verbunden bist, trenne die Verbindung!“.<br /> 3 Zeilen Code, und der Sauhund läuft stabil. Endlich.</p><p>Netter Nebeneffekt: Ich kann aus den gesammelten Daten auch schöne <a href="http://de.wikipedia.org/wiki/RRDtool">RRD-Diagrämmli</a> erstellen:</p><p><a href="http://scratchbook.ch/wp-content/uploads/2011/02/noise-24h-small.png"><img src="http://scratchbook.ch/wp-content/uploads/2011/02/noise-24h-small-618x92.png" alt="" title="noise-24h-small" width="618" height="92" class="alignnone size-large wp-image-10789" /></a><br /> ￼<br /> Das war der Geräuschpegel von gestern. Um 6:30 kam die Putzfrau mit dem lauten Staubsauger. „Ob das ein Alkoholtest sei, wenn ich beim Dezibert ins Mikrofon blase&#8230;“ &#8211; Nein, das Teil misst nur die Lautstärke. Unruhe am Morgen, Mittag&#8230; Und grosse Diskussionen um 17:30.</p><p>Interessant, was so scheinbar harmlose Daten wie „Lautstärke über die Zeit“ plötzlich aussagen können&#8230;</p><p><strong>Links:</strong><br /> <a href="http://lab.namics.com/dezigraph/">Der Graph von Dezibert</a><br /> <a href="http://lab.namics.com/dezigraph/rrdstats/noise-12h-small.png">RRD-Diagramm der letzten 12h</a> (stündlich aktualisiert)</p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2011/02/25/der-graph-von-dezibert/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Intergalaktischer Informationsbegleiter</title><link>http://scratchbook.ch/2011/02/03/intergalaktischer-informationsbegleiter/</link> <comments>http://scratchbook.ch/2011/02/03/intergalaktischer-informationsbegleiter/#comments</comments> <pubDate>Thu, 03 Feb 2011 20:28:37 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Bücher]]></category> <category><![CDATA[Informatik]]></category> <category><![CDATA[Nützlich]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=10627</guid> <description><![CDATA[&#8230;für Datenreisende. Was: Jediritter Infopad. Reiseführer durch die Galaxis. Personal Messenger Pad. Wie: Zugriff auf das globale Datennetz Wann: Immer dabei bei wichtigen Missionen Kennt ihr die? Diese Geräte, die Helden begleiten. In allen Filmen mit viel Raumschiff und Reisen durch&#8217;s Universum. Sie werden eingesetzt als Kommunikationsmittel, Notizblock, allwissendes Mobilterminal, Sonderbare-Steine-Analysegerät und scheinen niemals Strom [...]]]></description> <content:encoded><![CDATA[<p>&#8230;für Datenreisende.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/02/Kindle3-618x705.jpg" alt="" title="Kindle3" width="618" height="705" class="alignnone size-large wp-image-10634" /></p><p><strong>Was:</strong> Jediritter Infopad. Reiseführer durch die Galaxis. Personal Messenger Pad.<br /> <strong>Wie:</strong> Zugriff auf das globale Datennetz<br /> <strong>Wann:</strong> Immer dabei bei wichtigen Missionen</p><p>Kennt ihr die? Diese Geräte, die Helden begleiten. In allen Filmen mit viel <em>Raumschiff</em> und <em>Reisen durch&#8217;s Universum</em>. Sie werden eingesetzt als Kommunikationsmittel, Notizblock, allwissendes Mobilterminal, Sonderbare-Steine-Analysegerät und scheinen niemals Strom zu verbrauchen.</p><p>Und wisst ihr was? So. Was. Gibts. Wirklich. !</p><p>Es heisst &#8220;<a href="http://www.amazon.com/Kindle-Wireless-Reader-3G-Wifi-Graphite/dp/B002FQJT3Q">Kindle</a>&#8220;, kommt von Amazon, und war ursprünglich dazu gedacht, Bücher zu lesen.</p><p>Der Clou ist aber: Mit dabei ist, als &#8220;Experimental Feature&#8221;, ein vollwertiger Webkit-Browser mit Javascript Unterstützung.</p><p>Da ein Webbrowser alleine aber noch nicht sonderlich nützlich ist, gibt es gratis Internet dazu.<br /> Und zwar weltweit. Ohne Abogebühr.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/02/DSC04562-618x463.jpg" alt="" title="DSC04562" width="618" height="463" class="alignnone size-large wp-image-10643" /></p><p>Jaaa, da staunst Du, he? Wusste ich nämlich auch nicht. Wissen die wenigsten&#8230; Weil das weltweite gratis Internet über 3G ist ein &#8220;nettes Nebenprodukt&#8221;&#8230;</p><p>Und wie lange der Akku wohl hält? Ein paar Stunden? Tage? Wochen? Ja genau. Ein paar Wochen. Da staunst Du grad nochmals, gell?</p><p>Warum das so ist: Das Display hat weder eine störende Hintergrundbeleuchtung, noch Pixel. Das Zauberwort heisst &#8220;E Ink&#8221; &#8211; elektronische Tinte. Braucht nur Strom beim &#8220;Umblättern&#8221;.</p><p>Suchbild; finde den Pixel:<br /> <img src="http://scratchbook.ch/wp-content/uploads/2011/02/DSC04560-300x225.jpg" alt="" title="DSC04560" width="300" height="225" class="alignnone size-medium wp-image-10640" /></p><p>im Gegensatz zu euren tollen iPhones, die nach zwei Minuten schon &#8220;Akku! Akku! Akku!&#8221; schreien, kann man dieses schicke Gerät zu recht als <em>Mobile</em> bezeichnen. Damit kann ich locker 2 Wochen irgendwo in die Türkei in die Flugferien und damit auf Wettersites zugreifen.</p><p>Hach &#8211; dieses Gerät versprüht mit seinem Monochrom-Display so einen Analog-Charme. Ich mag so unscheinbar altertümlich daherkommende Sachen, die aber hochwertigen futuristischen Schnickschnack eingebaut haben.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/02/DSC04559-618x463.jpg" alt="" title="DSC04559" width="618" height="463" class="alignnone size-large wp-image-10667" /></p><p>&#8220;Yes, it&#8217;s a Macintosh&#8221; war der erste Gedanke, der mir durch den Kopf schoss.</p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2011/02/03/intergalaktischer-informationsbegleiter/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>The miserable programmer paradox</title><link>http://scratchbook.ch/2011/01/31/the-miserable-programmer-paradox/</link> <comments>http://scratchbook.ch/2011/01/31/the-miserable-programmer-paradox/#comments</comments> <pubDate>Mon, 31 Jan 2011 18:07:41 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Informatik]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=10501</guid> <description><![CDATA[(hier gefunden) What I call “the miserable programmer paradox” states the following: “A good programmer will spend most of his time doing work that he hates, using tools and technologies that he also hates.” This is a paradox in the sense that it’s a counterintuitive result; you’d expect that the bad programmers would spend their [...]]]></description> <content:encoded><![CDATA[<p><em>(<a href="http://blog.garlicsim.org/post/2840398276/the-miserable-programmer-paradox">hier</a> gefunden)</em></p><p>What I call “the miserable programmer paradox” states the following:</p><blockquote><p>“A good programmer will spend most of his time doing work that he hates, using tools and technologies that he also hates.”</p></blockquote><p>This is a paradox in the sense that it’s a counterintuitive result; you’d expect that the bad programmers would spend their time with crappy technologies, while the excellent programmers would spend their time with super-awesome technologies. Right?</p><p><span id="more-10501"></span>I noticed this paradox in practice, and only later did I realize why this is happening.</p><h2>What kind of work does a programmer despise?</h2><p>This will not be news to experienced programmers, but I want to explain this to people who are not programmers:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/01/code-small-300x224.jpg" alt="" title="code small" width="300" height="224" class="alignright size-medium wp-image-10584" />A good programmer despises doing any work that could be automated. If a programmer is made to do work that a machine (usually a computer) can do, he becomes very annoyed. A programmer’s aspiration is to teach the machine to do as much of his job as possible so that he’ll have to do only the bits of work that cannot be done by the machine.</p><p>This is a very healthy instinct for a programmer to have.</p><p>Simple example of work that needs to be automated: Imagine the programmer is browsing his code file which is 1000 lines long. He wants to get to line 791 because there’s supposed to be a bug there that he needs to fix. But his text editor is at line 30. Most human beings would simply scroll down the file until they pinpoint the wanted line. But a good programmer will not stand something like this. He will work in an editor which lets him jump to a specified line by number. For example, “Ctrl-L -> 791 -> Enter” will do the job in the editor I use.</p><p>That was a simple example; there are more complex ones.</p><p>The reason that a good programmer hates doing repetitive work is that all these little tasks interrupt the programmer’s train of thought. A train of thought is a fragile thing; Once your train of thought is interrupted, it takes a while to get it started again. If you have to interrupt it every 5 minutes to do some manual task, then your train of thought won’t get anywhere.</p><p>In his day-to-day work, a programmer needs to do various kinds of work with various technologies using various tools. The programmer enjoys the kind of work that has relatively little “manual labor” in it, and he despises the work that has a lot of manual labor to it. He loves the technologies and tools that require little manual labor (Python, Django and git would be a few of my examples), and hates the technologies that require a lot of manual labor. (I won’t give examples on that one <img src='http://scratchbook.ch/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p><p>But he still has to work with both the fun automatic technologies and the annoying, manual-labor-requiring technologies. The good programmer tries to cut as many bad technologies as possible out of his life, but he will always have some bad technologies that he simply can’t get away from. Sometimes it’s because they’re needed for the kind of software that he wants to produce; for example, every programmer working in web has to deal with HTML and its many annoying behaviors. Sometimes bad technologies are necessary simply because the masses of people are still using them, and the programmer needs to be able to work together with them.</p><h2>Most of the time is spent on the bad technologies</h2><p>From this point, understanding why the paradox happens is quite straightforward. The bad technologies take big chunks of time and concentration. The good technologies take little time and concentration. The programmer has a fixed amount of time and concentration that he can give every day. He must give a bigger piece of the pie to the bad technologies, simply because they require more. In other words, he ends up spending most of his days working with tools and technologies that he hates. Therefore, the good programmer is made miserable.</p><p>I wish I could end this essay with some sort of moral, or an idea for solving this problem, but there’s not much. All we can do is try to cut as many bad technologies as possible out of our lives, and just tolerate the rest.</p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2011/01/31/the-miserable-programmer-paradox/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Sichere Authentifizierung mit Javascript</title><link>http://scratchbook.ch/2011/01/30/sichere-authentifizierung-mit-javascript/</link> <comments>http://scratchbook.ch/2011/01/30/sichere-authentifizierung-mit-javascript/#comments</comments> <pubDate>Sun, 30 Jan 2011 00:06:32 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Informatik]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=10523</guid> <description><![CDATA[Nightly hacking. Und zwar: Es gibt soo viele Seiten, wo man sich nicht über eine verschlüsselte Verbindung anmeldet. Tja, was tun, damit das Passwort nicht unverschlüsselt übertragen wird und in die Nase eines Netzwerkschnüfflers gerät? Wir brauchen ein Taschentuch. Und wickeln das Passwort dort drin ein. Der Server generiert ein Taschentuch. In diesem Fall eine [...]]]></description> <content:encoded><![CDATA[<p>Nightly hacking. Und zwar:</p><p>Es gibt soo viele Seiten, wo man sich nicht über eine verschlüsselte Verbindung anmeldet.<br /> Tja, was tun, damit das Passwort nicht unverschlüsselt übertragen wird und in die Nase eines Netzwerkschnüfflers gerät?</p><p>Wir brauchen ein Taschentuch. Und wickeln das Passwort dort drin ein.</p><p>Der Server generiert ein Taschentuch. In diesem Fall eine Zufallszahl:</p><div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'challenge'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">sha1</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">mt_rand</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1000000</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">mktime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>Das schicken wir an den Browser. Sieht dann so aus:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/01/Bildschirmfoto-2011-01-29-um-23.59.33.png" alt="" title="Bildschirmfoto 2011-01-29 um 23.59.33" width="498" height="256" class="alignnone size-full wp-image-10534" /></p><p>Das Chrüsimüsi bei &#8220;Server challenge&#8221; ist unser Taschentuch. Das Verfahren heisst nämlich &#8220;<a href="http://de.wikipedia.org/wiki/Challenge-Response-Authentifizierung">Challenge-Response</a>&#8220;.</p><p>Jetzt tippe ich mein Passwort ein. Vor dem Absenden wird mein Passwort zusammen mit dem Taschentuch verchrügelet und erst dann an den Server geschickt:</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> sha1 <span style="color: #339933;">=</span> hex_sha1<span style="color: #009900;">&#40;</span>passval <span style="color: #339933;">+</span> challenge<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p><img src="http://scratchbook.ch/wp-content/uploads/2011/01/Bildschirmfoto-2011-01-30-um-00.00.39.png" alt="" title="Bildschirmfoto 2011-01-30 um 00.00.39" width="490" height="290" class="alignnone size-full wp-image-10539" /></p><p>Das da unten; ja genau da wo es heisst: &#8220;[password] =>&#8221; &#8211; dort ist mein Passwort im Taschentuch drin. Dieses Gstellaasch wird an den Server geschickt.</p><p>Dort angekommen, macht der Server das gleiche. Er wickelt das Passwort aus der Datenbank in das gleiche Taschentuch ein und vergleicht sein Ergebnis mit dem vom Browser erhaltenen:</p><div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">sha1</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$db_password</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'challenge'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> 
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Logged in. &lt;a href=&quot;&quot;&gt;Reload&lt;/a&gt;'</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">session_destroy</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//wichtig, neues Taschentuch generieren #replay-attacks</span>
<span style="color: #009900;">&#125;</span></pre></div></div><p>Sind die beiden Ergebnisse identisch, war das Passwort richtig.</p><h2>Sicherheitsmassnahme</h2><p>Für den Fall, dass ich in meinem Browser aus Versehen kein Javascript aktiviert habe, und das Passwort nicht per Taschentuch durch&#8217;s Netzwerk reisen würde, sondern im Klartext, stelle ich das Passwortfeld als Platzhalter dar, welcher dann durch ein Eingabefeld ersetzt wird, wenn Javascript aktiviert ist.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2011/01/Bildschirmfoto-2011-01-30-um-00.00.01-618x217.png" alt="" title="Bildschirmfoto 2011-01-30 um 00.00.01" width="618" height="217" class="alignnone size-large wp-image-10550" /></p><p>Damit kann ich gar nicht erst ein Passwort eintippen&#8230;</p><p>So. Die Taschentuch-einwickel-Funktion (aka SHA1) habe ich <a href="http://pajhome.org.uk/crypt/md5/">hier</a> gefunden.<br /> Ausprobieren könnt ihr&#8217;s da: <a href="http://scratchbook.ch/js_challenge-response/">http://scratchbook.ch/js_challenge-response/</a><br /> Den Code gibt&#8217;s auf Github: <a href="https://github.com/claudehohl/js_challenge-response/blob/master/index.php">https://github.com/claudehohl/js_challenge-response/blob/master/index.php</a></p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2011/01/30/sichere-authentifizierung-mit-javascript/feed/</wfw:commentRss> <slash:comments>15</slash:comments> </item> <item><title>Fangversuch</title><link>http://scratchbook.ch/2011/01/19/fangversuch/</link> <comments>http://scratchbook.ch/2011/01/19/fangversuch/#comments</comments> <pubDate>Wed, 19 Jan 2011 15:12:17 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=10430</guid> <description><![CDATA[Hab&#8217; endlich begriffen, was der Sinn von &#8220;try-catch&#8221;-Konstrukten ist. iWillFail&#40;&#41;; &#160; iAmClean&#40;&#41;; Wenn es tschätteret bei der iWillFail()-Funktion, dann kommt ein Fehler, das Programm stürzt ab. Mir egal, dachte ich früher; wenn ein Fehler passiert, dann passiert eben ein Fehler &#8211; ob ich den jetzt noch Abfange ist doch egal&#8230; Es brätscht so oder so. [...]]]></description> <content:encoded><![CDATA[<p>Hab&#8217; endlich begriffen, was der Sinn von &#8220;try-catch&#8221;-Konstrukten ist.</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">iWillFail<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
iAmClean<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>Wenn es tschätteret bei der iWillFail()-Funktion, dann kommt ein Fehler, das Programm stürzt ab. Mir egal, dachte ich früher; wenn ein Fehler passiert, dann passiert eben ein Fehler &#8211; ob ich den jetzt noch Abfange ist doch egal&#8230; Es brätscht so oder so.</p><p>Nun &#8211; nicht ganz <img src='http://scratchbook.ch/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Bei obigem Code rumplet es, ja. Und das Programm stürzt ab, genau.<br /> iAmClean() wird nicht mehr ausgeführt.</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
	iWillFail<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
iAmClean<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>Hier wird das iWillFail() abgefangen. Es brätscht. &#8220;Hmm, dehaut&#8221;, sagt sich das Programm und läuft weiter&#8230;<br /> iAmClean() wird ausgeführt.</p><p> <img src='http://scratchbook.ch/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p><p>Nützlich bei externen Programmen wie z.B. Tracking-Skripts, wo man nie genau weiss, ob die gut laufen oder nicht. Falls nicht, läuft wenigstens der Rest weiter und es reisst nicht gleich das ganze Programm in den Abgrund&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2011/01/19/fangversuch/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Varnish-Cache &#8211; einer für alle</title><link>http://scratchbook.ch/2010/12/17/varnish-cache-einer-fur-alle/</link> <comments>http://scratchbook.ch/2010/12/17/varnish-cache-einer-fur-alle/#comments</comments> <pubDate>Fri, 17 Dec 2010 10:53:11 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Informatik]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=10124</guid> <description><![CDATA[Kunde möchte eine voraussichtlich stark frequentierte Seite mit Typo3 bei sich hosten.  Erwartet werden 5000 Benutzer gleichzeitig – die geschätzt alle 10 Sekunden klicken. Ergibt 500 Requests/s. Wir sollen die Architektur vorschlagen. Mein Metier. Nach einer zweiwöchigen Evaluation kristallisierte sich Nginx mit FastCGI als Webserver heraus, weil der FastCGI Anfragen cachen kann und somit auf [...]]]></description> <content:encoded><![CDATA[<p>Kunde möchte eine voraussichtlich stark frequentierte Seite mit Typo3 bei sich hosten.  Erwartet werden 5000 Benutzer gleichzeitig – die geschätzt alle 10 Sekunden klicken. Ergibt 500 Requests/s. Wir sollen die Architektur vorschlagen.</p><p>Mein Metier. Nach einer zweiwöchigen Evaluation <a href="http://scratchbook.ch/2010/11/06/zehntausend-anfragen-pro-sekunde/">kristallisierte sich Nginx mit FastCGI als Webserver heraus</a>, weil der FastCGI Anfragen cachen kann und somit auf eine tolle Geschwindigkeit kommt.</p><p>Das Problem ist nicht der Cache an sich. Das Problem ist, wie Nginx damit umgeht, wenn der Cache verfällt.</p><p>Der Cache hat ein Ablaufdatum, eine Time-To-Live, TTL. Läuft diese ab, muss das HTML vom Backend neu geholt werden. Und wenn der Cache bei 500 gleichzeitigen Anfragen pro Sekunde abläuft, muss das HTML 500 mal gleichzeitig vom Backend geholt werden. Schönä!</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/12/face-down.png" alt="" title="face down" width="362" height="272" class="alignnone size-full wp-image-10128" /></p><p><span id="more-10124"></span>Ich habe verschiedene Reverse-Proxies ausprobiert. Unter anderem den <a href="http://www.varnish-cache.org/">Varnish-Cache</a>. Und der hat eine Besonderheit, die ich sonst bei keinem Cache finde:</p><blockquote><p>When several clients are requesting the same page Varnish will send one request to the backend and place the others on hold while fetching one copy from the back end. (<a href="http://www.varnish-cache.org/docs/2.1/tutorial/handling_misbehaving_servers.html">Source</a>)</p></blockquote><p><img src="http://scratchbook.ch/wp-content/uploads/2010/12/face-up.png" alt="" title="face up" width="519" height="275" class="alignnone size-full wp-image-10132" /></p><p>Ich beglücke den Webserver mit 5000 Benutzern. Gleichzeitig.</p><p>5000 Benutzer prasseln auf den Server. Nach einer Minute wird _eine_ Anfrage an den Webserver geschickt &#8211; die 5000 Benutzer werden weiterhin mit dem „alten“ Inhalt bedient.<br /> Die Antwort kommt, der Cache wird erneuert und von jetzt an wird der neue Inhalt an die 5000 Benutzer ausgeliefert.</p><p>So sieht die Aktivität auf dem Server aus:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/12/varnish_protects.png" alt="" title="varnish_protects" width="248" height="75" class="alignnone size-full wp-image-10134" /></p><p>Genau ein httpd ist am schwitzen, und nicht fünfzig. Und der varnishd tobt sich aus&#8230;</p><p>So sieht meine Netzwerkauslastung aus:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/12/bw.png" alt="" title="bw" width="141" height="29" class="alignnone size-full wp-image-10135" /></p><p>I can haz more bandwidth?</p><p>Zwei Proxysniffer im Verbund auf Vollgas. Schampar schade dass unser Netzwerk nicht mehr als 800MBit hergeben will:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/12/AnalyseLoadtestResultTotalNetworkImageWeblet-618x316.gif" alt="" title="AnalyseLoadtestResultTotalNetworkImageWeblet" width="618" height="316" class="alignnone size-large wp-image-10137" /></p><p>Ça fait rock.</p><p>Und der Varnish lässt sich unendlich flexibel konfigurieren. Ich kann z.B. anhand der URL Anfragen auf unterschiedliche Backends leiten, mehrere Backends mit einer gewichteten Lastverteilung aufstellen und und und&#8230;</p><p>Ein Beispiel.</p><pre>
backend crappy_j2ee_enterprise_grüselapp {
    .host = "server.example.com";
    .first_byte_timeout = 5s;
    .max_connections = 10;
    .probe = {
        .url = "/check.jsp";
        .interval = 5s;
        .timeout = 1s;
        .window = 5;
        .threshold = 3;
    }
}
</pre><p></p><p>Das Backend wird alle 5 Sekunden vom Varnish angefragt (interval). Von 5 Anfragen (window) müssen 3 korrekt sein (threshold) und unter 1s antworten (timeout).</p><p>Ist dies nicht der Fall, bekommt das Backend den Status „unhealthy“ verpasst. Jetzt liegt es an der Konfiguration, was jetzt passiert.</p><pre>
if (! req.backend.healthy) {
    set req.grace = 30d;
} else {
    set req.grace = 1m;
}
</pre><p></p><p>Ist das Backend nicht verfügbar, wird es für 30 Tage nicht mehr angefragt bei einem User-Request, auch wenn die TTL für die Seite abgelaufen ist. Der Health-Check läuft normal weiter.</p><pre>
#renew content every minute
set beresp.ttl = 1m;

#save content for 30 days - if backend fails
set beresp.grace = 30d;
</pre><p></p><p>Nach einer Minute wird der Webserver nach neuen Inhalten abgefragt. Die Antwort wird 30 Tage lang gespeichert &#8211; sollte der Webserver abliegen, kann die Website noch 30 Tage lang von dieser Notration überleben.</p><p>Und das ist toll &#8211; ich kann meine Apache‘s stoppen. Ein paar Benutzer haben Pech &#8211; in den maximal 5 Sekunden, bis Varnish das merkt und das Backend als ungesund deklariert. Aber dann läuft alles wie gewohnt weiter. Sobald die Webserver wieder da sind, werden die Cache-Inhalte erneuert.</p><p>Voraussetzung für den ganzen Gspass ist natürlich eine statische Seite ohne personalisierte Inhalte.</p><p>Man könnte es noch auf die Spitze treiben mit dem Caching und für <a href="http://www.varnish-cache.org/trac/wiki/ESIfeatures">verschiedene Inhalte eigene TTLs</a> definieren:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/12/esi.png" alt="" title="esi" width="236" height="182" class="alignnone size-full wp-image-10148" /></p><p>Did you know? Wikileaks setzt auch auf Varnish:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/12/varnishleaks.png" alt="" title="varnishleaks" width="368" height="203" class="alignnone size-full wp-image-10150" /></p><p>Ich weiss nicht wie viel Traffic Varnish wirklich verarbeiten kann. Aber ganz offensichtlich mehr als 10 Gigabit:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/12/Bildschirmfoto-2010-12-17-um-10.58.07.png" alt="" title="Bildschirmfoto 2010-12-17 um 10.58.07" width="536" height="199" class="alignnone size-full wp-image-10151" /><br /> <a href="http://twitter.com/wikileaks/status/9609091915718656">http://twitter.com/wikileaks/status/9609091915718656</a></p><p><a href="http://www.varnish-cache.org/">http://www.varnish-cache.org/</a></p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2010/12/17/varnish-cache-einer-fur-alle/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Das Internet ist dezentral</title><link>http://scratchbook.ch/2010/12/17/das-internet-ist-dezentral/</link> <comments>http://scratchbook.ch/2010/12/17/das-internet-ist-dezentral/#comments</comments> <pubDate>Thu, 16 Dec 2010 23:16:29 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Informatik]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=10102</guid> <description><![CDATA[&#8230;und so funktioniert es auch am besten. Die Regierungen sperren und zensieren; Wikieaks, Paypal, Mastercard, etc. Es verschwinden immer wieder Videos von Youtube, aufgrund von &#8220;Urheberrechtsverletzungen&#8221;. Der Bookmarkdienst del.icio.us wird abgeschaltet. Gmail ist für einige Benutzer länger nicht erreichbar. So. Geht jetzt auch den letzten Verfechtern von Gmail, Twitter und Facebook ein Lichtlein auf? Wer [...]]]></description> <content:encoded><![CDATA[<p><img src="http://scratchbook.ch/wp-content/uploads/2010/12/dezentral.gif" alt="" title="dezentral" width="245" height="128" class="alignnone size-full wp-image-10104" /></p><p>&#8230;und so funktioniert es auch am besten.</p><p>Die Regierungen sperren und zensieren; Wikieaks, Paypal, Mastercard, etc.<br /> Es verschwinden immer wieder Videos von Youtube, aufgrund von &#8220;Urheberrechtsverletzungen&#8221;.<br /> Der Bookmarkdienst <a href="http://techcrunch.com/2010/12/16/is-yahoo-shutting-down-del-icio-us/">del.icio.us wird abgeschaltet</a>.<br /> Gmail ist für einige Benutzer <a href="http://twitter.com/ernscht/status/15170308109508608">länger nicht erreichbar</a>.</p><p>So. Geht jetzt auch den letzten Verfechtern von Gmail, Twitter und Facebook ein Lichtlein auf?</p><p>Wer Dienste von grossen Firmen nutzt, begibt sich in Abhängigkeit. Das Internet funktioniert anders &#8211; verteilt, dezentral, ausfallsicher und nicht zensierbar. So muss es sein!</p><p>Es gibt Dienste, die sind von Anfang an für das Internet entworfen worden und funktionieren heute noch wunderbar &#8211; E-Mail, IRC, Jabber, oder ganz normale Webseiten. Wir sollten wieder dort zurückfinden; dort wo jeder sein eigener Dienst ist und die Hoheit über seine Daten hat. Ich sehe erfreuliche Entwicklungen in diese Richtung &#8211; z.B. <a href="http://status.net/">Status.net</a> oder <a href="https://joindiaspora.com/">Diaspora</a>. Und dass man in einem verteilten Dienstewirrwarr trotzdem seine Zugangsdaten einheitlich verwalten kann, beweist <a href="http://de.wikipedia.org/wiki/OpenID">OpenID</a>.</p><p>Ich nutze <a href="http://twitter.com/claudehohl">Twitter</a>, <a href="https://github.com/claudehohl">Github</a> und Dienste von Internetfirmen als Ergänzung, um Informationen zu verbreiten, aber niemals als einzigen zentralen Informationsknoten.</p><p>Die Ereignisse der vergangenen Tage haben gezeigt: Dezentrale, offene Dienste funktionieren am besten und lassen sich schwer abschalten.</p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2010/12/17/das-internet-ist-dezentral/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Ben the Bodyguard</title><link>http://scratchbook.ch/2010/12/02/ben-the-bodyguard/</link> <comments>http://scratchbook.ch/2010/12/02/ben-the-bodyguard/#comments</comments> <pubDate>Thu, 02 Dec 2010 22:02:06 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=9943</guid> <description><![CDATA[Mist. Ich hab&#8217; grad ganz St. Gallen geweckt. Spontaner Euphorieschrei. Grund dafür war DIESE GEILE HOMEPAGE &#8211; wie mit einem simplen Scroller eine ganze Geschichte erzählt wird! Fasst mal dort die Scrollbar an und scrollt ganz langsam nach unten&#8230;]]></description> <content:encoded><![CDATA[<p><img src="http://scratchbook.ch/wp-content/uploads/2010/12/Bildschirmfoto-2010-12-02-um-22.54.16.jpg" alt="" title="Bildschirmfoto 2010-12-02 um 22.54.16" width="526" height="362" class="alignnone size-full wp-image-9944" /></p><p>Mist. Ich hab&#8217; grad ganz St. Gallen geweckt. Spontaner Euphorieschrei.</p><p>Grund dafür war <a href="http://benthebodyguard.com/">DIESE GEILE HOMEPAGE</a> &#8211; wie mit einem simplen Scroller eine ganze Geschichte erzählt wird!</p><p>Fasst mal dort die Scrollbar an und scrollt ganz langsam nach unten&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2010/12/02/ben-the-bodyguard/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Gesichtserkennung &#8211; mit Javascript :)</title><link>http://scratchbook.ch/2010/11/01/gesichtserkennung-mit-javascript/</link> <comments>http://scratchbook.ch/2010/11/01/gesichtserkennung-mit-javascript/#comments</comments> <pubDate>Mon, 01 Nov 2010 21:33:05 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Informatik]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=9587</guid> <description><![CDATA[(Demo) (Demo) &#8230;oder sucht euch gleich selbst ein Gesicht aus. Beeindruckend, was man mittlerweile so machen kann. Soll niemand mehr behaupten, Javascript sei keine reinrassige Programmiersprache!]]></description> <content:encoded><![CDATA[<p><img src="http://scratchbook.ch/wp-content/uploads/2010/11/Bildschirmfoto-2010-11-01-um-22.16.37.jpg" alt="" title="Bildschirmfoto 2010-11-01 um 22.16.37" width="499" height="578" class="alignnone size-full wp-image-9588" /><br /> (<a href="http://liuliu.me/detect/detect.html?url=http://www.spreadfirefox.com/files/images/brendan-eich.preview.jpg#http%3A%2F%2Fservice.bz-berlin.de%2Fbzblogs%2Fiphoneblog%2Ffiles%2F2010%2F04%2Ffake_steve_jobs.jpg">Demo</a>)</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/11/Bildschirmfoto-2010-11-01-um-22.15.50.jpg" alt="" title="Bildschirmfoto 2010-11-01 um 22.15.50" width="613" height="235" class="alignnone size-full wp-image-9589" /><br /> (<a href="http://liuliu.me/detect/detect.html?url=http://www.spreadfirefox.com/files/images/brendan-eich.preview.jpg#http%3A%2F%2Fwww.fifa4fans.de%2Fdownloads%2Fscreens9%2Fduong_total_faces_pack1.jpg">Demo</a>)</p><p>&#8230;oder <a href="http://www.google.ch/images?q=faces">sucht euch gleich selbst ein Gesicht aus</a>.</p><p>Beeindruckend, was man mittlerweile so machen kann. Soll niemand mehr behaupten, Javascript sei keine reinrassige Programmiersprache!</p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2010/11/01/gesichtserkennung-mit-javascript/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Silverstripe &#8211; Content management on Rails</title><link>http://scratchbook.ch/2010/10/01/silverstripe-content-management-on-rails/</link> <comments>http://scratchbook.ch/2010/10/01/silverstripe-content-management-on-rails/#comments</comments> <pubDate>Thu, 30 Sep 2010 23:12:40 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=8978</guid> <description><![CDATA[Immer wieder bin ich über dieses &#8220;Silverstripe&#8221; gestolpert. Es liess mir einfach keine Ruhe. Aber jetzt hab&#8217; ich mir mal Zeit genommen und es genauer angeschaut. Und ich bin hin und weg! Saubere Architektur, die vollen Nutzen aus OOP und Vererbung zieht; eine tolle Templating-Engine, welche die Templates schlank und wartbar hält; ein Backend, welches [...]]]></description> <content:encoded><![CDATA[<p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/silverstripe_logo.gif" alt="" title="silverstripe_logo" width="150" height="146" class="alignnone size-full wp-image-9015" /></p><p>Immer wieder bin ich über dieses &#8220;<a target="_blank" href="http://silverstripe.org/">Silverstripe</a>&#8221; gestolpert. Es liess mir einfach keine Ruhe. Aber jetzt hab&#8217; ich mir mal Zeit genommen und es genauer angeschaut. Und ich bin hin und weg!</p><p>Saubere Architektur, die vollen Nutzen aus OOP und Vererbung zieht; eine tolle Templating-Engine, welche die Templates schlank und wartbar hält; ein Backend, welches übersichtlich und toll zu bedienen ist und sich sehr einfach erweitern lässt; Security built-in; ein ORM; und mit ein paar Zeilen mehr eine REST-API&#8230; Und all diese Komponenten sind perfekt aufeinander abgestimmt und integriert. Selbstverständlich werden alle Inhalte versioniert und mit einem Zusatzmodul können sie sogar zeitlich gesteuert werden.<br /> Und überhaupt und sowieso &#8211; genau. It&#8217;s sooo marvellous &#8211; I&#8217;m blown away!</p><p><span id="more-8978"></span>Ich gebe mal meine Eindrücke weiter. Wir fangen an beim</p><h2>Aufbau</h2><p>Silverstripe setzt stark auf Seiten. Eine Seite kann von einem bestimmten Typ sein, also ein bestimmtes Verhalten haben, z.B. ein Seitentyp &#8220;Forum&#8221; oder &#8220;News&#8221;.</p><p>Jeder Seitentyp hat seinen Controller/Model, mit welchem man&#8230; ALLES steuern kann <img src='http://scratchbook.ch/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br /> Wir werden gleich selber einen Seitentyp erstellen.</p><p>Im Backend schaut das ganze so aus:</p><p><a href="http://scratchbook.ch/wp-content/uploads/2010/09/backend.jpg"><img src="http://scratchbook.ch/wp-content/uploads/2010/09/backend.jpg" alt="" title="backend" class="alignnone size-full wp-image-8988" /></a></p><p>Standardeinstellungen. Relativ schlank und schön übersichtlich, finde ich. Jede Seite hat die üblichen CMS-Attribute wie Navigationsname, Metatags, Zugriffssteuerungen etc.<br /> Man kann Links auf andere interne Seiten erstellen oder auf externe, es können eigene Textstile definiert werden, welche dann mit einer CSS-Klasse versehen werden, und man hat so die üblichen Formatierungsoptionen. In der Navigation links sind die Seiten per Drag &#038; Drop verschiebbar.<br /> Die weiteren Sektionen wie <em>Kommentare</em> oder <em>Berichte</em> sind für alle Nicht-Seiten Operationen. Und falls man ein eigenes Datenmodell hat, lässt sich leicht eine Sektion hinzufügen, wo man diese Daten administrieren kann und gleich noch ein CSV-Import mitgeliefert bekommt.</p><p>Ich kann für jeden Seitentyp zusätzliche Attribute im Backend anzeigen.<br /> So hat man schwuppsdiwupps ein neues Tab <em>Sidebar</em> erstellt, wo vielleicht Teaser angezeigt werden, oder man hat ein Tab <em>Right Column</em>, wo diese Teaser ein- oder ausgeblendet werden können&#8230;</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/sapphire-webforms.jpg" alt="" title="sapphire-webforms" width="500" height="293" class="alignnone size-full wp-image-8990" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/cms-tailor_made.jpg" alt="" title="cms-tailor_made" width="500" height="293" class="alignnone size-full wp-image-9001" /></p><p>Soviel zur Administration von Inhalten.</p><h2>Templates</h2><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/subtemplates-diagram.jpg" alt="" title="subtemplates-diagram" class="alignnone size-full wp-image-8995" /></p><blockquote><p>SilverStripe first searches for a template in the <em>/templates</em> folder. Since there is no <em>HomePage.ss</em>, it will use the Page.ss for both <em>Page</em> and <em>HomePage</em> page types. When it comes across the <em>$Layout</em> tag, it will then descend into the <em>/templates/Layout</em> folder, and will use <em>Page.ss</em> for the <em>Page</em> page type, and <em>HomePage.ss</em> for the <em>HomePage</em> page type.</p></blockquote><p>Die Templating-Engine ist cool. Es gibt bereits eine Menge vordefinierter Variablen und Kontrollstrukturen; aber ggf. kann man auch seine Eigenen im Controller definieren.</p><p>Auch bei Silverstripe gilt:</p><blockquote><p>Convention over Configuration.</p></blockquote><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/ordnerstruktur.jpg" alt="" title="ordnerstruktur" width="225" height="376" class="alignnone size-full wp-image-9005" /></p><p>Ich kann Templates beliebig unterteilen und anzeigen.<br /> Beispiel: Falls ich auf der 2. Navigationsebene bin, bitte Brotkrümelspur streuen:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/breadcrumb.jpg" alt="" title="breadcrumb" width="254" height="61" class="alignnone size-full wp-image-9008" /></p><p>Mehr über Templates in der Silverstripe-Doku: <a target="_blank" href="http://doc.silverstripe.org/templates">http://doc.silverstripe.org/templates</a></p><h2>Wir machen einen Beispiel-Seitentyp: GooglemapPage</h2><p>Ich will auf einer Seite eine Karte anzeigen. Die Koordinaten sollen im Backend pflegbar sein.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/endergebnis.jpg" alt="" title="endergebnis" class="alignnone size-full wp-image-9017" /></p><h3>Controller</h3><p>Code und Templates sind strikt getrennt. Jetzt sind wir im Code-Ordner:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/code.jpg" alt="" title="code" width="216" height="164" class="alignnone size-full wp-image-9023" /></p><p>Ich erstelle einen neuen Seitentyp-Controller: <em>GooglemapPage</em>. Inhalt:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/Controller.jpg" alt="" title="Controller" class="alignnone size-full wp-image-9019" /></p><p>Aber schön langsam der Reihe nach.</p><h3>Datenbankschema</h3><p>Mein Seitentyp erbt von einer normalen Seite. Dort drin befinden sich Definitionen der Datenbankfelder und welche Felder im Backend wo angezeigt werden sollen.</p><p>Ich habe meine Datenbank mit <em>/dev/build?flush=1</em> initialisiert; und so die Datenbank für den neuen Seitentyp vorbereitet.</p><p>Mein Googlemap-Seitentyp hat zwei zusätzliche Felder:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/db-fields.jpg" alt="" title="db-fields" width="234" height="81" class="alignnone size-full wp-image-9025" /></p><p>Hmm, den Zoomlevel möchte ich auch noch einstellen können. Zeile hinzufügen:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/new_field.jpg" alt="" title="new_field" width="235" height="97" class="alignnone size-full wp-image-9064" /></p><p>Datenbank-Initialisierung (klick auf&#8217;s Bild für grössere Ansicht):</p><p><a href="http://scratchbook.ch/wp-content/uploads/2010/09/flush.jpg"><img src="http://scratchbook.ch/wp-content/uploads/2010/09/flush-161x300.jpg" alt="" title="flush" width="161" height="300" class="alignnone size-medium wp-image-9040" /></a></p><p>Und hier sieht man sehr schön: Das Feld Zoom wird beim Googlemap-Seitentyp hinzugefügt.</p><h3>Template</h3><p>Das Template ist einfach: Hinzu kommt ein <em>map_canvas</em>.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/map-template.jpg" alt="" title="map-template" width="258" height="129" class="alignnone size-full wp-image-9042" /></p><p>Dann folgt der <em>$Content</em>, das Kommentarformular und die Darstellung der Kommentare.<br /> Ja, es ist wirklich so einfach!</p><h3>Javascript/CSS</h3><p>Etwas was ich ganz geil gelöst finde. Die Jungs von Silverstripe haben ja sonst schon alles so perfekt durchdesignt, aber jetzt kommt der echte Knaller (für mich als Frontendler <img src='http://scratchbook.ch/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> )</p><p>Ich sage auf Controllerebene: Dieses und dieses Javascript brauch&#8217; ich für die Googlekarte. Aber bitte zusammengefasst und minifiziert.</p><p>Im Template sage ich: Willhaben Javascript. Die Konfiguration geschieht im Controller (siehe oben)</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/req-js.png" alt="" title="req-js" width="364" height="91" class="alignnone size-full wp-image-9031" /></p><p>Ist diese Zeile auskommentiert:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/devmode.png" alt="" title="devmode" width="338" height="47" class="alignnone size-full wp-image-9030" /></p><p>&#8230;sind wir auf der Live-Umgebung; Fehler werden nicht mehr angezeigt, und die Javascript/CSS-Dateien werden zusammengefasst:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/jsmin.png" alt="" title="jsmin" width="468" height="30" class="alignnone size-full wp-image-9032" /></p><p>Geil he! Da wird man ja ganz feucht&#8230;</p><p>Dieses Konzept bedeutet auch: Es wird nur so viel Javascript-Code geladen, wie auf einer Seite gebraucht wird.</p><p>Ich sag&#8217;s ja: DAS ist Silverstripe! Rockomatisch, episch, genialisch! *hehe*</p><p>Ach ja, die Variablen für die Karte. Sind in einem Javascript. Können wir aber auch via Controller übergeben. Is dat ned toll?</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/javascript-template.png" alt="" title="javascript-template" width="505" height="31" class="alignnone size-full wp-image-9035" /></p><h3>GooglemapPage Seitentyp im Backend</h3><p>So sieht der Googlemap-Seitentyp im Backend aus:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/pagetype.jpg" alt="" title="pagetype" class="alignnone size-full wp-image-9044" /></p><p>Koordinateneingabe. Die Labels heissen so wie die Datenbankfelder, können aber optional überschrieben werden.<br /> Dropdown: Von 1-19, merkt sich selbstverständlich den Wert in der DB (und nein, dieses Feld habe ich zugunsten der Übersicht im Screenshot oben vom Controller weggelassen).<br /> &#8220;So us freud&#8221; habe ich noch zwei eigene Textstile erstellt, nur um zu zeigen, dass Silverstripe auch das kann, was Livelink kann.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/new-type.jpg" alt="" title="new-type" width="303" height="166" class="alignnone size-full wp-image-9043" /></p><h2>Dev-Tools</h2><p>Stell dir vor, das Datenbankschema passt sich immer an dein Model, deine Seitentypen an.<br /> Und stell dir vor, du hast wirklich mal _viele_ Besucher auf deiner Seite &#8211; es gibt da ein StaticPublisher, welcher die Seiten als HTML rendert und statisch ablegt. Zur Not. Aber man kann auch <a target="_blank" href="http://doc.silverstripe.org/partial-caching">partiell cachen</a>.</p><p><a href="http://scratchbook.ch/wp-content/uploads/2010/09/dev-tools.jpg"><img src="http://scratchbook.ch/wp-content/uploads/2010/09/dev-tools.jpg" alt="" title="dev-tools" class="alignnone size-full wp-image-9052" /></a></p><p>Natürlich sind auch Unit-Tests dabei. Natürlich hat man auch Build-Tasks. Und &#8211; was ich besonders cool finde: Ich kann mir den Sourcecode als generierte Dokumentation ansehen:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/dokugen.jpg" alt="" title="dokugen" width="480" height="454" class="alignnone size-full wp-image-9054" /></p><h2>Features</h2><p>Einfach mal ein Auszug des Inhaltsverzeichnisses vom grossen und heiligen <a target="_blank" href="http://silverstripe-buch.de/">Silverstripe-Buch</a>:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/features.jpg" alt="" title="features" width="299" height="942" class="alignnone size-full wp-image-9055" /></p><h2>REST in peace</h2><p>Noch so ein Hammer. Silverstripe kennt ja mein DB-Schema, falls ich so eins erstellt habe für z.B. eine Jobbörse (Beispiel im Buch).</p><p>Ist noch geil&#8230; Die Felder definieren, auf die via API zugegriffen werden darf:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/rest1.jpg" alt="" title="rest1" width="260" height="305" class="alignnone size-full wp-image-9056" /></p><p>Fertig ist unsere REST-API.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/rest2.jpg" alt="" title="rest2" width="536" height="153" class="alignnone size-full wp-image-9057" /></p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/rest3.jpg" alt="" title="rest3" width="635" height="276" class="alignnone size-full wp-image-9058" /></p><p>Gerne auch als JSON:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/rest4.jpg" alt="" title="rest4" width="535" height="88" class="alignnone size-full wp-image-9059" /></p><h2>Module</h2><p>Und man kann&#8217;s erweitern. Es gibt <a target="_blank" href="http://silverstripe.org/modules">Module</a> und <a target="_blank" href="http://silverstripe.org/widgets">Widgets</a>. Und auch Module haben Seiten und Controller und ein DB-Schema&#8230; Welches natürlich die Datenbank entsprechend vorbereitet und erweitert, wenn man das Modul installiert.</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/sapphire-modular.jpg" alt="" title="sapphire-modular" width="500" height="293" class="alignnone size-full wp-image-9060" /></p><p><a href="http://silverstripe.org/">http://silverstripe.org/</a></p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2010/10/01/silverstripe-content-management-on-rails/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Vogelgetwittscher</title><link>http://scratchbook.ch/2010/09/29/vogelgetwittscher/</link> <comments>http://scratchbook.ch/2010/09/29/vogelgetwittscher/#comments</comments> <pubDate>Wed, 29 Sep 2010 19:36:15 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Informatik]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=8910</guid> <description><![CDATA[Der Claude hat sich auf was eingelassen. Er hat sich vor einiger Zeit bei einem Webdienst angemeldet, der völlig gegen die Vorstellungen eines in seinen Augen idealen Internetdienstes (verteilt, dezentral, verschlüsselt) funktioniert: Twitter. Twitter? Gab&#8217;s mal ein Video. Warum er das getan hat? Neugier. Einfach mal ausprobieren und schauen was passiert&#8230; Waau &#8211; seine ersten [...]]]></description> <content:encoded><![CDATA[<p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/Twitter-Logo-150x150.png" alt="" title="Twitter-Logo" width="150" height="150" class="alignnone size-thumbnail wp-image-8912" /></p><p>Der Claude hat sich auf was eingelassen.</p><p>Er hat sich vor einiger Zeit bei einem Webdienst angemeldet, der völlig gegen die Vorstellungen eines in seinen Augen idealen Internetdienstes (verteilt, dezentral, verschlüsselt) funktioniert: <a target="_blank" href="http://twitter.com/">Twitter</a>.</p><p><span id="more-8910"></span>Twitter? <a href="http://scratchbook.ch/2009/04/06/die-wahrheit-uber-twitter/">Gab&#8217;s mal ein Video</a>.</p><p>Warum er das getan hat? Neugier. Einfach mal ausprobieren und schauen was passiert&#8230;<br /> Waau &#8211; seine ersten Schritte in der Welt von soschel midia™</p><p>Was Twitter ist?</p><p>Es ist ein riesiger elektrischer Stammtisch, wo jeder seinen Senf in die Wolke schmiert. Heraus kommen dann mittelscharfe Gerüchte und Gerichte mit Biss. Manchmal ohne, manchmal mit Fleisch am Knochen.</p><p>Ich sitze an diesem Stammtisch. Und ich will der Welt etwas mitteilen. &#8220;Hey, ich hab&#8217; hier was entdeckt, schau mal: [Link]&#8220;. Oder: &#8220;Ich habe einen Blogpost verfasst.&#8221;<br /> Das doofe ist; das Gefäss, in das man die Information verpacken kann, ist auf 140 Zeichen begrenzt. Das ist zu wenig. SMS haben immerhin 160&#8230;</p><p>So, und ich kann jetzt sagen: Ok, an diesem Stammtisch möchte ich dem, dem und dem hier zuhören. Dann krieg&#8217; ich alles mit, was die so mitteilen.</p><p>Nur nennt man das zuhören hier nicht zuhören, sondern &#8220;folgen&#8221;. &#8220;followen&#8221; #bääh<br /> Und das weghören nennt man &#8220;entfolgen&#8221; #megabäh #scheiss #übersetzung</p><p>Ich war froh, als ich nicht mehr meiner Mutter folgen musste. Und jetzt?</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/mutter-folgen.png" alt="" title="mutter-folgen" width="174" height="107" class="alignnone size-full wp-image-8929" /></p><p>Nun gut. Sprachtechnisch hat sich da was zurückentwickelt.<br /> Aber es gibt in dieser Hinsicht auch eine tolle Spielerei: Hashtags.</p><p>Das sind Wörter, die den Sachverhalt des &#8220;Tweets&#8221; beschreiben. Ach ja, &#8220;Tweet&#8221; &#8211; so heisst diese Mitteilung auf Twitter. #Erklärung <a href="http://scratchbook.ch/2006/12/27/wir-konnen-alles-auser-hochdeutsch/">#wirkönnenallesausserhochdeutsch</a><br /> Und das war ein #Hashtag. Das #auch. #Und #das #alles #auch. #toll</p><p>Und wie funktioniert das ganze jetzt in echt?</p><p>Zum Beispiel. Ich sitze morgens im Büro. Die lüftgeilen Frischluftfanatiker haben die Löcher sperrangelweit aufgerissen. Der Durchzug reisst mir mit Überschallgeschwindigkeit die letzten warmen Moleküle von meiner Haut. Ja, es ist kalt.</p><p>Da ich mich jetzt aber nicht traue, etwas zu sagen #nerd, blase ich stattdessen meinen Gefühlszustand als Tweet ins Internet:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-29-um-19.32.40.png" alt="" title="Bildschirmfoto 2010-09-29 um 19.32.40" class="alignnone size-full wp-image-8940" /></p><p>Und es wirkt:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-29-um-19.32.48.png" alt="" title="Bildschirmfoto 2010-09-29 um 19.32.48" class="alignnone size-full wp-image-8941" /></p><p>1:0 für Twitter.</p><p>Und das ist der grosse Vorteil von dem Ding: Informationen werden blitzschnell verbreitet.</p><p>Allerdings, es gibt da so Clients. Ein Programm, das sich mit Twitter verbindet, und dich dann anschreit &#8220;Hallo hallo, ich bin eine wichtige irrelevante Information, schau auf mich, ich reiss&#8217; dich aus deinem Denkstrom&#8221; &#8211; sobald ein Tweet publiziert wurde.<br /> Nein, ich halte Twitterclients schön geschlossen. Wir haben schon genug Aufmerksamkeitsdefizit, jetzt müssen wir&#8217;s nicht noch mehr auf die Spitze treiben.</p><p>Twitter ist kein Tagebuch. Das war unter anderem meine &#8216;Barriere&#8217;, warum ich es nicht nutzen wollte. Ich will die Hoheit über meine Informationen. Aber bei 140 Zeichen, und nur zum schnell mal Informationen weiterzureichen und zu empfangen &#8211; lass gut sein.<br /> Es muss mir einfach total egal sein, falls es morgen vorbei ist und alles gelöscht wird. Deshalb nehme ich Twitter nicht ernst. Es ist ein nützliches Spielzeug, um schnell Sachen zu verbreiten, mehr nicht.</p><p>Es ist auch kein Ersatz für ein <a href="http://scratchbook.ch/">Blog</a>, <a href="http://scratchbook.ch/2008/03/26/es-ist-so-ruhig/">Tagebuch</a> oder eine <a href="http://scratchbook.ch/2010/04/27/brieffreundschaften-sind-toll/">Brieffreundschaft</a>. Niemals.<br /> Aber ich hab&#8217; schon Aussagen gehört:</p><blockquote><p>&#8220;Ich hab&#8217; ja Twitter, jetzt blogge ich nicht mehr.&#8221;</p></blockquote><p>Schade.</p><p>Yuy &#8211; ich verkomme noch zum Sozialmediensonderling &#8211; ääh Verzeihung,<br /> &#8220;social media nerd&#8221; &#8211; wir sprechen ja Hochdeutsch.</p><p>soschel midia™ &#8211; Oh nein: Vergesst es: Facebook? Nein!</p><p><a href="http://twitter.com/claudehohl">twitter.com/claudehohl</a></p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2010/09/29/vogelgetwittscher/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Javascript objektorientiert</title><link>http://scratchbook.ch/2010/07/30/javascript-objektorientiert/</link> <comments>http://scratchbook.ch/2010/07/30/javascript-objektorientiert/#comments</comments> <pubDate>Fri, 30 Jul 2010 12:24:29 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=8384</guid> <description><![CDATA[Der Claude hat gestern die Prototyp-basierte Vererbung begriffen &#8211; glaubt er zumindest. Wie es dazu kam? Er wurde vom CCC angefragt: Das Javascript-Blinkenlights sei eine prima Sache; ob man das auch für Arcade- und Stereoscope-Movies verwenden kann? Arcade: Da kommen 8 Helligkeitsstufen hinzu. Nicht allzuviel Aufwand. Stereoscope: Das sind 4 (!!) Screens, die synchronisiert ein [...]]]></description> <content:encoded><![CDATA[<p>Der Claude hat gestern die Prototyp-basierte Vererbung begriffen &#8211; glaubt er zumindest.</p><p>Wie es dazu kam? Er wurde vom <a href="http://ccc.de/">CCC</a> angefragt: Das Javascript-Blinkenlights sei eine prima Sache; ob man das auch für <a href="http://blinkenlights.net/arcade">Arcade</a>- und <a href="http://blinkenlights.net/stereoscope">Stereoscope</a>-Movies verwenden kann?</p><p>Arcade: Da kommen 8 Helligkeitsstufen hinzu. Nicht allzuviel Aufwand.</p><p>Stereoscope: Das sind 4 (!!) Screens, die synchronisiert ein Blinkenmovie abspielen.<br /> 4 Blinkenmovies gleichzeitig&#8230;</p><p>Tja, wie mach&#8217; ich das jetzt. Das JS-Blinkenlights ist ein Gebäude, bestehend aus einem Fenstergrid. Das Teil lädt ein XML, hat Frames, Timer und spielt das Filmchen ab.</p><p>Jetzt das Ganze mal 4.<br /> Claude möchte aber nicht 3x Code kopieren; sondern einmal ein Gebäude mit den Funktionalitäten erstellen, und das Teil soll dann dupliziert werden und die 4 Screens sollen dann eigenständig laufen. Mit eigenen XMLs, Frames und Timern.</p><p>Langsam begreift auch Claude: Jetzt ist es Zeit für objektorientiertes Javascript!</p><p><span id="more-8384"></span>Machen wir mal ein ganz einfaches Beispiel.</p><h2>HTML</h2><p><img src="http://scratchbook.ch/wp-content/uploads/2010/07/basic-html.jpg" alt="" title="basic html" width="339" height="119" class="alignnone size-full wp-image-8402" /></p><div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;div class=&quot;building&quot;&gt;home&lt;/div&gt;
&lt;div class=&quot;building&quot;&gt;namics&lt;/div&gt;</pre></div></div><h2>Prototyp</h2><p>Was wir brauchen, ist ein Prototyp. Eine Definition eines Gebäudes mit den Funktionalitäten und eigenständigen Variablen.</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Building <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">frame</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">increase</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">frame</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">frame</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">get_frame</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		console.<span style="color: #660066;">info</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">frame</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div><p>Mein Gebäude hat ein Frame (das aktuelle Bild im Film), eine Funktion zum Erhöhen des Frames und eine Funktion um den aktuellen Frame auszugeben.</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">frame</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span></pre></div></div><p>&#8220;this&#8221; bedeutet: Die Variable &#8220;frame&#8221; hängt später nicht mehr am Prototyp &#8220;Building&#8221;, sondern an dem Gebäude, welches man aus diesem Prototyp erstellt hat. Man spricht da auch von instanzieren und einer Instantvariable.</p><p>Alternativ kann ich den Prototyp auch so definieren:</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Building <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
Building.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">frame</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
Building.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">increase</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">frame</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">frame</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
Building.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">get_frame</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    console.<span style="color: #660066;">info</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">frame</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><p>Anstatt ein &#8220;this&#8221; verwende ich das Schlüsselwort &#8220;prototype&#8221;, um die Instanzvariablen zu definieren.</p><p>Los geht&#8217;s:</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> <span style="color: #000066;">home</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Building<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>Ich habe ein neues Gebäude erstellt; &#8220;home&#8221;.</p><p>Was ist jetzt da genau passiert?<br /> Die Funktion &#8220;Building&#8221; wird aufgerufen, die Werte werden zugewiesen und alles was an einem &#8220;this&#8221; oder &#8220;prototype&#8221; klebt wandert in das neue Objekt &#8220;home&#8221;.</p><p>Was ist da drin?</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/07/home-content.png" alt="" title="home-content" width="352" height="82" class="alignnone size-full wp-image-8415" /></p><p>Warum hat das jetzt Vorteile?<br /> Diese Variablen sind eigenständig.</p><p>Ich könnte ja auch einfach ein &#8220;Building&#8221; so erstellen:</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Building <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
	frame<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
	increase<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		Building.<span style="color: #660066;">frame</span> <span style="color: #339933;">=</span> Building.<span style="color: #660066;">frame</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	get_frame<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		console.<span style="color: #660066;">info</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">frame</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><p>Und erstellen:</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> <span style="color: #000066;">home</span> <span style="color: #339933;">=</span> Building<span style="color: #339933;">;</span></pre></div></div><p>Aber: Seht ihr das Problem? Das &#8220;Building&#8221; ist ja schon ein eigenständiges Objekt. Ich würde es bloss der neuen Variable &#8220;home&#8221; zuweisen und die Werte würden einfach dort angezeigt werden.<br /> Das Gebäude &#8220;Building&#8221; wäre einfach unter dem anderen Namen &#8220;home&#8221; erreichbar.<br /> Und das ist nicht wirklich eigenständig&#8230;</p><p>Mit dem Prototyp aber kann ich beliebig viele weitere Gebäude erstellen, die alle eigenständig funktionieren.</p><p>Also noch eine &#8220;namics&#8221;:</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> namics <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Building<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>Dann erhöhe ich das Frame bei &#8220;namics&#8221; um 5, bei &#8220;home&#8221; um 3.</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">namics.<span style="color: #660066;">increase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
namics.<span style="color: #660066;">increase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
namics.<span style="color: #660066;">increase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
namics.<span style="color: #660066;">increase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
namics.<span style="color: #660066;">increase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066;">home</span>.<span style="color: #660066;">increase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">home</span>.<span style="color: #660066;">increase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">home</span>.<span style="color: #660066;">increase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>Ausgeben:</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066;">home</span>.<span style="color: #660066;">get_frame</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
namics.<span style="color: #660066;">get_frame</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>Ergebnis:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/07/output.png" alt="" title="output" width="97" height="47" class="alignnone size-full wp-image-8428" /></p><h2>Gebäude pimpen</h2><p>Jetzt bauen wir noch ein bisschen Komfort und Extras ein.<br /> Zum Beispiel könnte ich das entsprechende HTML-Element selektieren, dem Gebäude übergeben und intern das jQuery-Objekt zwischenspeichern:</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Building <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>selector<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">this</span>.$ <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span>selector<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>&#8230;und damit spielen:</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> <span style="color: #000066;">home</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Building<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.home'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">home</span>.$.<span style="color: #660066;">fadeOut</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><h2>Deluxe-Variante</h2><p>Ich mache aus allen Gebäuden (class=&#8221;building&#8221;) ein Gebäude, speichere jedes Gebäude in ein globales Array g.buildings und in ein globales Objekt g.buildings_n, um direkt darauf zuzugreifen. Dann starte ich auf allen Gebäuden den Timer, der jede Sekunde +1 hochzählt. Auf dem Namics-Gebäude starte ich den Timer ein zweites mal, nur um zu beweisen, dass die beiden wirklich völlig unterschiedlich ticken <img src='http://scratchbook.ch/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//global object</span>
<span style="color: #003366; font-weight: bold;">var</span> g <span style="color: #339933;">=</span> g <span style="color: #339933;">||</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//buildings - providing access to all buildings</span>
g.<span style="color: #660066;">buildings</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
g.<span style="color: #660066;">buildings_n</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//a building...</span>
<span style="color: #003366; font-weight: bold;">var</span> Building <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>ref<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">frame</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.$ <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span>ref<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.$.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	g.<span style="color: #660066;">buildings</span>.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	g.<span style="color: #660066;">buildings_n</span><span style="color: #009900;">&#91;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
Building.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">increase</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">frame</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">frame</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
Building.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">highlight</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.$.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'red'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
Building.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">start_timer</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> that <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	setInterval<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//'this' is now related to setInterval... therefore, we use 'that'</span>
		that.<span style="color: #660066;">increase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		that.$.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span>that.<span style="color: #000066;">name</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">': '</span> <span style="color: #339933;">+</span> that.<span style="color: #660066;">frame</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	<span style="color: #CC0000;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//lets build some buildings</span>
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.building'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">new</span> Building<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//loop through all buildings and start the timer</span>
<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> g.<span style="color: #660066;">buildings</span>.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	g.<span style="color: #660066;">buildings</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">start_timer</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//just start another timer</span>
g.<span style="color: #660066;">buildings_n</span>.<span style="color: #660066;">namics</span>.<span style="color: #660066;">start_timer</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>Ergebnis:</p><p><img src="http://scratchbook.ch/wp-content/uploads/2010/07/deluxe.jpg" alt="" title="deluxe"  class="alignnone size-full wp-image-8432" /></p><p>Javascript rockt!<br /> Bahn frei für das Stereoscope Projekt.</p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2010/07/30/javascript-objektorientiert/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>&#8230;und es bewegt sich doch:</title><link>http://scratchbook.ch/2010/07/27/und-es-bewegt-sich-doch/</link> <comments>http://scratchbook.ch/2010/07/27/und-es-bewegt-sich-doch/#comments</comments> <pubDate>Tue, 27 Jul 2010 21:54:25 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Blinken TV]]></category> <category><![CDATA[Webentwicklung]]></category><guid isPermaLink="false">http://scratchbook.ch/?p=8370</guid> <description><![CDATA[Die Blinkenmovies sind jetzt Einbettbar. Gefällt. Und ich habe eine Kategorie Blinken TV erstellt, unter welcher ich blinkende Kunstwerke vorstelle.]]></description> <content:encoded><![CDATA[<p><iframe src="http://scratchbook.ch/blinkentube/embed/firststeps" width="316" height="325" frameborder="0" align="left" scrolling="no"></iframe></p><p>Die <a href="http://scratchbook.ch/blinkentube/">Blinkenmovies</a> sind jetzt Einbettbar. Gefällt.</p><p>Und ich habe eine Kategorie <a href="http://scratchbook.ch/category/blinken-tv/">Blinken TV</a> erstellt, unter welcher ich blinkende Kunstwerke vorstelle.</p> ]]></content:encoded> <wfw:commentRss>http://scratchbook.ch/2010/07/27/und-es-bewegt-sich-doch/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
