<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Namics Weblog</title>
        <link>http://blog.namics.com/</link>
        <description>Persönliche Stimmen und Meinungen von Mitarbeiterinnen und Mitarbeitern.</description>
        <language>de</language>
        <copyright>Copyright Namics 2010</copyright>
        <lastBuildDate>2010-09-01T09:36:38Z</lastBuildDate>
        <generator uri="http://www.sixapart.com/movabletype/">Movable Type Enterprise 4.25</generator>
        <docs>http://blogs.law.harvard.edu/tech/rss</docs>


        <item>
            <title>Google im eigenen Server-Raum</title>
            <description><![CDATA[<p>Ich bin gerade auf ein witziges (Amateur-)Werbevideo von Google gestossen. Eine Hauptrolle darin spielt eine imposante Ansammlung von 34 GSA GB-9009 (die aber offensichtlich nicht laufen, sonst wär's wohl nicht so ruhig im Video).</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://blog.namics.com/assets_c/2010/09/google-2349.html" onclick="window.open('http://blog.namics.com/assets_c/2010/09/google-2349.html','popup','width=637,height=359,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://blog.namics.com/assets_c/2010/09/google-thumb-500x281-2349.png" width="500" height="281" alt="gsa.png" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>Eine Box kann 30 Millionen Dokumente indexieren, mal 34 gibt etwas mehr als eine Milliarde. Das ist in etwa sowiel, wie <a href="http://googleblog.blogspot.com/2008/07/we-knew-web-was-big.html">google.com im Jahr 2000</a> im Index hatte. Das ist zwar schon 10 Jahre her, aber wenn man bedenkt, dass man dafür heute keine Schar Informatiker mehr braucht und das relativ einfach im Keller installieren kann, finde ich das schon noch ziemlich beeindruckend.</p>

<p><object width="500" height="300"><param name="movie" value="http://www.youtube.com/v/rE0KNvECG2s?fs=1&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/rE0KNvECG2s?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="300"></embed></object><br />
</p>]]></description>
            <link>http://blog.namics.com/2010/09/google-im-eigen.html</link>
            <guid>http://blog.namics.com/2010/09/google-im-eigen.html</guid>
            <category>Information Retrieval</category>
            <pubDate>Wed, 01 Sep 2010 11:10:15 +0100</pubDate>
            <author>Philipp Ebneter</author>
        </item>

        <item>
            <title>Die neue interne Kommunikation und Kultur dank Social Media</title>
            <description><![CDATA[<p>Heute darf ich bei der <a href="http://www.hslu.ch/">HSLU </a> über Social Media und <a href="http://www.namics.com/kalender/veranderungen-der-internen-kommunikation-durch-social-media/">die Auswirkung auf interne Kommunikation und Kultur in Unternehmen</a> aus meiner persönlichen Erfahrung reden. Frau Dr. Jacqueline Holzer, Institut für Kommunikation und Marketing, stellt im Dialog auch kritische Fragen, die in der Praxis auftauchen.</p>

<p>Die Zahlen, die ich von <a href="https://twitter.com/sdufaux">Sabine Dufaux</a> hab, spiegeln, dass Social Media in <a href="http://www.flickr.com/photos/9007408@N02/4856445836">unserem Alltag einfach stattfindet</a> <strong>offline und online / intern und extern / privat und geschäftlich</strong>. Dazu hab ich mir ein paar Thesen überlegt (Danke an meinen<a href="http://www.namics.com/menschen/juerg_stuker/"> Sparringpartner Jürg</a> für die Idee) So konnte ich der eher klassischen Agenda 'soziales Leben' einhauchen.</p>

<p>1. Menschen kommunizieren, generieren Inhalte<br />
2. Realität ist auch online<br />
3. Privat und Geschäft verschmelzen<br />
4. Intern wird extern und umgekehrt<br />
5. Mauern und Hierarchien fallen </p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://blog.namics.com/assets_c/2010/08/mauern abbauen-2335.html" onclick="window.open('http://blog.namics.com/assets_c/2010/08/mauern abbauen-2335.html','popup','width=684,height=342,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://blog.namics.com/assets_c/2010/08/mauern abbauen-thumb-500x250-2335.jpg" width="500" height="250" alt="mauern abbauen.jpg" class="mt-image-none" style="" /></a></span> Bildquelle: <a href="http://www.taz.de/1/leben/alltag/artikel/1/ungleiche-schwestern">dpa und taz</a> </p>

<p>Aus der Praxis gibts <a href="http://about.namics.com/2010/08/kuchen-social-media.html">Jans Geburtstagskuchen</a> (der Teil der Kultur ist und zum Kommunikationsinhalt wird) und eine interne Frage von <a href="http://www.twitter.com/samuelpeyer">Samuel Peyer</a>, die auf Twitter (extern) <a href="http://twitter.com/pfleckner/status/22251130086">beantwortet wird</a>. Wie aus einem Mitarbeiterprojekt wiederum externe Kommunikation wird, erzähl ich <a href="http://www.facebook.com/pages/I-like/100335050011856">am I like Beispiel</a>. Danke <a href="http://www.namics.com/menschen/michael_risch/">Mihi Risch</a> für die 100 Aufkleber, die ich verschenken darf.</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://blog.namics.com/assets_c/2010/08/intern_extern_twitter-2342.html" onclick="window.open('http://blog.namics.com/assets_c/2010/08/intern_extern_twitter-2342.html','popup','width=589,height=233,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://blog.namics.com/assets_c/2010/08/intern_extern_twitter-thumb-500x197-2342.jpg" width="500" height="197" alt="intern_extern_twitter.jpg" class="mt-image-none" style="" /></a></span></p>

<p><strong>Mein Fazit  ist: </strong>Kommunikationsleute werden künftig noch weniger trennen zwischen interner und externer Kommunikation und die Unternehmenskultur wird mehr vom Dialog geprägt. Persönliche Meinungen bereichern die bisherigen Botschaften oder ersetzen sie gar. Ich denke, die Herausforderungen für Firmen liegen beim Verstehen und Respektieren der neuen Kommunikation, der Sozialkompetenz (die zur Medienkompetenz gehört), Vertrauen und Transparenz. Aber all meine Gedanken dazu kann ich hier nicht wiedergeben. Wer spontan noch dabei sein möchte, ist herzlich eingeladen (heute, 18.30 Uhr), ein Kommentar hier und ein Zugticket nach Luzern reichen. Sonst ist <span class="mt-enclosure mt-enclosure-file" style="display: inline;"><a href="http://blog.namics.com/2010/Namics_Social_Media_Auswirkungen_hslu_sfr_v1.1.pdf">die Präsi hier</a></span>.</p>

<p>Wenn Ihr noch Ideen habt, nehme ich die gerne bis 17.30 Uhr in die Präsi auf.</p>]]></description>
            <link>http://blog.namics.com/2010/08/neue-interne-kommunikation.html</link>
            <guid>http://blog.namics.com/2010/08/neue-interne-kommunikation.html</guid>
            <category>Kommunikation</category><category>Social Media</category><category>Vorträge</category>
            <pubDate>Tue, 31 Aug 2010 10:50:35 +0100</pubDate>
            <author>Susanne Franke</author>
        </item>

        <item>
            <title>Wenn am Montag schon Freitag ist</title>
            <description><![CDATA[<p>Dann hat das leider nichts mit neuen Feiertagen zu tun.<br />
Obwohl, eigentlich gibt es schon etwas zu feiern:</p>

<p>Der Kult-Taschen-Hersteller Freitag bringt eine neue Kollektion mit dem schönen Namen "Reference Line" heraus. (<a href="http://www.persoenlich.com/news/show_news.cfm?newsid=90210">persoenlich.com</a> berichtet). Die neue Linie besticht durch Eleganz, wobei sich die Marke ihrer Grundsubstanz treu bleibt und weiterhin auf LKW-Planen setzt.</p>

<p><br />
<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://blog.namics.com/assets_c/2010/08/Freitag_Ref_Line_Namics-thumb-500x339-2331.png"><img alt="Thumbnail image for Freitag_Ref_Line_Namics.png" src="http://blog.namics.com/assets_c/2010/08/Freitag_Ref_Line_Namics-thumb-500x339-2331-thumb-500x339-2332.png" width="500" height="339" class="mt-image-none" style="" /></a></span></p>

<p>Eine schöne <a href="http://www.freitag-reference.com/">Micosite</a> macht Lust auf die neuen Taschen (man muss nur ein wenig Geduld mitbringen, dann "entblättert" sich der Text). Umgesetzt wurde die Microsite übrigens von Namics ;-)</p>]]></description>
            <link>http://blog.namics.com/2010/08/wenn-am-montag.html</link>
            <guid>http://blog.namics.com/2010/08/wenn-am-montag.html</guid>
            <category>Design</category><category>Kommunikation</category><category>Online Marketing</category><category>User Experience</category>
            <pubDate>Mon, 30 Aug 2010 09:37:32 +0100</pubDate>
            <author>Felix Widmaier</author>
        </item>

        <item>
            <title>Emex - gut investierte Zeit?</title>
            <description><![CDATA[<p>Nein, nicht die <a href="http://www.suisse-emex.ch">Emex</a> war für mich gut investierte Zeit. Eine Messe mit Werbeartikeln, Verpackungsfirmen und ein paar „geschulte Verkäufer-Sprüche". Die erinnerten mich leicht an die E-Mail-, Facebook-  und XING-Wucht der Veranstalter. Es dürfte gerne etwas weniger davon in meinen Inboxen landen. Aber die Online Ecke war für mich den Besuch wert.</p>

<p>Nicht nur, weil ich gerade so die <a href="http://blog.carpathia.ch/2010/08/26/nachhaltigkeit-von-e-commerce-trends-mit-fokus-schweiz/">Präsi</a> von <a href="http://www.twitter.com/thlang">Thomas Lang</a> sehen durfte, gespickt mit fetzigen Beispielen, wie <a href="http://www.zugara.com">zugara</a>. Dort kann ich dank <a href="http://www.youtube.com/watch?v=mFbxtJOdORE">Augmented Reality</a> tatsächlich Kleidungsstücke virtuell probieren und dann gings noch um Online Wine  Handel. Da war ich vom <a href="http://www.flickr.com/photos/9007408@N02/4929053780/">Flickrn</a> und <a href="http://twitter.com/sufranke/status/22162980257">Twittern</a> abgelenkt.</p>

<p><a href="http://blogwerk.com/">Die Blogwerker</a> <a href="http://www.twitter.com/omenzi">Olivia Menzi</a>, <a href="http://www.twitter.com/moritzadler">Moritz Adler</a> treffen und <a href="http://www.twitter.com/avongunten">Andreas von Gunten</a> herzlich die Hand  schütteln und natürlich auch den <a href="http://www.emex-blog.com/">emexblog</a>ger <a href="http://www.twitter.com/kfuellhaas">Karsten Fuellhaas</a> bei der Arbeit sehen und mit <a href="http://twitter.com/bisculm">Bernadette Bisculm</a> Kaffee trinken - sind wert, gelegentlich doch eine Messe zu besuchen (ich konnte <a href="http://twitter.com/sufranke/status/21979833397">übrigens die Highheels</a> nicht sein lassen - und jetzt tun mir die Füsse weh).</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://blog.namics.com/assets_c/2010/08/felix_marcel-2318.html" onclick="window.open('http://blog.namics.com/assets_c/2010/08/felix_marcel-2318.html','popup','width=754,height=254,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://blog.namics.com/assets_c/2010/08/felix_marcel-thumb-500x168-2318.jpg" width="500" height="168" alt="felix_marcel.jpg" class="mt-image-none" style="" /></a></span></p>

<p>Dann kamen <a href="http://www.namics.com/menschen/marcel_albertin/">Marcel Albertin</a> und <a href="http://www.namics.com/menschen/felix_kaiser/">Felix Kaiser </a>mit ihrer Prezi. Hab ich die eigentlich das erstemal live gesehen? Präsi und Prezi haben mich beeindruckt und Wandersocken für 39.90 CHF (!) auch. Im Dialog zeigten die Jungs Visionäres und den Praxis-Check für E-Commerce. Jetzt versteh ich, warum ich Multichannel und PIM (Product Information Management) bei uns oft in einem Atemzug mit E-Commerce höre.</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://blog.namics.com/assets_c/2010/08/multichannel-2315.html" onclick="window.open('http://blog.namics.com/assets_c/2010/08/multichannel-2315.html','popup','width=683,height=293,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://blog.namics.com/assets_c/2010/08/multichannel-thumb-500x214-2315.jpg" width="500" height="214" alt="multichannel.jpg" class="mt-image-none" style="" /></a></span></p>

<p>Die beiden Referenten (die ich spontan <a href="http://www.flickr.com/photos/9007408@N02/4929051272/">Namics Pirates</a> taufte) waren zu bescheiden, einen Vortrag ein zweites Mal zu posten. Drum mach ich das jetzt.</p>

<p>Prezi: <a href="http://prezi.com/irqvuqhc5axi/potenzial-und-stolpersteine-e-commerce-zwischen-vision-und-realitat-suisseemex/">Potenzial und Stolpersteine. E-Commerce zwischen Vision und Realität</a></p>]]></description>
            <link>http://blog.namics.com/2010/08/emex-ecommerce-buehne.html</link>
            <guid>http://blog.namics.com/2010/08/emex-ecommerce-buehne.html</guid>
            <category>E-Commerce</category>
            <pubDate>Thu, 26 Aug 2010 22:35:54 +0100</pubDate>
            <author>Susanne Franke</author>
        </item>

        <item>
            <title>Flexible &amp; erweiterbare jQuery Plugins</title>
            <description><![CDATA[<script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js"></script><script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js"></script>

<p><link href="http://alexgorbatchev.com/pub/sh/current/styles/shCore.css" rel="stylesheet" type="text/css" /><link href="http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css" rel="stylesheet" type="text/css" /></p>

<p><a href="http://www.jquery.com">jQuery</a> ist ein mächtiges Framework welches das Arbeiten mit JavaScript stark erleichtert. Mittlerweile ist jQuery mit Abstand <a href="http://royal.pingdom.com/2010/03/26/jquery-triumphant-march-to-success/">das verbreitetste JavaScript Framework</a> der Welt. Ganze UI-Elemente wie Tabs, oder Funktionsblöcke wie etwa eine Bildergalerie sucht man jedoch - bei jQuery selber - vergeblich. jQuery stellt lediglich zahlreiche mehr oder minder kleine Helfer zur Verfügung, welche es ermöglichen, solche Dinge mit geringem Aufwand zu erstellen.</p>

<p>Nun ist es natürlich nicht praktisch komplexe Funktionen wieder und wieder - und für jedes Projekt neu - zu schreiben. Hier kommen die "<a href="http://docs.jquery.com/Plugins">jQuery Plugins</a>" ins Spiel. Ein jQuery Plugin ist in der Regel eine Erweiterung von jQuery und kann beliebig komplexe Funktionen - von <a href="http://benalman.com/projects/jquery-bbq-plugin/">History Handling</a> über <a href="http://jqueryfordesigners.com/demo/slider-gallery.html">UI-Elemente</a> bis zu <a href="http://fancybox.net/">Lightboxen</a> - bereitstellen.</p>

<h3>Aufbau eines Plugins</h3>

<p>Die jQuery Plugin API dient dazu, jQuery um neue Funktionen zu erweitern:</p>

<pre class="brush: js; gutter: false;">
// jQuery um Tab Funktion erweitern:
$.fn.tabsPlugin = function(userOptions) {
   // Plugin Code...
}
</pre>

<p>Plugins sind meist sehr ähnlich aufgebaut. Sie werden in der Regel auf ein Set von HTML Elementen angewendet und man kann das Verhalten des Plugins mit Optionen etwas beeinflussen. In etwa so:</p>

<pre class="brush: js; gutter: false;">
var options = {
     activeTab: 2
};
$('div.tabs').tabsPlugin(options);
</pre>

<p>Damit würde man etwas HTML Code...
<img alt="Tabs HTML Code" src="http://blog.namics.com/2010/08/26/flexibletabs/html%20Code.png" class="mt-image-none" style="" /></p>

<p>...in ein Modul verwandeln das etwa wie folgt aussieht:
<img alt="Tabs" src="http://blog.namics.com/assets_c/2010/08/Tabs-thumb-500x83-2305.png" width="500" height="83" class="mt-image-none"  /></p>

<p>Das Plugin hat dabei meist eigene Optionen, sogenannte <em>Defaults</em>. Diese werden durch die Optionen, welche der Benutzer dem Plugin beim Aufruf mitgegeben hat ergänzt:</p>

<pre class="brush: js; gutter: false;">
var options = $.extend({}, $.fn.tabsPlugin.defaults, userOptions);
</pre>

<p>Innerhalb des Plugins, wird danach die entsprechende Plugin-Funktion auf jedem einzelnen der übergebenen Elemente ausgeführt. Dabei muss darauf geachtet werden, dass die Funktion nur auf das jeweilige Element Einfluss hat, damit mehrere Elemente auf der Seite die gleiche Funktionalität haben können.</p>

<pre class="brush: js; gutter: false;">
var $tabSets = $(this);
$tabSets.each(function(){
     // Auf jedem Element die gewünschte Funktion ausführen
     var $tabSet = $(this); // Aktuelles Tab-Set
     ...
});
</pre>

<h3>Nun soll's ein bisschen anders sein...</h3>

<p>Ein Problem vieler Plugins ist, dass sie zwar meist ihre Aufgabe gut erledigen, nicht selten auch viele Optionen mitbringen, aber nicht flexibel oder erweiterbar sind. Nehmen wir ein Plugin, das aus einem Set an HTML Elementen ein Tab-UI generieren soll. Dieses Plugin übernimmt das Sammeln der Tabs und zugehörigen Panels, sowie das Ein- und Ausblenden der Panels beim Klick auf ein Tab. Ausserdem bringt es noch einige Optionen mit, womit der Benutzer festlegen kann, welche Klassen die ausgewählten Tabs haben sollen und welches Tab zu Beginn aktiviert werden soll. Ist doch Perfekt, nicht?</p>

<p>Was nun, wenn der Inhalt des Panels beim Aufruf der Seite noch nicht vorhanden ist sondern erst <a href="http://api.jquery.com/category/ajax/">nachgeladen</a> werden soll, wenn man das entsprechende Tab aktiviert? Herkömmliche Plugins versagen hier oft und gewünschte Funktionalität muss direkt im Plugin eingefügt werden. Dabei geht die Update-Fähigkeit verloren und es leidet die Wiederverwendbarkeit und Sicherheit des Projekts. Im Wissen, dass der Benutzer vielleicht mit dem Plugin noch weiter Anwendungsfälle hat neigt der Autor des Plugins dazu, möglichst viele Funktionen in sein Plugin zu stecken, da er es ja flexibel halten möchte. Damit wird es gross, schwerfällig und unübersichtlich und verfügt über eine Menge Funktionen, welche viele unter Umständen gar nicht brauchen. Der Autor des besagten Tab-Plugins muss dabei an Tastatur-Bedienbarkeit, Ajax- und History-Fähigkeit sowie vieles mehr denken.</p>

<h3>Evented jQuery Plugins = flexibel &amp; erweiterbar</h3>

<p>Eine Lösung für dieses Problem lautet <em>Custom Events</em> oder kürzer - <strong>Evented</strong>. Dabei muss sich der Plugin Autor überlegen, welche grundlegende Funktionen das Plugin benötigt und stellt diese in einer möglichst schlichten Form zur Verfügung.</p>

<p>Ein Tab-UI-Element hat im Grossen und Ganzen eine Funktion: Beim Klick auf ein Tab, soll das zugehörige Panel aktiviert  und alle anderen deaktiviert werden. Wir brauchen also eine "<strong>activate</strong>" Funktion. Ausserdem müssen zu Beginn alle Tabs gesucht, und die zugehörigen Panels gespeichert werden. Dazu benötigen wir eine "<strong>setupTabs</strong>" Funktion. Des weiteren sollten die Panels wissen, zu welchem Tab sie gehören: "<strong>setupPanels</strong>". Beim Aufruf der Seite sollen diese beiden Funktionen ausgeführt werden und das erste Tab aktiviert werden, dazu brauchen wir noch eine letzte Funktion, die "<strong>initialize</strong>" Funktion.</p>

<p>Diese Funktionen sind "Events". Jedes übergebene Set an HTML Elementen wird mit diesen Events versehen. Da der Event damit immer zu einem Tab-Element gehört, kann damit auch das Problem von allfälligen Konflikten mit anderen Tab-Elementen einfach gelöst werden. Wenn auf einer Seite zwei Tab-Elemente vorhanden sind, beeinfluss Tab-Verbund eins den zweiten Tab-Verbund nicht, wenn darauf der <em>activate Event</em> ausgeführt wird:</p>

<pre class="brush: js; gutter: false;">
...
$tabSets.bind("activate",
        function(e, selected) {
            // selektiertes Tab aktivieren
        }
);
...
</pre>

<h3>Events nach Aussen verfügbar machen</h3>

<p>Der Trick besteht nun darin, dass diese Funktionen nicht einfach fest in das Plugin integriert sind, sondern das jede einzelne Funktion in ein Array gepackt wird, welches über ein Objekt <em> customEvents </em> von aussen Zugänglich ist. Die Funktions-Array können dadurch ergänzt, oder gar  ganz überschrieben werden, bevor das Plugin auf ein Set von HTML Elementen angewendet wird.</p>

<pre class="brush: js; gutter: false;">
var customEvents = {
    initialize: [function(options) {
        this.bind("initialize." + options.namespace,
        function(e) {
            // Tabs und Panels vorbereiten
            //und erstes Tab Aktivieren
        });
    }],

    setupPanels: [function(options) {
        this.bind("setupPanels." + options.namespace,
        function(e) {
            // Panels mit zugehörigem Tab verbinden
        });
    }],

    setupTabs: [function(options) {
        this.bind("setupTabs." + options.namespace,
        function(e) {
            // Tabs suchen und activate Funktion bei klick ausführen
        });
    }],

    activate: [function(options) {
        this.bind("activate." + options.namespace,
        function(e, selected) {
            // Alle Tabs deaktivieren und selektiertes
            // Tab und Panel aktivieren
        });
    }]
};
</pre>

<h3>Events ergänzen</h3>

<p>Im unserem Beispiel wollten wir, dass der Inhalt des Panels erst vom Server geladen wird, wenn das Tab aktiviert wird. Die Vorgehensweise ist nun denkbar einfach, man fügt einfach vor der Plugin-Standard-Funktion eine neue Funktion hinzu, welche den Inhalt des Panels via <a href="http://api.jquery.com/load/">Ajax</a> vom Server lädt. Dabei muss man zu keiner Zeit das Plugin selber verändern. Wenn der Plugin Autor ein Bug-Fix veröffentlich, kann das Plugin einfach aktualisiert werden - die Grundfunktionen werden die gleichen bleiben und die Erweiterung wird nicht tangiert da sie sich ausserhalb des Plugins befindet.</p>

<pre class="brush: js; gutter: false;">
// Neue Funktion vor die bestehende
// activate Funktion schieben:
customEvents.activate.unshift( function(options) {
    // Die Erweiterung auf das Grund-Element
    // (nicht die einzelnen Tabs) binden:
    this.bind("activate." + options.namespace,
        function(e, selectedTab) {
            // Den Inhalt des Tabs hier
            // per Ajax in das Panel laden:
            var url= selectedTab.href;
            $(selected).data('$panel').load(url);
   });
});
</pre>

<p>Der Kern des Plugins ist dabei lediglich dafür verantwortlich, dass die Default Einstellungen mit den Benutzer-Optionen ergänzt werden und dass danach alle Tab-Elemente die Custom Events erhalten.</p>

<h3>Hello World!</h3>

<p>Nachdem man dieses <a href="http://www.noelboss.ch/xasetabs/">erweiterbare und flexible Tabs-Plugin</a> geschrieben hat, ist es natürlich schön, wenn sich der Rest der Welt auch daran erfreuen kann. In meinem nächsten Post  werde ich zeigen, wo und wie man ein eigenes Plugin veröffentlichen kann und was dabei zu beachten ist.</p>
]]></description>
            <link>http://blog.namics.com/2010/08/create-flexible-jquery-plugins.html</link>
            <guid>http://blog.namics.com/2010/08/create-flexible-jquery-plugins.html</guid>
            <category>Technologie</category>
            <pubDate>Thu, 26 Aug 2010 17:15:00 +0100</pubDate>
            <author>Noel Bossart</author>
        </item>

        <item>
            <title>Sika: Der (noch) unbekannte Riese</title>
            <description><![CDATA[<p>Gestern bei ECO im TV: Eine schöne, ausführliche Reportage über Sika und was das Unternehmen so macht. Obwohl weltweit aktiv und in mehreren Feldern der Spezialchemie Weltmarktführer scheint Sika nicht so bekannt zu sein, es sein müsste.</p>

<p>Was vor 100 Jahren mit dem ersten Gothard-Tunnel begann, geht heute mit dem neuesten Gotthard-Projekt (dem längsten Tunnel der Welt!) in eine erfolgreiche Zukunft.</p>

<p><object data="http://www.sf.tv/videoplayer/embed/c173170d-b5ab-4e68-aa23-0d00769e72bb" type="application/x-shockwave-flash" style="width:640px;height:386px"><param name="movie" value="http://www.sf.tv/videoplayer/embed/c173170d-b5ab-4e68-aa23-0d00769e72bb"/><param name="quality" value="high" /><param name="allowFullScreen" value="true" /><a href="http://www.videoportal.sf.tv/video?id=c173170d-b5ab-4e68-aa23-0d00769e72bb" alt="zum Videoportal des Schweizer Fernsehens">ECO vom 23.08.2010</a></object></p>

<p>Mehr zu Jörg Schlumpf und seinem Gotthard-Projekt kann man übrigens in seinem <a href="http://experience.sika.com/category/resources/">blog</a> erfahren. </p>

<p>Leider lässt die Reportage ein wenig die weiteren Wirkungsfelder vermissen. Ein paar interessante Insights aus der Sicht von Studenten, Berufsanfängern und Sika-Mitarbeitern gibt es im <a href="http://experience.sika.com/main/the-experience/">Experience-blog</a>.</p>

<p>Dort gibt es auch mehr Infos zur <a href="http://experience.sika.com/main/100-years-sika/">Geschichte</a> der Sika.</p>

<p>Wer sich für das ganze Sika 100 Jahre Projekt interessiert. <a href="http://www.namics.com/taten/sika-100jahre/">Hier</a> gehts zum Projekt, das wir mit viel Spass und Freude mit der Sika umsetzen durften. </p>]]></description>
            <link>http://blog.namics.com/2010/08/sika-der-noch-u.html</link>
            <guid>http://blog.namics.com/2010/08/sika-der-noch-u.html</guid>
            <category>Blogging</category><category>Design</category><category>Kommunikation</category><category>Online Marketing</category>
            <pubDate>Tue, 24 Aug 2010 09:01:50 +0100</pubDate>
            <author>Felix Widmaier</author>
        </item>

        <item>
            <title>4 Blickwinkel - Zum Stand populärer Kulturkritik</title>
            <description><![CDATA[<p><a href="http://www.wired.com/magazine/2010/08/ff_webrip/all/1">Da</a> sind sie wieder, die Apokalyptiker und Integrierten, deren Dialoge mit verträglicher Regelmäßigkeit die Geschichte der Massenmedien bereichern. Dem aufgeklärten Leser ist diese Unterscheidung nicht fremd. Umberto Eco hat so die Vertreter der medienkritischen und medienschaffenden Zunft voneinander unterschieden (Apokalyptiker und Integrierte. Zur kritischen Kritik der Massenkultur).<br />
Diese Woche <a href="http://www.wired.com/magazine/2010/08/ff_webrip/all/1">reflektieren Chris Anderson und Michael Wolff </a>beide Positionen in einem bemerkenswerten Artikel auf Wired. „Das Web ist tot" (genauer genommen: der Browser)  stellen sie mehr oder weniger wehmütig fest. Für beide Autoren ist der Browser das Symbol einer individualistischen lean-forward Kommunikation, die durch Monopolisierung und Standardisierung von geschlossenen Systemen (Facebook und Apple) gefärdet ist.  Zweispaltig stellen sie die Verantwortlichen gegenüber: uns selbst auf der einen Seite, das System (den Kulturkapitalismus) auf der anderen.</p>

<p><em>„It is the cycle of capitalism. The story of industrial revolutions, after all, is a story of battles over control. A technology is invented, it spreads, a thousand flowers bloom, and then someone finds a way to own it, locking out others. It happens every time </em><br />
[ ... und wir sind froh, dass es uns die Monopolisten so einfach machen, denn wir sehnen uns so oft nach Standards  und so selten nach Komplexität ...] <br />
<em>As much as we intellectually appreciate openness, at the end of the day we favor the easiest path."  </em>(Chris Anderson)<br />
<em>„So it's not shocking that Jobs' iPad-enabled vision of media's future looks more like media's past. In this scenario, Jobs is a mogul straight out of the studio system." (Michael Wolff)</em></p>

<p>So gesehen erscheint die Frage nach dem Verursacher der Lean-Back-Renaissance wie die Frage nach Henne oder Ei.  Auch im monopolistischen Kapitalismus gehören immer mindestens zwei Faktoren dazu eine Situation zu schaffen: Angebot und Nachfrage.</p>

<p><strong>Hinter den Spiegeln</strong></p>

<p>Die Frage hinter dieser Diskussion ist dieselbe, wie die des medienkritischen Diskurses am Ende des letzten Jahrtausends: Welchen Wert hat individuelle Selbstbestimmung, Schaffenskraft und Kreativität gegenüber großen monopolartiger (Medien-)Unternehmungen, die zu einer fragwürdigen Nivellierung von Informationen und Möglichkeiten führen und gleichzeitig Abhängigkeiten schaffen, die auch den aufgeklärtesten Menschen in Unmündigkeit halten können.  <br />
Apokalyptiker warnen vor dieser Nivellierung und Unmündigkeit und bauen dabei beständig Widerstände gegen den kapitalistischen Fortschritt in seinem Lauf auf. Gleichzeitig gleiten die Integrierten mit systemkonformer Performance durch die schöne neue Welt und schaffen befreit von Reflexion einen Fortschritt nach dem Anderen. <br />
Michael Wolffs Vergleich von Steve Jobs als einem Mogul aus dem Studio-System aus der Medien-Vergangenheit ist in dieser Hinsicht treffen, aber auch der Vergleich selbst entstammt einer Position aus der Zeit von One-Way-Massenmedien: in diesem Moment ist Wolff ein Apokalyptiker. <br />
Dass nicht hinter jeder individualistischen Position  ein  so kluger Kopf steckt zeigt die aktuelle Diskussion über google Street View in Deutschland.  Hier werden Biedermänner zum Sand im Getriebe und nehmen in der Tiefe des Sommerlochs eine apokalyptische Position ein. <br />
Auch wenn fundamentalistische Kulturkritik aus der Mode gekommen ist, macht es in Anbetracht der oben beschriebenen Diskussionen durchaus Sinn, die Positionen von Apokalyptikern und Integrierten beizubehalten. </p>

<p><strong>Das Modell erweitern</strong></p>

<p>Die Entwicklung im Bereich der sozialen Medien führen neben den Polen von Apokalyptikern und Integrierten zu einer weiteren Unterscheidung, die von <a href="http://tallblog.conted.ox.ac.uk/index.php/2009/10/14/visitors-residents-the-video/">David White </a> als Präzisierung des Begriffs „Digital Natives" eingeführt wurde, und von <a href="http://www.netzpolitik.org/2010/peter-kruse-ist-die-nutzung-des-internets-eine-glaubensfrage/">Peter Kruse in dem sehenswerten (!!!) Vortrag</a> auf der re:publica 2010 eindrucksvoll  veranschaulicht und empirisch gestützt wurde: die Unterscheidung in „Digital Visitors" und „Digital Residents". Kruse sieht hier einen Diskurs unterschiedlicher Werte, der sich in der Frage unterscheiden, ob Menschen das Internet als gleichwertigen Kommunikationsraum in jeder Beziehung verstehen und nutzen. </p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://blog.namics.com/assets_c/2010/08/wertepraeferenzen-2284.html" onclick="window.open('http://blog.namics.com/assets_c/2010/08/wertepraeferenzen-2284.html','popup','width=500,height=365,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://blog.namics.com/assets_c/2010/08/wertepraeferenzen-thumb-500x365-2284.png" width="500" height="365" alt="wertepraeferenzen.png" class="mt-image-none" style="" /></a></span></p>

<p>Kruse sieht die „Residents" als Befürworter und Nutzer des sozialen Netzes und offener Standards, die Kontrolle und Hierarchien ablehnend. „Visitors"  beschreibt er als Menschen, die in der Entwicklung und Offenheit des sozialen Netzes eine Gefahr sehen. Residents sind so gesehen eher Integrierte,  Visitors eher die Apokalyptiker. <br />
(Lesenswert unter diesem Aspekt das Gespräch zwischen Ilse Aigner und Sascha Lobo „Sie werden wieder überheblich" (http://www.spiegel.de/spiegel/0,1518,708305,00.html))<br />
Fruchtbarer ist es jedoch Apokalyptiker und Integrierte als eigenständige Dimension zu betrachten- „Visitors" und „Residents" als eine weitere. Es ergibt sich eine Matrix mit vier Idealtypen, die sich auf Grund der oben beschriebenen vier Pole zuordnen lassen. </p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://blog.namics.com/assets_c/2010/08/medienkultur-2287.html" onclick="window.open('http://blog.namics.com/assets_c/2010/08/medienkultur-2287.html','popup','width=500,height=330,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://blog.namics.com/assets_c/2010/08/medienkultur-thumb-500x330-2287.png" width="500" height="330" alt="medienkultur.png" class="mt-image-none" style="" /></a></span></p>

<p>Es entstehen neben den oben beschriebenen vier Polen vier Typen, die im Folgen als Prototypen beschrieben werden:</p>

<p><em>Digitale Skeptiker: </em><br />
Können sich dem Medium nicht ganz verweigern, beurteilen die Entwicklung jedoch generell kulturpessimistisch und nutzen das Internet nur so wie es gerade notwendig ist. (E-Mail, Nachrichten, Recherche) Street View ist ein guter Aufhänger neuen Medien die Grenzen aufzuzeigen.</p>

<p><em>Digitale Konsumisten:</em><br />
Nutzen soziale Medien bestenfalls als „Flagge zeigen" aber nicht als Alternative zur alltäglichen Kommunikation. Orientieren sich an Standards, kaufen online ein, schauen Filme etc. Street View wird eine tolle neue Möglichkeit Informationen zu gewinnen.</p>

<p><em>Digitale Anarchisten: </em><br />
Sind ausgesprochen aktiv in sozialen Medien und dem Mainstream gefühlt immer eine Plattform voraus. Bewerten geschlossene Systeme und Monopolbestrebungen negativ. Haben in der Regel kein iPhone und ihr Facebook Profil in den letzten zwei Monaten zunehmend vernachlässigt. Stehen Themen wie Street View nicht wegen der Privatsphäre sondern der Allgegenwärtigkeit von google skeptisch gegenüber.</p>

<p><em>Digitale Konformisten:</em><br />
Neben alles was kommt und sind spätestens dann auf einer Plattform vertreten, wenn die im heute Journal einen Beitrag mit „früher war es mySpace und SecondLife - heute ist es ..." einleitet. Konformisten streben nach Standards, Sicherheit und Kontinuität. Sie haben verstanden, dass ihre Privatsphäre online genauso sicher ist wie offline. Schnelle Konformisten haben Bilder aus ihrer Strasse schon längst an google und ihren Facebook Account gesendet. </p>

<p>Definitiv ins Blaue gedacht. Mir macht es grade Spaß meine Freunde, Mitarbeiter und Prominenz in die Schubladen zu stecken ... <br />
</p>]]></description>
            <link>http://blog.namics.com/2010/08/4-blickwinkel--.html</link>
            <guid>http://blog.namics.com/2010/08/4-blickwinkel--.html</guid>
            <category>Gesellschaft</category>
            <pubDate>Fri, 20 Aug 2010 15:49:32 +0100</pubDate>
            <author>Jesko Arlt</author>
        </item>

        <item>
            <title>Intranets im Spitalumfeld - Quo vadis? (Teil 5)</title>
            <description><![CDATA[<p>Wie nutzen Spitäler ihr Intranet? Dieser Frage ging ich im Rahmen meiner Masterarbeit nach. Als fünfter und letzter Teil einer Serie (<a href="http://blog.namics.com/2010/04/intranets-im-sp.html">Teil 1</a> - <a href="http://blog.namics.com/2010/05/intranets-im-sp-1.html">Teil 2</a> - <a href="http://blog.namics.com/2010/06/intranets-im-sp-2.html">Teil 3</a> - <a href="http://blog.namics.com/2010/07/intranets-im-sp-3.html">Teil 4</a>) ziehe ich in diesem Beitrag das Fazit meiner Untersuchung.</p>

<p>Der Informatiker <a href="http://www.ait.gu.se/kontaktaoss/personal/dick_stenmark/">Dick Stenmark</a> meint, dass wenn ein Intranet zur Unterstützung des Wissensmanagements in Gebrauch genommen werden möchte, drei Perspektiven Berücksichtigung finden sollten: Zum Ersten die „information perspective", zum Zweiten die „awareness perspective" und zum Dritten die „communication perspective". Das heisst, ein Intranet sollte nicht nur aktuelle Informationen und wichtige Dokumente bereitstellen, sondern die Mitarbeitenden auch unterstützen mit der täglichen Informationsflut umgehen zu können. Sprich: Funktionalitäten bereitstellen, die die Mitarbeitenden auf neu hinzugefügte Informationen aufmerksam macht, ihnen ermöglicht Favoriten zu setzen oder Seiten zu abonnieren. Mit der „awareness perspective" ist zudem gemeint, dass Fähigkeiten und Expertisen der Mitarbeitenden eingesehen werden können bzw. auch entsprechend nach Kompetenzen gesucht werden kann. Die Suche ist dann auch ein weiteres Element, das unter diese Perspektive fällt und die in den Intranets der Spitäler entweder gar nicht vorhanden ist oder aber nur unzureichende Suchresultate liefert.</p>

<p>Da ein Intranet nebst dem Wissensmanagement auch noch andere Aufgaben zu erfüllen hat, habe ich nebst den Perspektiven von Stenmark die „support perspective" eingeführt. Genau dieser Perspektive kommt insbesondere im Spitalumfeld grosse Bedeutung zu. So geben die Spitalmitarbeitenden mehrheitlich an, dass ein ihre Tätigkeit optimal unterstützendes Intranet ein digitales Instrument zur Unterstützung der Arbeitsprozesse sei. Auch konnte gezeigt werden, dass jene Spitalmitarbeitenden, die das Intranet regelmässig nutzen, auch stärker bei der Arbeit unterstützt werden als andere (siehe <a href="http://blog.namics.com/2010/06/intranets-im-sp-2.html">Teil 3</a>). Grösstenteils werden die Spitalmitarbeitenden allerdings noch immer nur „teilweise" durch das Intranet bei der Arbeit unterstützt. Intranets bieten demnach im Spitalumfeld viel Potential die Mitarbeitenden bei der Arbeit zu unterstützen - allerdings wird es noch nicht ausgeschöpft. Rasche Verbesserung dürften hier Online-Formulare, -Aufträge, -Bestellprozesse oder dergleichen bringen.</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://blog.namics.com/assets_c/2010/08/Blog5_Intranets-2277.html" onclick="window.open('http://blog.namics.com/assets_c/2010/08/Blog5_Intranets-2277.html','popup','width=1335,height=809,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://blog.namics.com/assets_c/2010/08/Blog5_Intranets-thumb-500x302-2277.png" width="500" height="302" alt="Blog5_Intranets.png" class="mt-image-none" style="" /></a></span></p>

<p>Insgesamt kann der Schluss gezogen werden, dass bei den Intranets im Spitalumfeld derzeit vor allem die „information perspective" im Vordergrund steht. Die Intranets sind für die Spitalmitarbeitenden grundsätzlich ein Instrument, um auf Informationen und Dokumente zuzugreifen. Sie nehmen es also vorwiegend als Speichermedium in Gebrauch. Die drei anderen Perspektiven finden nur wenig bis gar keine Berücksichtigung, das heisst das Intranet wird weder dazu verwendet die Mitarbeitende auf Inhalte aufmerksam zu machen, sie bei der Arbeit zu unterstützen noch um in synchroner oder asynchroner Weise mit Kollegen zu kommunizieren oder mit ihnen zusammenzuarbeiten. Oft unzureichend ist zudem die Benutzerfreundlichkeit der Intranets. So bemängeln viele Mitarbeitenden die Struktur und Übersichtlichkeit der Intranets. Dennoch: Die Intranets der Ostschweizer Spitäler bilden grösstenteils eine gute Basis, um die Mitarbeitenden an die Möglichkeiten und Funktionalitäten eines Intranets heranzuführen. Eine weitere Erkenntnis meiner Masterarbeit ist nämlich, dass sich eher diejenigen Mitarbeitenden mehr Möglichkeiten im Intranet wünschen, die bereits mit einem etwas ausgereifteren Intranet arbeiten. Getreu dem Motto: Der Appetit kommt beim Essen.</p>]]></description>
            <link>http://blog.namics.com/2010/08/intranets-im-sp-4.html</link>
            <guid>http://blog.namics.com/2010/08/intranets-im-sp-4.html</guid>
            <category>Gesellschaft</category>
            <pubDate>Fri, 20 Aug 2010 12:26:41 +0100</pubDate>
            <author>Celina Schroeder</author>
        </item>

        <item>
            <title>Heimatschutz für Online-Phobiker: Leistungsschutzrecht als Grundlage für den weiteren Erhalt freier Medien gefordert</title>
            <description><![CDATA[<p>Wenn die Situation für viele der Verlage nicht so tragisch wäre, könnte man als Realsatiere darüber lachen. Für mich ist <a href="http://www.nzz.ch/nachrichten/kultur/medien/verlage_haben_anrecht_auf_besseren_schutz_1.7232236.html">der Artikel</a> aber ein traurige Irrung mit vielen Fehlern drin.</p>

<p>Norbert Neininger (der seinen Weblog auch noch <a href="http://neininger.wordpress.com/">Tagebuch</a> nennt), seines Zeichen <a href="http://www.moneyhouse.ch/p/neininger_norbert-3937540/verbindungen.htm">Unternehmer</a>, Verleger und <a href="http://www.schweizerpresse.ch/index.php?id=41">Präsidiumsmitglied des Verbandes Schweizer Presse</a>, <a href="http://www.nzz.ch/nachrichten/kultur/medien/verlage_haben_anrecht_auf_besseren_schutz_1.7232236.html">fordert in der NZZ</a> ein Leistungsschutzrecht (exklusives Recht an ihren Inhalten auch im Internet) für Medienunternehmen.</p>

<p>Über diese irreale Forderung, welche Grundprinzipien der freien Marktwirtschaft widerspricht, will ich gar nicht gross reden. Viel tragischer finde ich, dass die NZZ einen so tendenziösen Artikel abdruckt.</p>

<p>So soll das Internet nach Neiniger ein rechtsfreier Raum sei. Nein, nicht rechtsfrei aber sehr kompliziert, so wie die globale Wirtschaft (und das richtige Leben) selbst. Unterschiedliche Rechtsprechungen in verschiedenen Ländern. Es wird nie eine Schweizer Grenze im Web geben -- oder es ist nicht das Web. Und ausserdem sei Wikipedias Ziel nicht die Vermehrung des Wissens, sondern das Erheischen von Marktanteilen, Umsatz und Ertrag. Wo kommt den so was her? </p>

<p>Spannend finde ich auch, dass Verlage über das "Verschenken von Inhalten", "in Unkenntnis der Mechanismen des neuen elektronischen Aufmerksamkeitsmarkts" und wegen dem nicht-funktionieren des Geschäftsmodells der Werbung ganz arg in Bedrägnis geraten sind. Doch am Ende desselben Artikel steht dann, dass "böse" Firmen wie Twitter oder Facebook Milliarden über Werbung einnehmen. Hmm. Welche Unkenntnis und weshalb sind die, die wenig Geld mit Werbung machen die Guten und die, welche viel Geld damit verdienen die Bösen?</p>

<p>Eine schöne Wortkreation finde ich auch das "parasitären Geschäftsmodell" so wie bei Google oder Yahoo. Ist es nicht so, dass diese einen Mehrwert bieten, welcher die User schätzen und anderswo (z.B. beim <a href="http://blog.namics.com/2008/08/news1ch-die-ubl.html">"Google-Killer" News1.ch [inkl. Herrn Neininger]</a>) nicht finden. <a href="http://blog.namics.com/2010/04/innovate-the-pa.html">Eine Analyse dazu</a> bietet beispielsweise <a href="http://www.imd.ch/about/facultystaff/michel.cfm">Prof. Stefan Michel</a> vom IMD. </p>

<p>Und nun der zentrale neinigerische "Lösungsvorschlag": Wir ziehen eine Wand hoch und verbieten alles und machen einen auf "Paid Content". Sehr innovative und ein netter Ansatz in einer Welt die von Netzwerkeffekten lebt.</p>

<p>Kritische Leser errinnern sich möglicherweise noch an die Aussage im Artikel, dass Verlage in "Unkenntnis der Mechanismen des neuen elektronischen Aufmerksamkeitsmarkts" agierten. Bingo und zurück zu Feld eins.</p>

<p>Ein Artikel der weder dem Niveau der NZZ gerecht wird noch den Schweizer Verlagen (und deren Verband) einen Dienst tut: <a href="http://www.nzz.ch/nachrichten/kultur/medien/verlage_haben_anrecht_auf_besseren_schutz_1.7232236.html">«Verlage haben Anrecht auf besseren Schutz»</a></p>

<p>Und hier noch ein aktuelles Stück Zeitgeschichte des Schweizer Print-Presse:<br />
<a href="http://www.flickr.com/photos/jstuker/4903229201/" title="Links: &quot;nicht mehr&quot;, Mitte: &quot;weiterhin&quot; und Rechts: &quot;nur noch&quot; by Jürg, on Flickr"><img src="http://farm5.static.flickr.com/4095/4903229201_fe22ce1904.jpg" width="500" height="375" alt="Links: &quot;nicht mehr&quot;, Mitte: &quot;weiterhin&quot; und Rechts: &quot;nur noch&quot;" /></a></p>

<p>Gefunden bei <a href="http://wiki.doebe.li/bin/view/Beat/DerVerlegerUndDasInternet">Beat Döbeli</a> und  noch ein Kommentar bei <a href="http://weblog.histnet.ch/archives/4192">Peter Haber</a>.</p>]]></description>
            <link>http://blog.namics.com/2010/08/heimatschutz-fu.html</link>
            <guid>http://blog.namics.com/2010/08/heimatschutz-fu.html</guid>
            <category>Business</category>
            <pubDate>Wed, 18 Aug 2010 22:35:47 +0100</pubDate>
            <author>Jürg Stuker</author>
        </item>

        <item>
            <title>The Terrific Way Of JavaScript</title>
            <description><![CDATA[<script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js"></script><script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js"></script><link href="http://alexgorbatchev.com/pub/sh/current/styles/shCore.css" rel="stylesheet" type="text/css" /><link href="http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css" rel="stylesheet" type="text/css" /><br />
<p>
Wie im <a href="http://blog.namics.com/2010/07/terrific-oocss-part2.html">letzten Post</a> veranschaulicht, setzt Terrific im <span class="caps">HTML</span>/CSS Part voll auf <a href="http://wiki.github.com/stubbornella/oocss"><span class="caps">OOCSS</span></a>. In Sachen JavaScript beschreitet Terrific jedoch völlig eigene Wege.<br />
</p>

<h3>Was bringt's?</h3>
<p>
Die Hauptvorteile des JavaScript Systems von Terrific sind:<br />
</p>
<p>
<strong>Leichtgewichtige Architektur</strong><br />
Terrific strukturiert die JavaScript-Entwicklung ohne dabei die Entwickler einzuschränken. So können Entwickler weiterhin ihr gesamtes <a href="http://www.jquery.com">jQuery</a> - Knowhow voll einsetzen und profitieren gleichzeitig von den zahlreichen Features und Möglichkeiten von Terrific.<br />
</p>
<p>
<strong>Modulare Entwicklung</strong><br />
Die gesamte JavaScript-Entwicklung wird durch Terrific modularisiert. So können sämtliche <a href="http://blog.namics.com/2010/06/terrific-part1.html">Module</a> einzeln entwickelt und getestet werden und - was noch viel wichtiger ist - ohne Seiteneffekte miteinander kombiniert werden.<br />
</p>
<p>
<strong>Skalierbarkeit</strong><br />
Die Seite wird mit wachsender JavaScript-Grösse nicht durch unzählige <span class="caps">DOM</span>-Operationen und Events verlangsamt. Es wird wirklich nur der Code ausgeführt, welcher wirklich von den Terrific-Komponenten benötigt wird.<br />
</p>
<p>
<strong>Einfache Integration</strong><br />
Mit Terrific entwickelte Frontends lassen sich mühelos in die verschiedensten Backendsysteme und <span class="caps">CMS </span>integrieren. So kann die Frontendentwicklung komplett vom entsprechenden Zielsystem entkoppelt werden.<br />
</p>

<h3>Wie haben wir es gemacht?</h3>
<p>
Wie schon im <a href="http://blog.namics.com/2010/06/terrific-part1.html">ersten Post dieser Serie</a> erwähnt, nutzt Terrific die <a href="http://blog.namics.com/2010/07/terrific-oocss-part2.html"><span class="caps">OOCSS</span>-Namenskonventionen</a> technologieübergreifend sowohl für den <span class="caps">HTML</span>/CSS Part als auch für den JavaScript Part.<br /><br />
Dies erlaubt es Terrific, einen einheitlichen Bootstrapping-Mechanismus zu verwenden - egal ob es sich dabei um einfache Seiten mit wenig JavaScript-Funktionalität oder komplexe Applikationen handelt.



<pre class="brush: js; gutter: false;">
(function($) {
    var application = new Nx.Application($('.page'));
    application.registerModules();
    application.startAll();
})(Nx.$);
</pre>



That's it! Abgesehen von dem "Drumherum" - ein klassischer 3-Zeiler ;-)<br />
</p>

<p>
Die einzelnen Zeilen haben es jedoch ganz schön in sich.


<pre class="brush: js; gutter: false;">
var application = new Nx.Application($('.page'));
</pre>


Diese Zeile instanziert eine neue Terrific-Application. Was auffällt ist, dass Terrific den <a href="http://docs.jquery.com/Using_jQuery_with_Other_Libraries">Namespace</a> <em>Nx</em> (für Namics) verwendet. So kann Terrific auch parallel zu bestehenden oder durch das Backendsystem vorgegebenen JavaScript-Funktionalitäten verwendet werden.<br />
Der Parameter <em>$('.page')</em> gibt den Context der Applikation an - <em>.page</em> ist nach <span class="caps">OOCSS</span>-Konvention der Seitencontainer.<br />
</p>
<p>


<pre class="brush: js; gutter: false;">
application.registerModules();
</pre>


<em>registerModules</em> übernimmt den Hauptteil des Bootstraps. Die Methode durchsucht den <span class="caps">DOM</span>-Tree nach Modulen - nach <span class="caps">OOCSS</span>-Konvention besitzen sämtliche Module die Klasse <em>.mod</em> - und instanziert per Namenskonvention die entsprechenden Module. Zum Beispiel wird für die Klasse <em>.modNews</em> das JavaScript Modul <em>Nx.Module.News</em> instanziert.<br />
</p>
<p>
Als Pendant zu den <span class="caps">OOCSS</span>-Skins bietet Terrific JavaScript-Skins an - welche im Grunde nichts anderes als Module <a href="http://en.wikipedia.org/wiki/Decorator_pattern#JavaScript">Decorators</a> sind.<br />
Auch die Dekoration der Module geschieht - wie könnte es auch anders sein - per <span class="caps">OOCSS</span>-Namenskonvention. Besitzt ein <span class="caps">DOM</span>-Node die Skin-Klasse <em>.skinNewsHighlighted</em> so wird das <em>Nx.Module.News</em> Modul mit dem <em>Nx.Module.News.Highlighted</em> Skin dekoriert.<br />
</p>
<p>
Um eine Kommunikation zwischen den Modulen zu ermöglichen - ohne mit dem <a href="http://en.wikipedia.org/wiki/Loose_coupling">Loose Coupling</a> Gedanken zu brechen - werden in der <em>registerModules</em>-Methode auch noch per Namenskonvention definierte Kommunikationskanäle zwischen den Modulen aufgebaut.<br />
</p>
<p>
Nachdem also alle Module inkl. Skins und Connectors in der <em>Application</em> registriert sind, kommt der Bootstrap in die letzte Phase.


<pre class="brush: js; gutter: false;">
application.startAll();
</pre>


Mit <em>startAll</em> wird die Initialisierung der Module gestartet. Jedes Modul durchläuft dabei potentiell vier Phasen, welche nach Bedarf durch die entsprechende <a href="http://de.wikipedia.org/wiki/Schablonenmethode">Hook-Methode</a> implementiert werden können.<br />
</p>
<ul>
<li>dependencies - Nachladen von Libraries, Plugins etc. via Ajax</li>
<li>beforeBinding - Daten per Ajax holen, <span class="caps">DOM</span> Manipulationen etc.</li>
<li>onBinding - Events binden</li>
<li>afterBinding - Default State herstellen, Events triggern etc.</li>
</ul>
<p>
In den häufigsten Fällen werden jedoch nicht alle Phasen, sondern nur die <em>onBinding</em>-Phase benötigt. Terrific kümmert sich dabei um das Timing und die sequentielle Abarbeitung der vier Module-Phasen.<br />
</p>
<h3>Beispiel gefällig?</h3>
<p>
Greifen wir das Modul-Beispiel aus dem "letzten Post":"http://blog.namics.com/2010/07/terrific-oocss-part2.html wieder auf.

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="Terrific-Module.png" src="http://blog.namics.com/2009/Terrific-Module.png" width="370" height="217" class="mt-image-none" style="" /></span></p>

Das Currency Converter Module hat folgende Funktionalitäten:<br />
</p>
<ul>
<li>Ajax Live-Convertion</li>
<li>Non-JavaScript Variante mit Convert Button</li>
<li>Automatische Erstberechnung des aktuellen Werts</li>
</ul>
<br /><strong>dependencies</strong><br />
<p>
Da nicht nach jedem Tastendruck eine Ajax-Berechnung ausgelöst werden soll, sondern nur sobald der Benutzer aufhört zu tippen, benötigen wir das <a href="http://benalman.com/code/projects/jquery-throttle-debounce/docs/files/jquery-ba-throttle-debounce-js.html">jQuery throttle / debounce Plugin</a> von <a href="http://benalman.com/">Ben Alman</a>.


<pre class="brush: js; gutter: false;">
/**
 * Hook function to load the module specific dependencies.
 *
 * @method dependencies
 * @return void
*/
dependencies: function() {
    this.require('jquery.throttle-debounce.min.js', 'plugin', 'onBinding');
}
</pre>


Der dritte Parameter - in unserem Beispiel "onBinding" - gibt an, in welcher Phase die dependency benötigt wird. Terrific kümmert sich um das Timing und die entsprechenden Callbacks. Zudem stellt Terrific sicher, dass von mehreren Modulen benötigte dependencies nicht doppelt nachgeladen werden.<br />
</p>
<br /><strong>beforeBinding</strong><br />
<p>
Alternativ zur Live-Convertion bietet die Non-JavaScript Variante einen zusätzlichen Convert Button. Dieser kann in der JavaScript Variante versteckt werden. <span class="caps">DOM</span> Manipulationen werden - um unnötiges Flackern zu vermeiden - in der <em>beforeBinding</em>-Phase durchgeführt.



<pre class="brush: js; gutter: false;">
/**
 * Hook function to do module specific stuff before binding the events (i.e. fetching some data).
 *
 * @method beforeBinding
 * @param {Function} callback the callback function which must be called at the end
 * @return void
 */
beforeBinding: function(callback) {
    $(':submit', this.$ctx).hide();
    callback();
}
</pre>



Durch die Verwendung von <em>this.$ctx</em> (this.$ctx enthält den Module-DOM-Node) als zweiten Parameter im jQuery-Selector, werden die Events nur auf die aktuelle Modulinstanz gebunden. So können Module also auch problemlos mehrmals auf einer Seite verwendet werden.<br />
</p>
<br /><strong>onBinding</strong><br />
<p>
In der <em>onBinding</em>-Phase werden die Events gebunden.



<pre class="brush: js; gutter: false;">
/**
 * Hook function to bind the module specific events.
 *
 * @method onBinding
 * @return void
*/
onBinding: function() {
    var that = this;
    
    // disable the standard action on submit
    $('.converter', this.$ctx).bind('submit', function() {
       return false;
    });
    
    // bind the keyup event to start the convertion. To reduce the number
    // of ajax calls, the debounce plugin is used.
    $('.amount', this.$ctx).keyup($.debounce(250, function() {
        var $this = $(this).closest('form');
        var url = $this.attr('action') + '?' + $this.serialize();
        // ajax stuff etc.
        ...
        return false;
    }));
}
</pre>


<p>In unserem Beispiel wird durch <em>return false</em> - da die Live-Convertion nicht per Enter, sondern automatisch nach Beendigung der Eingabe ausgelöst werden soll - die Standard-Submitaktion unterbunden.</p>

Im <em>keyup</em>-Eventhandler kommt das in der <em>dependencies</em>-Phase nachgeladene <em>debounce</em>-Plugin zum Einsatz. Dadurch kann die Anzahl Ajax-Requests stark reduziert werden, da die Berechnung erst nach 250ms Idle-Time ausgelöst wird.<br />
</p>
<br /><strong>afterBinding</strong><br />
<p>
Damit dem Benutzer gleich zu Beginn eine aktuelle Berechnung präsentiert werden kann - zum Beispiel der aktuelle Eurokurs - wird in der <em>afterBinding</em>-Phase die Initialberechnung ausgelöst.


<pre class="brush: js; gutter: false;">
/**
 * Hook function to do module specific stuff after binding the events (i.e. triggering some events).
 *
 * @method afterBinding
 * @return void
 */
afterBinding: function() {
    $('.amount', this.$ctx).trigger('keyup');
}
</pre>


</p>

<h3>Was kann Terrific sonst noch?</h3>
<p>
Obwohl die Modul-Funktionalität den Hauptpart des Terrific JavaScript Systems darstellt, hat Terrific noch zahlreiche weitere JavaScript Features zu bieten, die das Programmiererleben erheblich erleichtern. Einige der Funktionen, die Terrific mit sich bringt:<br />
</p>
<ul>
<li>Skins - Module Decorators</li>
<li>Layouts - seitenweite Funktionalitäten, z.B. Drag'n Drop von Modulen etc.</li>
<li>Connectors - ermöglichen die Kommunikation zwischen Modulen über konfigurierbare Kanäle</li>
<li>Sandbox - Bezug von Ressourcen, Zugriff auf andere Modulinstanzen etc.</li>
<li>Logging-Architektur</li>
<li>Zentrales Errorhandling</li>
<li>...</li>
</ul>
<p>
Die Terrific-Funktionalitäten sind also ziemlich umfassend ;-). Bis jetzt konnten wir alle Kundenwünsche mit den Bordmitteln von Terrific umsetzen. Neue, anspruchsvolle und herausfordernde Frontends sind also herzlich willkommen!<br />
</p>

<h3>Real World Beispiele?</h3>
<p>
Das <a href="http://www.namics.com/taten/neues-intranet-repower/">Intranet von Repower</a>  wurde komplett mit Terrific umgesetzt. Integriert wurde das Ganze in das Enterprise Wiki <a href="http://www.atlassian.com/software/confluence/">Atlassian Confluence</a>. Wiki? Anspruchvolles Frontend? Wie man dies unter einen Hut bringen kann, zeigen wir im nächsten Terrific-Post!<br />
</p>

<script type="text/javascript">
     SyntaxHighlighter.all()
</script>]]></description>
            <link>http://blog.namics.com/2010/08/terrific-javascript-part3.html</link>
            <guid>http://blog.namics.com/2010/08/terrific-javascript-part3.html</guid>
            <category>Technologie</category>
            <pubDate>Wed, 18 Aug 2010 12:20:00 +0100</pubDate>
            <author>Remo Brunschwiler</author>
        </item>

        <item>
            <title>Bundestrojaner bald auch in der Schweiz? (Vernehmlassungsfrist bis am 18. August)</title>
            <description><![CDATA[<p>Es soll nur niemand sagen können, dass er es nicht gewusst habe!</p>

<p>Das "Bundesgesetz betreffend die Überwachung des Post- und Fernmeldeverkehrs (BÜPF)" wird überarbeitet und die First für Kommentare dauert noch bis am 18. August. Ich persönlich meine, dass es Kommentare braucht.</p>

<p>Im Kern geht es um die (legitime) Überwachung durch den Staat. Doch die Formulierungen bezüglich der Reichweite sind sehr weit und insb. gehören E-Mail-Verkehr, Internet-Telefonie und auch Hosting dazu (da "Internet Service Provider" als Datenlieferanten genannt werden). Viele der Leser dieses Blog sind vom Gesetz also direkt betroffen.</p>

<p>Unter anderem  wird gefordert, dass der Staat die Überwachungsdaten in Echtzeit erhalten kann. So bräuchte beispielsweise jeder Betreiber einer Voice over IP-Anlage eine stehende Abhörverbindung zum Bund bereitzustellen. Und diese (wie alle Massnahmen) auf eigene Kosten des Betreibers.</p>

<p>Nun soll sich jeder seine eigene Meinung dazu machen und dazu der Link zur offiziellen Information: <a href="http://www.bj.admin.ch/bj/de/home/dokumentation/medieninformationen/2010/ref_2010-05-19.html">"Überwachung des Fernmeldeverkehrs an die technische Entwicklung anpassen"</a>. Und wie gesagt müssten alle die etwas dazu sagen möchten, dies bis <strong>spätestens am 18. August</strong> getan haben.</p>

<p>Da gleichlautende Interventionen die Chance erhöhen angehört zu werden und es aus meiner Sicht auch einfacher ist qualifizierte Änderungsvorschläge zu lesen als das Gesetz selbständig anpassen zu wollen, stelle ich hier ein Schreiben zur Verfügung, welche mir <a href="http://open.ch/">open.ch</a> als mögliche Intervention zur Verfügung gestellt wurde und dem Bundesamt für Justiz eingeschrieben resp. patrick.rohner@bj.admin.ch zugestellt werden kann.</p>

<p>> Download: <span class="mt-enclosure mt-enclosure-file" style="display: inline;"><a href="http://blog.namics.com/2010/Antwort_Vernehmlassung_BUePF.doc">Vernehmlassungsantwort  zur Totalrevision des Bundesgesetzes vom 6. Oktober 2000 betreffend die Überwachung von Post- und Fernmeldeverkehr [doc, 90KB]</a></span></p>

<p>> Hier noch die Adresse:<br />
Bundesamt für Justiz<br />
Direktionsbereich Strafrecht<br />
Bundesrain 20<br />
3003 Bern</p>]]></description>
            <link>http://blog.namics.com/2010/08/bundestrojaner.html</link>
            <guid>http://blog.namics.com/2010/08/bundestrojaner.html</guid>
            
            <pubDate>Sun, 15 Aug 2010 17:15:15 +0100</pubDate>
            <author>Jürg Stuker</author>
        </item>

        <item>
            <title>Dazu empfehlen unsere Kunden...</title>
            <description><![CDATA[<p>Das selbstlernende Empfehlungssystem <a href="http://www.ireus.net/" _cke_saved_href="http://www.ireus.net/">IREUS</a> ist ein SaaS-Angebot von <a href="http://www.pudsys.de/" _cke_saved_href="http://www.pudsys.de/">Prudsys</a>
 generiert Produktempfehlungen für ihren Shop. Prudsys ist einer der 
führenden Anbietern für Produktempfehlungen im deutschsprachigen Raum.<br> Ich habe die Recommendation Services von prudsys für den <a href="http://www.oswald.ch/Products/OswaldShop/Neuheiten%28OswaldProductCatalog%29/Default.aspx" _cke_saved_href="http://www.oswald.ch/Products/OswaldShop/Neuheiten%28OswaldProductCatalog%29/Default.aspx">Oswald Shop</a> benutzt und bin begeistert.</p>
<p><br>Die von der IREUS Recommendation Engine generierten Empfehlungen werden in den Teasers aur der rechten Seite aufgelistet.<span class="yui-non"><a href="http://blog.namics.com/assets_c/2010/08/IREUSimShop-2226.html" _cke_saved_href="http://blog.namics.com/assets_c/2010/08/IREUSimShop-2226.html" _cke_pa_onclick="window.open('http://blog.namics.com/assets_c/2010/08/IREUSimShop-2226.html','popup','width=999,height=710,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://blog.namics.com/assets_c/2010/08/IREUSimShop-thumb-450x319-2226.png" _cke_saved_src="http://blog.namics.com/assets_c/2010/08/IREUSimShop-thumb-450x319-2226.png" alt="IREUSimShop.png" class="mt-image-center yui-img" style="text-align: center; display: block; margin: 0pt auto 20px;" width="450" height="319"></a></span></p>
<br>
<br>
Die <b>Integration von IREUS</b> in einen Shop geschieht rasch und unkompliziert in wenigen Schritten:<br>
<ul><br><li>Ein Konto auf der Webseite von IREUS erstellen.</li><li>Im Konto eine Recommendation Engine anlegen.</li><li>Den Produktekatalog inklusive Kategorien hochladen.</li><li>Eventuell historische Warenkörbe, für das initiale Lernen des Systems, hochladen.</li><li>Design in der Recommendation Engine dem Shop anpassen.</li><li>Auf der Shop Webseite einige Javascript Snippets einfügen.</li><li>Die Recommendation Engine starten.</li></ul>
<br>
Und schon kann im IREUS Cockpit mitverfolgt werden, welche Empfehlungen angeklickt und welche sogar gekauft werden.<br>
<br>
Passt das Design nicht, dann kann das im Betrieb geändert werden. 
Genauso schnell wie die Empfehlungen eingerichtet und aufgeschaltet 
sind, können die IREUS Empfehlungen auch wieder abgeschaltet werden. 
Dies Geschwindigkeit und die sofortige Verfügbarkeit der Services waren 
mit einen Grund, wieso mir die Integration von IREUS Spass machte.<br>
<br>
Der aufwändigste Schritt der Integration war die Aufbereitung des 
Produktekatalogs für den IREUS Import. Für die eCommerce Lösung von 
Oswald gibt es keine IREUS Vollintegration und deshalb gehörte die 
Aufbereitung des Produktekatalogs zu meinen Arbeiten. Ich definierte 
eine eindeutige Identifikationsmethode für die Produkte und exportierte 
alle nötigen Daten für den Produkte Upload in eine kommaseparierte Datei
 (.csv).&nbsp;<br>
<br>
 Im Oswald Shop ist IREUS wie folgt eingebaut:<br>
<ul><br><li>Auf der <b>Produktdetailseite</b> werden max. 3 Produktempfehlungen zu einem einzelnen Produkt ausgegeben.</li><li>Auf der <b>Produktkategorieseite</b> werden max. 3 Produktempfehlungen zur Kategorie ausgegeben.</li><li>Im <b>Warenkorb</b> werden max. 3 generelle Produktempfehlungen ausgegeben und zusätzlich wird der Warenkorb bei IREUS registriert.</li><li>Auch die <b>Bestellbestätigung</b>, das heisst der bestellte Warenkorb, wird an IREUS gesandt.</li></ul>
<br>
Alle Daten, die bei IREUS registriert werden, dienen dem System als 
Grundlage für das selbständige Lernen. IREUS speichert die gekauften 
Produkte und deren Transaktions-ID (eine Identifikationsnummer des 
gekauften Warenkorbes), personenbezogene Daten werden keine gespeichert.
 Durch das selbständige Lernen fliessen Saisoneffekte und neue Produkte 
automatisch in die Empfehlungen ein.<br>
<br>
Wer mit IREUS arbeitet, tut das in erster Linie mit der Webapplikation <b>IREUS Cockpit</b>.<span class="yui-non"><a href="http://blog.namics.com/assets_c/2010/08/IREUSCockpit-2229.html" _cke_saved_href="http://blog.namics.com/assets_c/2010/08/IREUSCockpit-2229.html" _cke_pa_onclick="window.open('http://blog.namics.com/assets_c/2010/08/IREUSCockpit-2229.html','popup','width=819,height=806,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://blog.namics.com/assets_c/2010/08/IREUSCockpit-thumb-450x442-2229.png" _cke_saved_src="http://blog.namics.com/assets_c/2010/08/IREUSCockpit-thumb-450x442-2229.png" alt="IREUSCockpit.png" class="mt-image-center yui-img" style="text-align: center; display: block; margin: 0pt auto 20px;" width="450" height="442"></a></span><br>
Produktdaten, Einstellungen und sogar das Design werden über das Cockpit
 gesteuert. Es ist übersichtlich gestaltet, hat eine integrierte Hilfe 
und ist einfach zu bedienen.<br>
<br>
Ganz ohne ein paar Tipps und Tricks ging's dann doch nicht. Diese fand 
ich in der Dokumentation und wenn's mal nicht mehr weiterging, halfen 
mir die Mitarbeiter von prudsys immer prompt und mit präzisen Antworten.<br>
<br>
<b>Was kostet das Ganze?</b><br>
IREUS kann einen Monat gratis getestet werden. Danach kostest es was. 
Ausschlaggebend sind die Anzahl Produkte im Shop und der Funktionsumfang
 vom prudsys Empfehlungssystem. Das <a href="https://www.ireus.net/home/de/recommendation-engine/leistungspakete.html" _cke_saved_href="https://www.ireus.net/home/de/recommendation-engine/leistungspakete.html">kleinste Leistungspacket</a> beginnt bei monatlichen Kosten von 89.- EUR. Mehr Funktionen als IREUS bietet prudsys <a href="http://www.prudsys.de/rde/rde-recommendations/" _cke_saved_href="http://www.prudsys.de/rde/rde-recommendations/">RDE</a>.<br>
<br>
<b>Und was bringt das Empfehlungssystem?</b><br>
IREUS bringt natürlich eine <b>Umsatzsteigerung</b> im Shop.<br>
 ]]></description>
            <link>http://blog.namics.com/2010/08/dazu-empfehlen.html</link>
            <guid>http://blog.namics.com/2010/08/dazu-empfehlen.html</guid>
            <category>Conversion Rate Optimization</category><category>E-Commerce</category><category>Technologie</category>
            <pubDate>Tue, 10 Aug 2010 09:02:00 +0100</pubDate>
            <author>Bettina Dober</author>
        </item>

        <item>
            <title>Display Trends und Scrollen ...</title>
            <description><![CDATA[<p>Mit 30" Monitoren, Netbooks, iPads und kleineren mobilen Endgeräten ist die Vielfalt an Displays und Auflösungen mit denen sich gegenwärtig Internetseiten betrachten lassen so groß wie nie.</p>

<p>Welche Optionen bieten sich heute, was bringt die Zukunft? Scrollen oder nicht? - Die folgende Präsentation bringt eine Übersicht auf den Schirm.</p>

<p><object type="application/x-shockwave-flash" data="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=screensolutontrends-100804074601-phpapp02&stripped_title=screen-resolution-trends" width="500" height="412" style="margin-bottom: 1em;"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=screensolutontrends-100804074601-phpapp02&stripped_title=screen-resolution-trends" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/></object></p>]]></description>
            <link>http://blog.namics.com/2010/08/display-trends.html</link>
            <guid>http://blog.namics.com/2010/08/display-trends.html</guid>
            <category>Technologie</category><category>User Centered Design</category><category>User Experience</category>
            <pubDate>Wed, 04 Aug 2010 15:27:50 +0100</pubDate>
            <author>Jesko Arlt</author>
        </item>

        <item>
            <title>Internet Zugang in Frankreich: Mobil, temporär und billig</title>
            <description><![CDATA[<p>Am Eingang zur Roaming-Hölle (1 MB bei Swisscom für CHF 3.-) habe ich eine Lösung für Frankreich gesucht und gefunden. Kostenpunkt sind EUR 9.90 für 3 Tage unlimited mit dem <a href="http://www.sfr.fr/mobile/ipad.jspe">"Kit 3G+ iPad" von France Télécom</a> inklusive einer Micro SIM. Anbei die ganze Geschichte.</p>

<p><strong>1) Man kaufe ein "Kit 3G+ iPad"</strong></p>

<p>Im "iPad-Rausch" hat <a href="http://www.sfr.fr">SFR</a> (France Télécom) ein Angebot für EUR 9.90 lanciert. Ich habe das <a href="http://www.sfr.fr/mobile/ipad.jspe">das Pack</a> (3 Tage unlimitierter Zugang  inkl. ein Micro SIM) in der <a href="http://www.fnac.com">Fnac</a> gekauft. Da eine Verlängerung des Zugangs pro Tag EUR 6.- (!!) kosten würde, könnte man durchaus versucht sein, ein paar Pakete zu kaufen ;-)</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="Verpackung des iPad 3G+ Pack von SFR" src="http://blog.namics.com/2010/kit-3g-sfr-ipad.JPG" width="300" height="400" class="mt-image-none" style="" /></span></p>

<p>Da es sich um ein Prepaid handelt (kein Voice und kein SMS, nur Data) muss man seine Personalien per Post oder in einem <a href="http://www.sfr.fr">SFR-Shop</a> belegen, sonst wird das Abo nach 15 Tagen deaktiviert. Da ich es aber nur drei Tage nutzen werde...</p>

<p><strong>2. Die Konfiguration fürs iPad</strong></p>

<p>Als erstes habe ich die Micro SIM in mein iPad gesteckt und über einen "Subscriber Update" (leider nur mit iTunes und einem alternativen Internet-Zugang) erhalten. Dieser ist aber nicht notwenig resp. das einzige was ich wissen und einstellen muss ist, der APN von SFS mit dem Namen websfr</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="APN von SFR heisst websfr" src="http://blog.namics.com/2010/apn-sfr-ipad.jpg" width="400" height="301" class="mt-image-none" style="" /></span></p>

<p><strong>3. Und nun die Skalierung ;-)</strong></p>

<p>Für die meisten Leute genügen die ersten Schritte, da wir aber rund 10 Geräte dabei haben die über WLan gerne Internet-Zugang hätten, nun der spannendste Schritt ;-) Ich habe aus der Verpackung des Kits eine Adapter Micro SIM <> SIM <a href="http://www.flickr.com/photos/jstuker/4833972270/">geschnitzt</a>. Das Ding sieht wie folgt aus und ist praktisch für einen "erweiterte Nutzung" ;-)</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="Rahmen um eine Micro SIM als SIM einzusetzen " src="http://blog.namics.com/2010/rahmen-sim-micro_sim.JPG" width="400" height="301" class="mt-image-none" style="" /></span></p>

<p>Die nun so gewachsene SIM setzte ich (zusammen mit dem Wissen, dass der APN websfr heisst) in einen WLan <> GMS Router in. In meinem Fall ist es die <a href="http://www.joikushop.com/">Software JoikuSpot</a> auf meinem Nokia Telefon, jedes <a href="http://developer.android.com/sdk/android-2.2-highlights.html">Android 2.2 kann es von Haus</a> aus, beim (genackten) iPhone wäre es <a href="http://www.junefabrics.com/iphone/index.php">PdaNet</a> oder halt ganz normale Hardware (<a href="http://www.swisscom.ch/res/internet/mobile-unlimited/router/index.htm">z.B. bei Swisscom</a>).</p>

<p>PS: Nach 2 Tagen (und über 2 GBit Traffic) kann ich die Lösung nur empfehlen...</p>]]></description>
            <link>http://blog.namics.com/2010/07/internet-zugang.html</link>
            <guid>http://blog.namics.com/2010/07/internet-zugang.html</guid>
            
            <pubDate>Wed, 28 Jul 2010 15:32:37 +0100</pubDate>
            <author>Jürg Stuker</author>
        </item>

        <item>
            <title>Neu in JSF2, Teil 1: Facelets und GET Requests</title>
            <description><![CDATA[<p>Mittlerweile ist Java EE 6 bereits mehr als sechs Monate alt. Höchste Zeit also für Java Entwickler und Architekten, sich mit den Neuerungen zu befassen. Als Dienstleister rund ums Web stehen für Namics natürlich die neuen Features rund um Web-Applikationen im Fokus. Eines der wichtigsten Unterprojekte von Java EE in diesem Umfeld sind die JavaServer Faces (JSF). Dieses Framework für den View-Layer der Applikation hat inzwischen einige Jahre auf dem Buckel, wurde jedoch von ehemals Sun, nun Oracle, stetig weiterentwickelt und hat viele Verbesserungen der Open Source Gemeinde in den neuen Standard 2.0 aufgenommen. JSF gehört zu den Bestandteilen von Java EE, bei denen die weitreichendsten Neuerungen vorgenommen wurden. Wir bei Namics haben bereits ein grösseres Projekt unter Verwendung von JSF2 durchgeführt und uns daher etwas genauer damit beschäftigt.</p>
<p>Im Rahmen einer kleinen Reihe im Blog werde ich ein paar interessante Neuerungen des Frameworks vorstellen. Bestandteil jedes Artikels ist immer auch ein lauffähiges Beispiel-Projekt, welches die besprochenen Features sowohl zur Laufzeit als auch im enthaltenen Quellcode illustriert.</p>
<h3>Setup</h3>
<p>Applikationen mit JSF2 sind immer noch normale Java-Web-Applikationen ohne spezielle Abhängigkeiten bezüglich Java EE 6. Damit sind sie auch in jedem halbwegs aktuellen Servlet-Container lauffähig und erfordern keinen speziellen Applikationsserver. Falls im Web-Container vorhanden, kann man jedoch die Vorzüge von Servlet 3.0, einer weiteren Java EE 6 Neuerung, nutzen. Durch dessen annotation-based Konfiguration von Servlets und Filtern erfordert JSF2 keine Konfiguration mehr. Es reicht, die Libraries in die Applikation aufzunehmen, den Rest erledigt der Container automatisch. Das FacesServlet, welches den JSF-Kontext bei Zugriffen initialisiert, wird dann auf "*.jsf" gemappt. Gerade zum Aufsetzen des Projekts ist das sehr praktisch und erlaubt es dem Entwickler, sofort loszulegen. </p>
<p>Durch Servlet 3.0 kann man sogar auf den Deskriptor der Applikation, die web.xml Datei, komplett verzichten. Dasselbe gilt für die JSF-eigene Konfigurationsdatei "faces-config.xml". Sie ist optional und dank der neuen annotation-based Konfiguration von JSF selbst wird sie auch nur noch in speziellen Fällen benötigt. Hierzu später mehr.</p>
Diese Erleichterungen sind optional, man kann JSF weiterhin auch in der web.xml konfigurieren um auch noch für Servlet 2.x lauffähig zu bleiben, und eine erstellte faces-config.xml Datei wird ebenfalls genutzt sofern sie vorhanden ist.
<p>Um die Vorteile demonstrieren zu können, nutzt die angehängte Beispielapplikation Servlet 3.0, z.B. im neuen <a href="http://tomcat.apache.org/download-70.cgi">Apache Tomcat 7.0</a> .</p>
<h3>View</h3>
<h4>Mach's gut, JSP - Hallo Facelets!</h4>
<p>Die fundamentale Änderung in JSF2 im Vergleich zur Vergangenheit ist sicherlich der Wechsel der View-Technologie. Früher waren JavaServer Pages (JSP) hierfür der Standard. Nach anfänglich starker Kritik wurde dessen Integration zwar verbessert, erreichte aber nie ein Niveau mit dem alle Beteiligten zufrieden sein konnten.</p>
<p>Bereits vor Release von JSF2 hatte sich Facelets als quasi-Standard etabliert. Facelets ersetzt JSP durch ein XML-Format. Es bietet deutlich flexiblere Templating-Features, eine eigene Taglibrary sowie die Möglichkeit, das Gros der Standard Tag Library (JSTL) weiterhin zu nutzen. Ein weiterer Vorteil ist dass, wenn entsprechend eingesetzt (<i>jsfc</i> Attribut), der Code auch zur Entwicklungszeit gültiges XHTML darstellt. Dadurch kann die Seite sowohl vom Java- als auch vom Frontend-Entwickler direkt bearbeitet werden.</p>
<p>Mit JSF2 ist nun Facelets die Standard View Description Language (VDL). Bis auf ein paar Namensanpassungen wurden die Facelets 1.x dafür weitgehend übernommen, die Unterstützung von JSP wurde dagegen abgekündigt. Die VDL von JSF2 ist also genau gesehen nicht neu, sondern nur übernommen worden. Daher beschäftige ich mich in diesem Artikel auch nicht näher mit den Standard-Features von Facelets.</p>
<h4>Warum GET das bessere POST ist</h4>
<p>Denn es gibt auch abseits des VDL-Wechsels spannende Neuerungen. Eine davon ist der stark verbesserte Support von HTTP GET Requests. Früher lief eine Anfrage des Benutzers in JSF oft nach dem POST - Redirect - GET Pattern ab: Zuerst eine Action/Navigation per POST auslösen, dann den Redirect zur Ziel-View an den Benutzer senden, der dann schliesslich mit einem neuerlichen GET die neue View lädt. Anders waren Features wie Bookmarks oder Refresh-Support für den Browser des Benutzers kaum lösbar. Dies wird nun durch einige neue Features rum um die Parameter-Verarbeitung bei GET Requests in vielen Fällen möglich.</p>
<h4>f:viewParam</h4>
<p>Ein GET Parameter kann vor Rendering einer View in eine Bean übernommen werden. Dies funktioniert im neuen f:metadata Block einer View.</p>
<pre>&lt;f:metadata&gt;<br>	&lt;f:viewParam name="base" value="#{calculator.base}" /&gt;<br>&lt;/f:metadata&gt;</pre>
<p>Ein eventuell vorhandener Parameter "base"  wird somit in die Bean "calculator" übernommen. Es handelt sich hierbei um eine normale Component, was den Vorteil hat dass alle Konverter und Validatoren ebenfalls auf View-Parameter angewandt werden können. Gerade bei GET Requests ist dies essentiell, denn durch simple Änderung der URL kann der Benutzer hier jegliche Werte eingeben. Zusätzlich unterstützt die Component auch das übliche <i>required</i> Flag, um eine Angabe zu erfordern. Kombiniert kann dies dann wie folgt aussehen.</p>
<pre>&lt;f:metadata&gt;<br>	&lt;f:viewParam name="base" value="#{calculator.base}" <br>	required="true"&gt;<br>		&lt;f:validateDoubleRange minimum="1" /&gt;	 <br>	&lt;/f:viewParam&gt;<br>&lt;/f:metadata&gt;<br></pre>
<p>Schlägt eine Validierung fehl, wird der Wert nicht in die Bean übernommen und es tritt ein normaler JSF-Validierungsfehler auf, d.h. es wird eine FacesMessage zur möglichen Ausgabe erzeugt. </p>
<h4>PreRenderViewEvent</h4>
<p>Per View-Parameter kann also ein Wert vor Rendering der View in die Beans übernommen werden. Meistens will man dies, um die View entsprechend dem Parameter unterschiedlich zu gestalten. Zum Beispiel um einen Datensatz zu laden. Dafür wird eine zusätzliche Methode benötigt, die nach dem Abfüllen der Beans aufgerufen wird, aber noch vor dem Rendering der Seite. Genau zu diesem Zeitpunkt wird der <i>PreRenderViewEvent</i> geworfen. Im <i>f:metadata</i> Block kann man zu diesem Zweck einen Event-Listener registrieren. Der Listener besteht aus der Methode einer Bean; sie muss public sein, sollte keinen Rückgabewert liefern und entweder keinen Parameter, oder ein <i>ComponentSystemEvent</i> akzeptieren. Der Listener wird dann nach der Übernahme der Parameter aufgerufen, und zwar unabhängig von den Validierungen. Es bietet sich daher an, auf fehlgeschlagene Validierungen zu prüfen, bevor man die Parameter nutzt. Mit der neuen Methode <i>isValidationFailed()</i> kann seit JSF2 im <i>FacesContext</i> einfach geprüft werden, ob eine der Validierungen fehlgeschlagen ist.</p>
<pre>&lt;f:metadata&gt;<br>	...<br>	&lt;f:event type="preRenderView" <br>	listener="#{calculator.calculate}" /&gt;<br>&lt;/f:metadata&gt;<br></pre>
<pre>public void calculate() {<br>	FacesContext ctx = FacesContext.getCurrentInstance();<br>	if (!ctx.isValidationFailed()) {			<br>		...<br>	}<br>}<br></pre>
<p>Neben der Initialisierung der Daten für eine View hat die Listener Methode noch weitere Möglichkeiten. So kann sie über den <i>NavigationHandler</i> sogar das Rendering auf eine andere View umleiten, beispielsweise bei fehlender Authorisierung des Benutzers.</p>
<h4>h:link</h4>
<p>Da man nun sehr einfach GET Parameter abfüllen und verwenden kann, besteht natürlich auch erhöhter Bedarf danach, GET Links zu erstellen. Zur Navigation wurde in JSF bisher hauptsächlich auf <i>h:commandLink</i> und <i>h:commandButton</i> gesetzt. Diese erzeugten POST Requests. Zwar konnte mit <i>h:outputLink</i> auch ein GET Link generiert werden; diese Component wendet jedoch kaum Logik an, sodass man die Link Generierung sowie das Anfügen eventueller Parameter manuell vornehmen musste.</p>
<p>Hier setzt die neue <i>h:link</i> Component an. Sie erfordert eine logische View-ID, die dann über die Navigation Rules zur URI aufgelöst wird. Im einfachsten Fall entspricht die View-ID dem Pfadnamen der Seite in der Web-Applikation ohne Dateiendung. Übrigens ist auch dies neu: Bisher musste man selbst für dieses simple Mapping Datei-&gt;View-ID eine Navigation Rule im XML erstellen. Eine erneute Vereinfachung, um sehr schnell mit der Entwicklung loszulegen.<br>Ausserdem kann man der <i>h:link</i> Component noch Parameter über den Standard-Tag <i>f:param</i> mitgeben, diese Parameter werden automatisch als Query-Parameter an die URL angehängt.</p>
<pre>&lt;h:link outcome="calculate" value="Next page"&gt;<br>	&lt;f:param name="base" value="8"/&gt;<br>&lt;/h:link&gt;<br></pre>
<p>Der daraus generierte Link kann dann z.B. so aussehen: <i>/calculate.jsf?base=8</i> . Es sind beliebig viele Parameter kombinierbar. Bei komplexen Seiten kann es hilfreich sein, alle View-Parameter mitzunehmen, also an den generierten Link weiterzugeben. Das geht per <i>includeViewParams</i> Attribut. Zusätzlich angegebene <i>f:param Tags</i> können die Liste erweitern oder einzelne Parameter aus den <i>includeViewParams</i> überschreiben.</p>
<pre>&lt;h:link outcome="calculate" includeViewParams="true"<br>	value="Next page"<br>	&lt;f:param name="base" value="8"/&gt;<br>&lt;/h:link&gt;<br></pre>
<p>Der resultierende Link wird alle View-Parameter der aktuellen Seite umfassen, sowie zusätzlich den Parameter "base" mit dem Wert 8, egal ob bereits ein View-Parameter mit dem Namen "base" existierte oder nicht.</p>
<p>Damit bringt JSF2 nun endlich die Möglichkeit, umfassend mit GET-Requests zu arbeiten und somit dem Benutzer ein einfacheres, mehr RESTful Verhalten in der Applikation zu bieten. Es gibt Zusätze zu JSF, die dies noch ausbauen und ein echtes REST-Verhalten erzeugen können (z.B. <a href="http://ocpsoft.com/prettyfaces/">PrettyFaces</a>), aber jetzt sind auch die mitgelieferten Werkzeuge dafür tauglich und in der Komplexität akzeptabel.</p>
<h3>Download</h3>
<span class="yui-non"><a href="http://blog.namics.com/2010/jsf2_1/jsf2demo.zip">Lauffähige Beispiel-Applikation inkl. Quellcode</a></span>
<h3>Ausblick</h3>
<p>Dieser kurze Einstieg in JSF2 war nur der Anfang. An den Managed Beans wurden Änderungen vorgenommen sowie neue Scopes eingeführt. Es gibt nun mehrere Möglichkeiten, eigene Components zu erstellen. Die Validierung wurde entscheidend erweitert. Im kommenden Teil 2 der Reihe rund um JSF2 wird es um eine ganz zentrale Neuerung von JSF2 gehen: Die Einführung von out-of-the-box Unterstützung für Ajax.</p>
<p>Fragen und Diskussionen rund um JSF2 und Java EE 6? Gerne als Kommentar im Blog oder per <a href="mailto:matthias.wermund@namics.com">E-Mail</a>.</p>]]></description>
            <link>http://blog.namics.com/2010/07/neu-in-jsf2-1.html</link>
            <guid>http://blog.namics.com/2010/07/neu-in-jsf2-1.html</guid>
            
            <pubDate>Sun, 25 Jul 2010 21:12:43 +0100</pubDate>
            <author>Matthias Wermund</author>
        </item>

    </channel>
</rss>

