Liomans Blog - bloghttps://lioman.de/42 ist die Antwort – aber wie lautet die Frage?Mon, 07 Nov 2022 17:00:00 +0100Youtube-Videos datenschutzsicher eingebundenhttps://lioman.de/2022/11/youtube-videos-datenschutzsicher-eingebunden/<p>YouTube-Videos waren hier bisher mit dem Plugin <a href="https://pypi.org/project/pelican-youtube/">pelican-youtube</a> eingebunden. Mit diesem Plugin gab es zwar immerhin den no-cookie Modus, bei dem keine Cookies gesetzt werden. Allerdings gibt es immer noch zwei&nbsp;Probleme:</p> <ul> <li>es wird der Javascript-Player&nbsp;geladen</li> <li>dieser bindet GoogleFonts&nbsp;ein</li> </ul> <p>Deswegen habe ich hier nun die Implementierung geändert und setze jetzt auf <a href="https://github.com/pelican-plugins/liquid-tags">liquid-tags</a>. Dieses Plugin bietet neben mehr Flexibilität im Allgemeinen auch einen Modus für YouTube, bei dem nur das Vorschaubild angezeigt&nbsp;wird.</p> <p>Streng genommen hat man so das eingebundene Video durch einen Link ersetzt, aber so muss man sich hier nicht darum kümmern irgendwelche Banner auftauchen zu&nbsp;lassen.</p> <p>Das Ganze könnte man noch verbessern, indem man entweder das Vorschaubild selbst ausliefert und/oder den Link durch eine <a href="https://invidious.io/">Invidious</a>-Instanz zu&nbsp;ersetzen.</p> <p>Mit etwas <span class="caps">CSS</span> bekommt man auch noch einen schicken Knopf, der direkt zum Video&nbsp;führt.</p> <div class="highlight"><pre><span></span><code><span class="p">.</span><span class="nc">youtube_video</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">margin</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="kc">auto</span><span class="p">;</span> <span class="w"> </span><span class="k">text-align</span><span class="p">:</span><span class="w"> </span><span class="kc">center</span><span class="p">;</span> <span class="w"> </span><span class="k">position</span><span class="p">:</span><span class="w"> </span><span class="kc">relative</span><span class="p">;</span> <span class="w"> </span><span class="k">display</span><span class="p">:</span><span class="w"> </span><span class="kc">inline-block</span><span class="p">;</span> <span class="p">}</span> <span class="p">.</span><span class="nc">youtube_video</span><span class="p">::</span><span class="nd">before</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">font-family</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Font Awesome 6 Free&quot;</span><span class="p">;</span> <span class="w"> </span><span class="k">content</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;\f144&quot;</span><span class="p">;</span> <span class="w"> </span><span class="k">font-size</span><span class="p">:</span><span class="w"> </span><span class="mi">5</span><span class="kt">em</span><span class="p">;</span> <span class="w"> </span><span class="k">padding</span><span class="p">:</span><span class="w"> </span><span class="mf">0.05</span><span class="kt">em</span><span class="w"> </span><span class="mf">0.2</span><span class="kt">em</span><span class="p">;</span> <span class="w"> </span><span class="k">position</span><span class="p">:</span><span class="w"> </span><span class="kc">absolute</span><span class="p">;</span> <span class="w"> </span><span class="k">left</span><span class="p">:</span><span class="w"> </span><span class="mi">50</span><span class="kt">%</span><span class="p">;</span> <span class="w"> </span><span class="k">top</span><span class="p">:</span><span class="w"> </span><span class="mi">50</span><span class="kt">%</span><span class="p">;</span> <span class="w"> </span><span class="k">transform</span><span class="p">:</span><span class="w"> </span><span class="nb">translate</span><span class="p">(</span><span class="mi">-50</span><span class="kt">%</span><span class="p">,</span><span class="w"> </span><span class="mi">-50</span><span class="kt">%</span><span class="p">);</span> <span class="w"> </span><span class="k">z-index</span><span class="p">:</span><span class="w"> </span><span class="mi">99</span><span class="p">;</span> <span class="p">}</span> <span class="p">.</span><span class="nc">youtube_video</span><span class="p">:</span><span class="nd">hover</span><span class="p">::</span><span class="nd">before</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">filter</span><span class="p">:</span><span class="w"> </span><span class="nb">invert</span><span class="p">();</span> <span class="p">}</span> <span class="p">.</span><span class="nc">youtube_video</span><span class="p">::</span><span class="nd">after</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">content</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Das Video auf YouTube abspielen.&quot;</span><span class="p">;</span> <span class="w"> </span><span class="k">font-size</span><span class="p">:</span><span class="w"> </span><span class="mf">0.9</span><span class="kt">em</span><span class="p">;</span> <span class="w"> </span><span class="k">padding</span><span class="p">:</span><span class="w"> </span><span class="mf">0.05</span><span class="kt">em</span><span class="w"> </span><span class="mf">0.2</span><span class="kt">em</span><span class="p">;</span> <span class="w"> </span><span class="k">position</span><span class="p">:</span><span class="w"> </span><span class="kc">absolute</span><span class="p">;</span> <span class="w"> </span><span class="k">left</span><span class="p">:</span><span class="w"> </span><span class="mi">50</span><span class="kt">%</span><span class="p">;</span> <span class="w"> </span><span class="k">top</span><span class="p">:</span><span class="w"> </span><span class="mi">70</span><span class="kt">%</span><span class="p">;</span> <span class="w"> </span><span class="k">transform</span><span class="p">:</span><span class="w"> </span><span class="nb">translate</span><span class="p">(</span><span class="mi">-50</span><span class="kt">%</span><span class="p">,</span><span class="w"> </span><span class="mi">-50</span><span class="kt">%</span><span class="p">);</span> <span class="w"> </span><span class="k">z-index</span><span class="p">:</span><span class="w"> </span><span class="mi">99</span><span class="p">;</span> <span class="p">}</span> <span class="p">.</span><span class="nc">youtube_video</span><span class="p">:</span><span class="nd">hover</span><span class="p">::</span><span class="nd">after</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">filter</span><span class="p">:</span><span class="w"> </span><span class="nb">invert</span><span class="p">();</span> <span class="w"> </span><span class="k">text-decoration</span><span class="p">:</span><span class="w"> </span><span class="kc">underline</span><span class="p">;</span> <span class="p">}</span> <span class="p">.</span><span class="nc">youtube_video</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nt">img</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">object-fit</span><span class="p">:</span><span class="w"> </span><span class="kc">cover</span><span class="p">;</span> <span class="p">}</span> </code></pre></div> <p><a href="https://invidious.adminforge.de/watch?v=DjiE1rC99dk" class="youtube_video" alt="YouTube Video" title="Click to view on YouTube" target="_blank" rel="noopener noreferrer"> <img width="640" height="480" src="https://invidious.adminforge.de/vi/DjiE1rC99dk/sddefault.jpg"> </a></p>LiomanMon, 07 Nov 2022 17:00:00 +0100tag:lioman.de,2022-11-07:/2022/11/youtube-videos-datenschutzsicher-eingebunden/AllgemeinGDPRDatenschutzblogpelicanyoutubePelican: Artikel verschiebenhttps://lioman.de/2022/05/pelican-artikel-verschieben/<p>Dieses Blog wird nun seit einiger Zeit mit <a href="https://getpelican.com">pelican</a> gerendert. Initial hatte ich&nbsp;auf <code>*.rst</code>-Dateien gesetzt, inzwischen bin ich dazu übergegangen doch Markdown zu verwenden. Die meisten Dateien werden vermutlich nie konvertiert werden, doch hier und da halte ich es für sinnvoll die Datei umzubenennen. Dazu kommt, dass ich jetzt in allen Dateinamen das Erscheinungsdatum am Anfang haben möchte. Bringt man dann noch der <span class="caps">IDE</span>/der Shell/dem Filemanager das absteigende Sortieren bei, hat man immer die aktuellsten Artikel ganz oben. Das macht, das Auffinden schlicht&nbsp;einfacher.</p> <p>Wie man das Datum extrahiert, werde ich eventuell in einem anderen Artikel beschreiben. Hier soll es um die Lösung eines anderen Problems gehen. Interne Links referenzieren bei pelican die Datei und die ist nach dem Umbenennen einfach nicht mehr richtig. Man, müsste also durch alle Artikel-Dateien gehen, den alten Dateinamen suchen und durch den Neuen ersetzen. Das ist selbst bei einigen wenigen Dateien sehr aufwendig und lässt sich wunderbar automatisieren. Da ich schon <a href="https://www.pyinvoke.org/">invoke</a> als Taskrunner im Stack habe, habe ich hierfür einen Task&nbsp;geschrieben:</p> <div class="highlight"><pre><span></span><code><span class="nd">@task</span> <span class="k">def</span> <span class="nf">movefile</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">):</span> <span class="w"> </span><span class="sd">&quot;&quot;&quot;Move an file and update all references&quot;&quot;&quot;</span> <span class="k">try</span><span class="p">:</span> <span class="n">old</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">old</span><span class="p">)</span> <span class="n">new</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">new</span><span class="p">)</span> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Copy file </span><span class="si">{</span><span class="n">old</span><span class="si">}</span><span class="s2"> to </span><span class="si">{</span><span class="n">new</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> <span class="n">new</span><span class="o">.</span><span class="n">write_text</span><span class="p">(</span><span class="n">old</span><span class="o">.</span><span class="n">read_text</span><span class="p">())</span> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Delete </span><span class="si">{</span><span class="n">old</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> <span class="n">old</span><span class="o">.</span><span class="n">unlink</span><span class="p">()</span> <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;replace all links&quot;</span><span class="p">)</span> <span class="n">all_articles</span> <span class="o">=</span> <span class="nb">filter</span><span class="p">(</span> <span class="k">lambda</span> <span class="n">p</span><span class="p">:</span> <span class="n">p</span><span class="o">.</span><span class="n">suffix</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;.rst&quot;</span><span class="p">,</span> <span class="s2">&quot;.md&quot;</span><span class="p">],</span> <span class="n">Path</span><span class="p">(</span><span class="s2">&quot;./content&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="s2">&quot;**/*&quot;</span><span class="p">)</span> <span class="p">)</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">all_articles</span><span class="p">:</span> <span class="n">text</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read_text</span><span class="p">()</span> <span class="k">if</span> <span class="n">old</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="n">text</span><span class="p">:</span> <span class="n">f</span><span class="o">.</span><span class="n">write_text</span><span class="p">(</span><span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">old</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">new</span><span class="o">.</span><span class="n">name</span><span class="p">))</span> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Ups: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> </code></pre></div> <p>Nun kann ich&nbsp;mit <code>invoke movefile /pfad/zum/Artikel.md /pfad/zum/Neuen-Artikel.md</code> die Datei umbenennen und in allen anderen Posts, wird der Link ersetzt. Eine kleine Warnung: Ich habe den Task nur bei mir getestet und er funktioniert so weit. Aber es ist doch eher eine schnelle Lösung und man sollte sich das Ergebnis genau anschauen, bevor man es&nbsp;benutzt.</p>LiomanThu, 26 May 2022 18:25:00 +0200tag:lioman.de,2022-05-26:/2022/05/pelican-artikel-verschieben/AllgemeinpelicanpythonbloginvokeKommentare werden nun wieder angezeigthttps://lioman.de/2018/04/kommentare-werden-nun-wieder-angezeigt/<p>Über das Osterwochenende habe ich diesem stiefmütterlich behandelten Blog mal wieder ein bisschen Zeit geschenkt. Auch wenn es hier nie besonders viele Kommentare gab, finde ich dass zu einem Blog Kommentare einfach dazu gehören. Nun nutze ich kein System mehr, dass alle Inhalte dynamisch rendert sondern <a class="reference external" href="https://blog.getpelican.com/">Pelican</a>. Aus Textdateien werden <span class="caps">HTML</span>-Seiten generiert und dann von einem Webserver ausgeliefert. Der Vorteil ist natürlich Geschwindigkeit und Einfachheit. Der Preis ist der Verlust der Dynamik. Um Kommentare wieder zu ermöglichen und auch die alten anzuzeigen, gibt es verschiedene&nbsp;Möglichkeiten.</p> <ul class="simple"> <li>Man kann auf einen externen Dienst wie <a class="reference external" href="https://disqus.com/">Disqus</a>&nbsp;setzen.</li> <li>Ein Plugin installieren, dass das kommentieren per Mail&nbsp;ermöglicht.</li> <li>ein eigenes Kommentarsystem&nbsp;hosten.</li> </ul> <p>Ich habe mich für die letzte Variante entschieden und <a class="reference external" href="https://posativ.org/isso/">isso</a> auf dem Server installiert. Der Import hat problemlos funktioniert und nachdem ich die entsprechenden Codeschnipsel in das Template eingefügt habe, zeigen sich alle alten Kommentare unter den entsprechenden&nbsp;Artikeln.</p> <p>Jetzt muss ich nur auch mal wieder hier ein paar Inhalte reinstellen, damit es auch wieder neue Kommentare&nbsp;gibt.</p> LiomanThu, 12 Apr 2018 11:25:33 +0200tag:lioman.de,2018-04-12:/2018/04/kommentare-werden-nun-wieder-angezeigt/AllgemeinkommentareissoblogFarewell Wordpress - Hello Pelican!https://lioman.de/2017/04/farewell-wordpress-hello-pelican/<p>Dieses Blog existiert seit 2008. Von Anfang an habe ich Wordpress eingesetzt. Wie viele andere auch nahm ich zuallererst die Dienste von Wordpress-Hersteller <a class="reference external" href="https://automattic.com/">Automattic</a> in Anspruch und veröffentlichte mein Blog auf <a class="reference external" href="https://wordpress.com">Wordpress.com</a>. Um mehr Kontrolle über Plugins, Themes, etc. zu bekommen, wechselte ich dann auf die selstbgehostete Version. Das Blog zog ein paar mal von Hoster zu Hoster, die Technik blieb jedoch immer die&nbsp;Gleiche.</p> <p>Schon lange hatte ich mich dazu entschieden, das Blog mal wieder umzuziehen und auch die Technik zu wechseln. Das hat verschiedene Gründe. Zum Einen komme ich nicht mehr so häufig zum Schreiben. Zum anderen ist auch das Kommentaraufnahmen (im Gegensatz zum Spamaufkommen) nicht besonders hoch. Eine dynamische Lösung mit Datenbank, tausenden Plugins, Kommentarsystem, usw. ist eigentlich zu groß und um wirklich performant zu laufen, müsste ich den Server&nbsp;aufstocken.</p> <p>Nach dem ich eine ganze Weile mit dem Gedanken schwanger gegangen und habe mich nun für <a class="reference external" href="https://blog.getpelican.com/">Pelican</a>&nbsp;entschieden.</p> <p>Alle Artikel habe ich importiert und diverse Fehler sind korrigiert. Einiges fehlt sicher noch, doch ich werde vermutlich nicht alle alten Artikel nochmals anschauen können. Ein wirkliches Manko ist das bisher fehlende Kommentarsystem. Hierfür gibt es diverse Lösungen, die auch mit alten Wordpress-Kommentaren umgehen können. Eine Entscheidung habe ich allerdings noch nicht&nbsp;getroffen.</p> <p>Hierzu und zum Umzug generell, werde ich in nächster Zeit einen detaillierten Artikel&nbsp;veröffentlichen.</p> LiomanTue, 11 Apr 2017 21:37:02 +0200tag:lioman.de,2017-04-11:/2017/04/farewell-wordpress-hello-pelican/AllgemeinBlogPelicanWordpressstatischUmbauarbeiten im Bloghttps://lioman.de/2015/02/umbauarbeiten-im-blog/<p>Derzeit experimentiere ich wieder ein wenig mit der Technik hinter diesem Blog. Performance und Optik brauchen ein wenig Liebe und Pflege. Die Performance war zuletzt unterirdisch, denn hier waren zu viele Plugins aktiviert und auch das Caching war nicht so geschickt&nbsp;gelöst.</p> <p>Auch wenn das alte Theme prinzipiell schön responsiv war und <a class="reference external" href="http://www.elmastudio.de/wordpress-themes/yoko/">Yoko</a> per se ein wirklich gutes Theme ist, suche ich doch ein anderes, das noch sauberer und schlanker und geschickter&nbsp;ist.</p> <p>Ein endgültige Wahl ist noch nicht getroffen und so wird sich hier die Oberfläche des Öfteren ändern . Wenn ich nichts passendes finde könnte ich mir sogar Vorstellen ein ganz eigenes zu schreiben. Inzwischen muss man ja nicht mehr bei Null starten, sondern kann auf zum Beispiel <a class="reference external" href="http://underscores.me/">Underscores</a>aufsetzen.</p> LiomanSun, 22 Feb 2015 17:53:00 +0100tag:lioman.de,2015-02-22:/2015/02/umbauarbeiten-im-blog/AllgemeinBlogPerformanceThemeWordpressRückschau 2014https://lioman.de/2015/01/ruckschau-2014/<div class="section" id="eine-kleine-steigerung-zu-2013"> <h2>Eine kleine Steigerung zu&nbsp;2013</h2> <p>Nachdem das Jahr 2013 hier extrem schlecht über die Bühne ging, war das vergangene Jahr doch wieder etwas erfolgreicher. &nbsp;Eigentlich wollte ich mein kleines Plugin fertig haben, das hier den Rückblick zumindest zahlenmäßig schon mal vollautomatisch unterfüttert, aber nachdem ich das Plugin für das <a class="reference external" href="http://www.lioman.de/plugins-scripte/2012-summary/">Jahr 2012</a>&nbsp;angefangen habe umzuschreiben, kam ich schnell zu dem Ergebnis, dass ich vieles komplett anders und richtiger machen will (Derzeit hänge ich noch daran, wie man JavaScript zu einem Blogartikel hinzufügt - ich möchte nicht das man das Plugin deaktivieren kann ohne die Grafiken zu zerstören ) und das heißt wiederum, dass ich jetzt hier das ganze händisch zusammentragen&nbsp;werde.</p> <p>Auf jeden Fall habe ich im Jahre 2014 genau 14 Artikel geschrieben - also etwas mehr als einer pro Monat und das ist mir noch zu wenig. Es müssen ja nicht unbedingt 92 sein wie 2012, aber ein paar mehr könnten es schon sein. Ich hoffe, dass ich da etwas disziplinierter im neuen Jahr&nbsp;bin.</p> </div> <div class="section" id="besucherstatistiken"> <h2>Besucherstatistiken</h2> <div class="figure align-right"> <a class="reference external image-reference" href="https://lioman.de/images/Geraete2014.png"> <img alt="Geräte der Leser 2014" class="size-full" src="https://lioman.de/images/Geraete2014.png" style="width: 494px; height: 250px;" /> </a> <p class="caption">Geräte der Leser im Jahr&nbsp;2014</p> </div> <p>Nun noch ein paar Statistiken über meine Besucher. Wie man nebenstehender Grafik sieht kommen die meisten immer noch mit einem großen Bildschirm hier an. 72% sind es genauer gesagt. Doch auch mobil gab es einige Besucher und es sind sogar ein paar mehr geworden. Das hat mich nicht wirklich&nbsp;gewundert.</p> <div class="figure align-left"> <a class="reference external image-reference" href="https://lioman.de/images/OS2014.png"> <img alt="Betriebssysteme der Leser 2014" class="size-full" src="https://lioman.de/images/OS2014.png" style="width: 494px; height: 250px;" /> </a> <p class="caption">Betriebssysteme der Leser im Jahre&nbsp;2014</p> </div> <p>Erstaunlich finde ich eher, dass der Anteil der Windowsnutzer weiterhin so groß ist. 55% aller Besucher hatten ein Betriebssystem aus dem Hause Microsoft. Das sind immerhin noch 76% aller Desktopnutzer. Allerdings hatte ich auch nicht so viele Artikel im <a class="reference external" href="http://planet.ubuntuusers.de/">ubuntuusers-planet</a> und <a class="reference external" href="http://osbn.de">osbn</a> veröffentlicht und diese beiden Seiten bringen immer noch die meisten Nutzer. Abgesehen davon ist im Suchmaschinenbereich Google weiterhin so führend, wie in den vergangenen Jahren und die passende Grafik lass ich deswegen einfach&nbsp;weg.</p> </div> <div class="section" id="abschluss"> <h2>Abschluss</h2> <p>Das soll es nun auch gewesen sein mit meinem kleinen Rückblick. Ich hoffe ich kann den nächsten automatisch generieren lassen und mit ein paar hübschen Grafiken versehen. Wenn ich weiter bin, wird es hier mehr dazu geben. Vornehmen tue ich mir erst mal nichts, denn am Ende kommt es doch anders. Nur mein Blogdesign gefällt mir nicht mehr ganz so gut und sollte ich mal einen Haufen Zeit finden, werde ich lioman.de einen neuen Anstrich&nbsp;verpassen.</p> </div> LiomanThu, 15 Jan 2015 21:06:00 +0100tag:lioman.de,2015-01-15:/2015/01/ruckschau-2014/AllgemeinBlogJahresrückblickPluginStatistikenReaktivierunghttps://lioman.de/2014/04/reaktivierung/<p>Jetzt liegt diese Blog schon eine ganze Weile auf Eis und der <a class="reference external" href="http://www.lioman.de/2013/08/cassis-buttermilcheis/">letzte Artikel</a> ist letztes Jahr im August&nbsp;erschienen.</p> <p>Doch ich möchte dieses kleine Projekt nicht aufgeben und außerdem juckt es mich in den Fingern. Themen gibt es genug und Zeit versuche ich einfach auch wieder zu finden. Nicht ganz einfach neben all den Aufgaben, die sonst so auf einen warten. Jetzt werde ich erst langsam wieder starten, um es hier wenigstens auf <a class="reference external" href="http://ironblogger.de/">Ironblogger</a>-Niveau zu heben. Wenn das klappt, kann ich es ja vielleicht auch mal damit&nbsp;probieren.</p> <p>Also weiter geht&#8217;s und neue Artikel kommen&nbsp;bestimmt.</p> LiomanThu, 10 Apr 2014 19:09:00 +0200tag:lioman.de,2014-04-10:/2014/04/reaktivierung/AllgemeinBlogbloggenrektivierungJahresrückblick 2012 - eigene Statistiken und Nutzersoftwarehttps://lioman.de/2013/01/jahresrueckblick-2012/<p>Schon letztes Jahr habe ich einen <a class="reference external" href="https://www.lioman.de/2011/12/jahresrueckblick-2011/">kleinen Jahresrückblick</a> geschrieben und dieses Jahr kommt der entsprechende Artikel spät, aber er kommt. Zuerst ein paar Zahlen, was hier so los war. 2012 wurden hier <strong>92</strong> posts und&nbsp; <strong>3</strong> Seiten mit insgesamt 19872 Wörtern (deutlich weniger als letztes Jahr) veröffentlicht bzw.&nbsp;aktualisiert.</p> <p><strong>Artikel pro&nbsp;Monat:</strong></p> <table border="1" class="docutils"> <colgroup> <col width="50%" /> <col width="50%" /> </colgroup> <tbody valign="top"> <tr><td>January:</td> <td><div class="first"><div class="y2012summaryChartBar" style="width: 12px;"></div></div><p><p class="last">16&nbsp;(17.39%)</p> </td> </tr> <tr><td>February:</td> <td><div class="first"><div class="y2012summaryChartBar" style="width: 5px;"></div></div><p><p class="last">6&nbsp;(6.52%)</p> </td> </tr> <tr><td>March:</td> <td><div class="first"><div class="y2012summaryChartBar" style="width: 2px;"></div></div><p><p class="last">2&nbsp;(2.17%)</p> </td> </tr> <tr><td>April:</td> <td><div class="first"><div class="y2012summaryChartBar" style="width: 11px;"></div></div><p><p class="last">15&nbsp;(16.3%)</p> </td> </tr> <tr><td>May:</td> <td><div class="first"><div class="y2012summaryChartBar" style="width: 6px;"></div></div><p><p class="last">8&nbsp;(8.7%)</p> </td> </tr> <tr><td>June:</td> <td><div class="first"><div class="y2012summaryChartBar" style="width: 14px;"></div></div><p><p class="last">18&nbsp;(19.57%)</p> </td> </tr> <tr><td>July:</td> <td><div class="first"><div class="y2012summaryChartBar" style="width: 6px;"></div></div><p><p class="last">8&nbsp;(8.7%)</p> </td> </tr> <tr><td>August:</td> <td><div class="first"><div class="y2012summaryChartBar" style="width: 3px;"></div></div><p><p class="last">4&nbsp;(4.35%)</p> </td> </tr> <tr><td>September:</td> <td><div class="first"><div class="y2012summaryChartBar" style="width: 3px;"></div></div><p><p class="last">4&nbsp;(4.35%)</p> </td> </tr> <tr><td>October:</td> <td><div class="first"><div class="y2012summaryChartBar" style="width: 8px;"></div></div><p><p class="last">10&nbsp;(10.87%)</p> </td> </tr> <tr><td>November:</td> <td><div class="first"><div class="y2012summaryChartBar" style="width: 5px;"></div></div><p><p class="last">6&nbsp;(6.52%)</p> </td> </tr> <tr><td>December:</td> <td><div class="first"><div class="y2012summaryChartBar" style="width: 2px;"></div></div><p><p class="last">2&nbsp;(2.17%)</p> </td> </tr> </tbody> </table> </div><p>Diese Statistik erstaunt mich schon. Klar, dass es Monate gibt mit mehr oder weniger Zeit oder klassische Ferienmonate in denen man einfach nicht zum Bloggen kommt, weil man die Zeit an der wunderschönen Schlei bei traumhaften Wetter verdödelt. (Herrlicher Urlaub in herrlicher Gegend)&nbsp; Aber es ist doch verwunderlich wie ungleichmäßig die Artikel verteilt sind. Im März und Dezember nur zwei Artikel sind ganz schön schwach. Gut, dass es auch stärkere Monate gibt und ich so auf einen Schnitt von knapp acht Artikeln pro Monat komme. Das ist nicht gut, aber einigermaßen Okay. Ich hoffe aber, dass das 2013 besser wird. Vor allen die Verteilung sollte ausgeglichener&nbsp;sein.</p> <p>Doch kommen wie nun zu den Lesern dieses Blogs - oder besser - zu denen die nicht nur passiv mitlesen sondern hier mitgestalten. Erstmal möchte ich allen Danken, die hier nachgefragt, Meinungen geäußert oder gar zusätzliche Informationen geteilt haben. Es freut mich immer sehr, wenn ich Kommentare zu meinen Artikeln im Blog finde und ganz besonders freut es mich, dass es deutlich mehr geworden&nbsp;sind.</p> <p>Vielleicht liegt es am <a class="reference external" href="http://planet.ubuntuusers.de/">Ubuntuusers Planeten</a> und <a class="reference external" href="http://osbn.de"><span class="caps">OSBN</span></a>, aber mit <strong>299</strong> Kommentaren kann ich zufrieden sein (auch wenn ein Großteil von mir selbst stammt). Die andere Seite der Medaille sind allerdings die unzähligen Spamkommentare, die glücklicherweise zum großen Teil von <a class="reference external" href="http://www.lioman.de/2010/11/neuer-spamfilter-antispambee/">AntispamBee</a> gefiltert&nbsp;werden.</p> <p>Doch hier sind die, denen mein Dank besonders&nbsp;gilt.</p> <p><strong>Die <span class="caps">TOP</span> 10 Kommentatoren im Jahre&nbsp;2012:</strong></p> <ul class="simple"> <li>Fellmonsterchen: <strong>5</strong>&nbsp;comments</li> <li>Mella: <strong>4</strong>&nbsp;comments</li> <li>Steven: <strong>4</strong>&nbsp;comments</li> <li>Link: <strong>4</strong>&nbsp;comments</li> <li>Anonym: <strong>4</strong>&nbsp;comments</li> <li>Anaximander: <strong>4</strong>&nbsp;comments</li> <li>Holger: <strong>3</strong>&nbsp;comments</li> <li>christian: <strong>3</strong>&nbsp;comments</li> <li>phoenics: <strong>3</strong>&nbsp;comments</li> <li>keinorhase: <strong>3</strong>&nbsp;comments</li> </ul> <p>Das <a class="reference external" href="http://monstermeute.wordpress.com/">Fellmonsterchen</a> kann sich die Kommentatorenkrone gerne abholen, denn sie war hier am fleißigsten, auch wenn ich viel zu wenige Artikel für das<a class="reference external" href="http://www.lioman.de/tag/52-buecher/">52 Bücher-Projekt</a> geschrieben&nbsp;habe.</p> <p><strong>Die <span class="caps">TOP</span> 10 meist kommentierte Posts sind übrigens diese&nbsp;hier:</strong></p> <ul class="simple"> <li><a class="reference external" href="http://www.lioman.de/2012/08/ubuntu-auf-einem-zigarettenautomaten/">Ubuntu auf einem Zigarettenautomaten</a>: <strong>29</strong>&nbsp;comments</li> <li><a class="reference external" href="http://www.lioman.de/2012/07/mein-erster-androide-und-wie-soll-ich-ihn-befuellen-2/">Mein erster Androide und wie soll ich ihn befüllen</a>: <strong>24</strong>&nbsp;comments</li> <li><a class="reference external" href="https://lioman.de/2012/01/blog-buch-box/">Blog Buch Box</a>: <strong>22</strong>&nbsp;comments</li> <li><a class="reference external" href="http://www.lioman.de/2012/11/logoklau/">Logoklau?</a>: <strong>18</strong>&nbsp;comments</li> <li><a class="reference external" href="https://lioman.de/2012/02/die-buecherbox-besucht/">Die Bücherbox besucht&#8230;</a>: <strong>17</strong>&nbsp;comments</li> <li><a class="reference external" href="http://www.lioman.de/2012/05/befreie-deinen-router/">Befreie deinen Router</a>: <strong>13</strong>&nbsp;comments</li> <li><a class="reference external" href="http://www.lioman.de/2012/04/inhalte-auf-google-teilen/">Inhalte auf Google+ teilen</a>: <strong>12</strong>&nbsp;comments</li> <li><a class="reference external" href="http://www.lioman.de/2012/11/sicherheitsleck-bei-piwik/">Sicherheitsleck bei Piwik</a>: <strong>10</strong>&nbsp;comments</li> <li><a class="reference external" href="http://www.lioman.de/2012/10/update-fehlgeschlagen-ubuntu-12-10-zerstoert-die-installation/">Update Fehlgeschlagen - Ubuntu 12.10 zerstört die Installation</a>: <strong>8</strong>&nbsp;comments</li> <li><a class="reference external" href="http://www.lioman.de/2012/01/statische-buttons-zum-teilen-einbinden/">Statische Buttons zum teilen einbinden</a>: <strong>7</strong>&nbsp;comments</li> </ul> <p><em>Summary generated by `2012 Summary plugin&nbsp;&lt;http://www.lioman.de/plugins-scripte/2012-summary/&gt;`__</em></p> <p>Für diese Statistiken habe ich übrigens extra das Plugin von <a class="reference external" href="http://tomasz.topa.pl/">Tomasz Topa</a> bearbeitet, da <em>Word Stats</em> nicht mehr so richtig will. Näheres dazu gibt es aber <a class="reference external" href="http://www.lioman.de/plugins-scripte/2012-summary/">hier</a>.</p> <div class="figure align-left"> <img alt="Blogbesucher 2012 nach Ländern" src="https://lioman.de/images/stats2012_laender.png" /> <p class="caption">Blogbesucher 2012 nach&nbsp;Ländern</p> </div> <p>Und nun weiter im Text, denn wie letztes Jahr möchte ich noch ein paar Zahlen aus Piwik präsentieren.Keine große Überraschung ist die Verteilung nach Ländern. Bei einem deutschsprachigen Blog kommen die meisten Besucher eben aus dem deutschsprachigen Raum. Unter <em>&#8220;Andere&#8221;</em> verbergen sich übrigens wirklich aller Herren Länder. Soweit so uninteressant. Kommen wir zu etwas&nbsp;Anderen.</p> <div class="figure align-left"> <img alt="Browserbesuche" src="https://lioman.de/images/stats2012_browser.png" /> <p class="caption">Mit welchen Browsern mein Blog 2012 besucht&nbsp;wurde.</p> </div> <p>Bei der Verteilung der Browser hat sich ein bisschen was getan. Firefox büßt gegenüber der WebKit-Fraktion ein paar Prozentpunkte ein. Knapp 10% mehr Besucher kommen nun mit Browsern aus dem Hause Apple oder Google auf dieses Blog. Ich kann mir denken, dass das an deren Stärke im Mobilen Segment liegt. Das ist stark am Wachsen, und man merkt es auch hier. Immer mehr nutzen jetzt Tablets und Smartphones um im Internet zu surfen. So haben 2011 noch 3% dieses Blog mit tastaturlosen Geräten besucht nun sind es <strong>10%</strong>&nbsp;.</p> <div class="figure align-right"> <img alt="Mobil vs Desktop" src="https://lioman.de/images/stats2012_mobil_vs_desktop.png" /> <p class="caption">Mobil vs. Desktop&nbsp;2012</p> </div> <p>Diese Entwicklung wird meiner Einschätzung nach auch noch weiter gehen, da es immer mehr vergleichsweise gute Tablets zu erschwinglichen Preisen gibt. Gerade Lowcost-Androiden eignen sich perfekt als kleine Surfmaschinen, da dafür weder extrem gute Prozessoren/viel Arbeitsspeicher usw. benötigt&nbsp;werden.</p> <div class="figure align-left"> <img alt="Besucher nach OS" src="https://lioman.de/images/stats2012_os.png" /> <p class="caption">Besucher nach <span class="caps">OS</span></p> </div> <p>Kommen wir zu den Betriebssystemen. 30 % nutzen hier Linux, also 7% weniger als 2011. Das fand ich erst einmal schade, denn das freie <span class="caps">OS</span> liegt mir doch am Herzen und ich hatte mit dem Beitritt zum Planeten und zu <span class="caps">OSBN</span> doch eher mehr erwartet. Interessanterweise können weder MacOS noch Microsofts Systeme erheblich dazu gewinnen. <span class="caps">MS</span> gewinnt nur 2% und es kamen weniger MacUser als im Jahr davor. Man kann also sagen mehr Android und mehr iOS ist weniger Linux und MacOS. Ich vermute jedoch, dass das im nächsten Jahr anders sein wird. WinXP hat hoffentlich stark schwindende Nutzerzahlen und ich denke, dass all die Tablets im nächsten Jahr noch ganz stark an der Verbreitung von Desktop-PCs und damit an der Marktbeherrschung des bisherigen Platzhirschen Microsoft knabbern werden. Wie es im nächsten Jahr bei den mobilen Systemen weitergeht ist auch eine spannende Frage. Denn hinter <em>&#8220;Andere&#8221;</em> in der Grafik verbergen sich hauptsächlich Android und iOS, die ziemlich ausgeglichen sich bei mir die Waage halten. Doch es gibt natürlich ein paar Exoten und ich muss hier einen kleinen Aufruf&nbsp;starten:</p> <p><em>Lieber Windows-98-Nutzer bitte geh mit deinem <span class="caps">PC</span> nicht mehr ins Internet! Lass dir von einem bekannten ein neueres System installieren. Mein Vorschlag wäre eine schicke kleine Linux-Distribution, die auch noch auf älteren Rechnern Spaß machen kann. Wenn du niemanden hast, der dir dabei behilflich ist, dann kontaktiere mich doch bitte. Ich helfe dir&nbsp;sicher!</em></p> <p>Und zu guter Letzt noch die Flattr-Einnahmen des letzten Jahres: <strong>5,89€</strong> Mal sehen welch extravaganten Luxusartikel ich mir davon gönnen&nbsp;werde.</p> <p>Ich wünsche den Lesern des letzten Jahres alles Gute im Jahre 2013 und hoffe, dass ihr hier wieder interessantes findet und vielleicht den ein oder anderen Kommentar absetzt oder Link teilt. Dann kommen auch viele neue Leser&nbsp;hinzu.</p> LiomanTue, 08 Jan 2013 16:59:00 +0100tag:lioman.de,2013-01-08:/2013/01/jahresrueckblick-2012/DigitalOpen Source2012BlogBrowserJahresrückblickStatistikPiwik 1.9 - Statistiken grafisch aufbereitethttps://lioman.de/2012/10/piwik-1-9-statistiken-grafisch-aufbereitet/<p><strong>Die Open-Source Webanalysesoftware</strong> <a class="reference external" href="http://piwik.org">Piwik</a> <strong>ist in der neuen Version 1.9 erschienen und hat tolle neue Funktionen mit an&nbsp;Bord.</strong></p> <p>Da alle Statistikplugins für Wordpress die Datenbank aufblasen und externe Dienste meist aus Datenschutzgründen nicht in Frage kommen, setze ich schon seit einiger Zeit auf eine selbstgehostete Lösung. Zuerst war es noch <a class="reference external" href="http://www.lioman.de/2009/11/statistiktool-pagelogger/">Pagelogger</a>, aber seit Piwik auf dem Markt ist habe ich <a class="reference external" href="http://www.lioman.de/2010/11/blogstatistik-wieder-umgestellt/">umgestellt</a> und es bisher nicht bereut. Piwik ist leistungsstark, anpassbar, datenschutzkonform und featurereich, hinkte aber GoogleAnalytics hinterher, da es bisher versucht hat Kernfunktionen des Platzhirsches nachzubilden. Inzwischen haben die Entwickler wohl Zeit gefunden auch wirklich Neues zu entwerfen. Neben kleinerer Verbesserungen und Integrieren von Pluginfunktionen in den Core wartet 1.9 mit einer Funktion auf, die wirklich nützlich&nbsp;ist.</p> <p>Wenn man seine Statistiken anschaut, sind natürlich erstmal die absoluten Kennzahlen (Wieviele kommen/ kamen wann auf welche Seite) und deren Entwicklung wichtig. Das kann aber inzwischen jedes kleine Statistikskript und eigentlich würden dazu sogar Serverlogs reichen. Oft viel interessannter und wichtiger sind Antworten auf die Frage: Woher kamen Besucher und wohin gehen sie? Für ein privates Blog ist das nur spannend für komerzielle Seiten (vor allen Dingen Internetshops) ist diese Analyse geradezu essentiell. Natürlich konnte Piwik solche Daten auch schon in der Vergangenheit anzeigen und auch andere Tools zeigen Referrer, Ein- und Ausstiegseiten oder gar die Verweildauer an. Sich aber durch alle möglichen ´Tabellen und Tools zu klicken ist nicht nur aufwändig, sondern auch unübersichtlich. Hier setzt nun <a class="reference external" href="http://piwik.org/docs/transitions/">Transitions</a> an und bereitet die schon vorhandenen Statistiken grafisch&nbsp;auf.</p> <p><img alt="image0" src="https://lioman.de/images/transitions_icon.png" />Transitions aktiviert man einfach unter &#8220;<em>Einstellungen &gt;&gt; Plugins</em>&#8221;. Bei mir hat es dann ein bisschen gedauert, bis ich mir die ersten Grafiken anschauen konnte. Woran das lag weiß ich nicht. Auf jeden Fall erscheint nun ein neuer Link hinter jedem Seitentitel (z.B unter <em>Aktionen &gt;&gt; Seitentitel</em>), wenn man mit der Maus&nbsp;darüberfährt.</p> <p>Die sich öffnende Grafik zeigt dann schön übersichtlich woher (mit welchen Suchbegriffen) Seitenbesucher kommen und wohin sie danach gehen. Mit diesen Daten kann man dann weiter arbeiten und seine Seite optimieren, um die Verweildauer zu erhöhen. Oder man kann es einfach interessant finden und sich an den schicken Grafiken&nbsp;erfreuen.</p> <div class="figure align-center"> <img alt="Transitions in Piwik" src="https://lioman.de/images/transitions.png" /> <p class="caption">Dieses Bild zeigt Transitions zum Artikel <a class="reference external" href="http://www.lioman.de/2012/10/hallo-osbn-de/">Hallo <span class="caps">OSBN</span>.de</a> an. In Piwik ist diese Grafik&nbsp;interaktiv.[/caption]</p> </div> <p>Das Update lohnt sich also dieses Mal wirklich, denn es gibt nicht nur kleinere Bugfixes sondern mal ein echtes neues Feature. Allen Bloggern, die Piwik nutzen wollen empfehle ich übrigens das Plugin <a class="reference external" href="http://wordpress.org/extend/plugins/wp-piwik/"><span class="caps">WP</span>-Piwik</a></p> LiomanTue, 23 Oct 2012 09:48:00 +0200tag:lioman.de,2012-10-23:/2012/10/piwik-1-9-statistiken-grafisch-aufbereitet/DigitalOpen SourceBlogPiwikStatistikTransitionsupdateSpam oder nicht Spamhttps://lioman.de/2012/10/spam-oder-nicht-spam/<p>Hier gibt es immer mehr Kommentare. Das ist erfreulich, denn Kommentare machen das Bloggen eigentlich erst Bloggenswert. Natürlich kann man auf die Piwikstatistiken starren und sich freuen, dass irgendeine Kurve ein bisschen hoch geht. Und Flattreinnahmen sind ganz nett, auch wenn sie nur sporadisch eintreffen (bei mir reicht es nicht mal für einen Kaffee).Echte Rückmeldungen sind jedoch wirklich ermutigend, denn sie sind direkt und wertvoll.Wertvoll deswegen, weil man sie mit etwas Zeitaufwand verfassen muss. Wenn ich mich vor den <span class="caps">PC</span> oder das Smartphone knalle und Artikel schreibe, dann ist es einfach schön, wenn sich andere Menschen auch ein kleines bisschen Mühe machen und ihren Senf dazugeben. Ein Dank, ein bemerkter Fehler, eine andere Meinung oder schlicht eine Anregung zum Thema werten das Blog und vor allen Dingen das Bloggen&nbsp;auf.</p> <p>Nun gibt es aber noch die dunkle Seite. Denn öffnet man eine Möglichkeit, gibt man Freiheiten kommen all die klebrig-ekligen nervtötenden Müllschleudern des Internets zu dir. Spammer, die ihre Links unbedingt unter jeden Artikel pinkeln wollen. Glücklicherweise sind dies meiste doofe Maschinen und werden schnell und unkompliziert von <a class="reference external" href="http://www.lioman.de/2010/11/neuer-spamfilter-antispambee/">AntispamBee</a> abgefangen. Und es gibt die ebenso doofen Menschen, deren Kommentare so offensichtlich <span class="caps">SPAM</span> sind, dass mein Rückenmark schon die Löschklicks setzen kann ohne erst noch den Zentralrechner &#8220;Hirn&#8221; befragen zu&nbsp;müssen.</p> <p>Aber dann gibt es die dazwischen, irgendwo zwischen wichtig und nichtig. Kommentare, die ganz klar von einem Mensch geschrieben wurden und auch noch zum Artikel irgendwie passen. Der Link aber deutet auf eine rein kommerzielle Internetseite hin und meist ist er auch nicht besonders lang/gehaltvoll. Es ist schwierig zu entscheiden, ob man diese Kommentare freischalten soll und meistens ist es eine sehr individuelle und spontane Angelegenheit. Es gäbe natürlich die Möglichkeit alle nicht gehaltvollen Kommentare generell zu entfernen, aber das möchte ich mir eigentlich nicht anmaßen und hätte auch schnell etwas von Zensur (obwohl&nbsp; das hier ein Privatblog ist und ich hier eigentlich tun und lassen kann was ich will). Auch Verlinkung auf kommerzielle Seiten generell zu unterbinden finde ich nicht in Ordnung, denn wieso sollte jemand, der hier einen Kommentar verfasst und irgendwie auch im Netz Geld verdient nicht auch ein bisschen belohnt werden, wenn er sich die Mühe macht einen Artikel zu lesen und zu Kommentieren. Oft nutze ich die Möglichkeit, zwar zu veröffentlichen, aber den Link auf NoFollow zu&nbsp;setzen.</p> <p>Ich frage nun euch, wie haltet ihr es mit solchen Kommentaren? Wie würdet ihr es halten (wenn ihr bloggen würdet)? Schaltet ihr immer frei, kümmert ihr euch nicht darum oder schaltet ihr die Kommentarfunktion ganz&nbsp;ab?</p> <p><strong>Update:</strong> Dazu passt <a class="reference external" href="http://www.perun.net/2012/10/12/wordpress-kommentator-auf-bewaehrung/">Kommentator auf&nbsp;Bewährung</a></p> LiomanFri, 12 Oct 2012 11:02:00 +0200tag:lioman.de,2012-10-12:/2012/10/spam-oder-nicht-spam/DigitalBlogKommentareSpamHallo OSBN.dehttps://lioman.de/2012/10/hallo-osbn-de/<p>Meine Artikel zum Thema Ubuntu/Linux usw. erscheinen schon seit einiger Zeit im <a class="reference external" href="http://planet.ubuntuusers.de/">Ubuntuusers-Planeten</a>. Seither kann ich einen deutlichen Nutzeranstieg und eine Häufung von Kommentaren (+Beifang = &#8220;<span class="caps">SPAM</span>&#8221;) beobachten. Es freut natürlich den kleinen Blogger, dass die eigenen Artikel entsprechende Verbreitung finden. Trotzdem bin ich vorsichtig mit dem was ich in den Planetefeed schiebe. Wenn man allzu ferne oder banale Themen dort veröffentlicht, werden Leser den kompletten Planeten verlassen, da man sich ja ein Mehrwert und nicht mehr Filterarbeit&nbsp;erhofft.</p> <p>Aber genug vom Planeten, denn eigentlich möchte ich ein neues Projekt vorstellen. Viele Artikel kann und möchte ich nicht im Planeten veröffentlichen. Außerdem kommen wenige Leser wieder. Nur die Artikel werden besucht, sonst nichts. Auf jeden Fall will diese Lücke das<a class="reference external" href="http://osbn.de">Open-Source Blog Netzwerk</a> füllen. Bisher ist das Ganze nichts anderes als ein Feed-Aggregator mit angeschlossenem Forum. Aber es ist noch im wachsen und kann sich alles noch besser werden. Schön ist, dass es weniger Regeln gibt und man so freier mit dem Netzwerk &#8220;spielen&#8221; kann. Außerdem werden die Artikel nur angerissen, was Interessierte (hoffentlich) direkt auf das Blog&nbsp;leitet.</p> <p>Auf das Forum bin ich gespannt, denn jedes Blog bekommt dort gleich einen eigenen Bereich eingerichtet. Ob das wirklich glücklich ist weiß ich nicht, denn wenn das Netzwerk wirklich funktioniert und auch genug Konsumenten auf fleißige Produzenten treffen, besteht ein klein wenig die Gefahr, dass die Diskussion vom Blog ins <span class="caps">OSBN</span> gezogen wird. Allerdings kann man so etwas auch so&nbsp;gestalten.</p> <p>Ich freue mich auf jeden Fall auf neue Leser, viel mehr Kommentare und interessante Diskussionen und&nbsp;Artikel.</p> <p>Dieser hier ist nun einfach zu Ende, weil die Tastatur neuerdings hakt und die Rücktaste mal eben halbe Absätze löscht. Hat jemand einen Tipp für eine gute, leise&nbsp;Tastatur?</p> LiomanFri, 12 Oct 2012 10:24:00 +0200tag:lioman.de,2012-10-12:/2012/10/hallo-osbn-de/DigitalOpen SourceBlogFeedOSBNProjekt1388 Blogposts die Minutehttps://lioman.de/2012/09/1388-blogposts-die-minute/<p><a class="reference external image-reference" href="https://lioman.de/images/suedkurier_15-09-2012_infografikausriss.png"><img alt="image0" class="alignright" src="https://lioman.de/images/suedkurier_15-09-2012_infografikausriss.png" style="width: 306px; height: 300px;" /></a>Am Samstag den 15.09.2012 war im <a class="reference external" href="http://suedkurier.de">Südkurier</a> in der Rubrik <em>Click!</em> eine Infografik zum Thema: Was in einer Minute im Internet passiert. Unter anderem sollen 1388 Blogposts veröffentlicht werden.Daneben prangte das Logo des zu Google gehörenden Dienstes Blogger.com (siehe&nbsp;Bild).</p> <p>Die Zahl kam mir nicht ganz richtig vor und so schrieb ich einen Leserbrief, auf den ich aber bisher noch keine Reaktion bekommen habe. Ich stelle ihn nun auch hier rein. Generell muss man mit solchen Zahln im Netz aufpassen, denn meistens sind sie viel zu hoch. Hier scheint man jedoch tiefgestapelt zu haben, oder es einfach unsauber formuliert zu haben (Formuliert man auch Grafiken?). Was meint ihr dazu und hat jemand bessere Zahlen? Schätzt ihr das ähnlich ein und was ist für euch ein Blog bzw. ein&nbsp;Blogpost.</p> <p>Aber lest erstmal meinen&nbsp;Leserbrief:</p> <blockquote> <div class="line-block"> <div class="line">Sehr geehrte Damen und Herren!</div> <div class="line">Mit großem Interesse habe ich Ihre Infografik am letzten Samstag betrachtet. Vieles erscheint plausibel und sie zeigt ganz gut wo sich das Internet heute so befindet. Trotzdem gibt es Kritikpunkte. So verstehe ich, dass man in vielen Fällen auf Schätzungen angewiesen ist, da die meisten Anbieter sich vornehm zurückhalten, wenn es um genau Daten geht. Doch wären dann auch entsprechende Quellenangaben angebracht, damit der Leser die Zahlen nachvollziehen kann. Zudem kommt, dass ich eine Zahl für vollkommen falsch halte. 1388 Blogposts sind doch ziemlich tiefgestapelt, wenn man keinerlei Einschränkungen hinsichtlich der Plattform macht. Schaut man sich die Statistiken von wordpress.com an, dann kommt man auf eine eine mittlere Veröffentlichungrate von 783 Artikel/Minute. (Erfassungszeitraum 01.07-09.09.2012). Das wären dann 56% der von Ihnen angenommen Artikeln. Wordpress würde sich sicher über eine solche Reichweite freuen, realistisch ist dies jedoch nicht. Es scheint mir eher, sie haben nur Blogger.com betrachtet (dafür spricht auch das Logo des zu Google gehörenden Unternehmens). Dazu kommen aber viele andere Dienstleister + die ganzen selbst gehosteten Blogs.</div> </div> <p>So schön also dieser Überblick ist, so falsch oder eher nicht nachvollziehbar ist&nbsp;sie.</p> <p>Mit freundlichen Grüßen Elias&nbsp;Kirchgässner</p> </blockquote> LiomanSun, 23 Sep 2012 18:10:00 +0200tag:lioman.de,2012-09-23:/2012/09/1388-blogposts-die-minute/DigitalBlogInfografikInternetLeserbriefMein Blog in Google Currentshttps://lioman.de/2012/06/mein-blog-google-currents/<p><img alt="image0" src="https://lioman.de/images/googlecurrents.png" />Google hat eine App für Android und iOS veröffentlicht mit der man einfach Internetseiten in klarer optimierter Darstellung auf einem mobilen Endgerät lesen&nbsp;kann.</p> <p>Dazu&nbsp;abonniert&nbsp;man über den Browser (ähnlich wie <span class="caps">RSS</span>-Feeds) Seiten in die Anwendung und kann diese dann unterwegs lesen. Der Clou &nbsp;dabei ist, dass das auch offline möglich ist, den Google Currents, so der Name der Anwendung, syncronisiert alle abonnierten Inhalte und&nbsp;lädt&nbsp;sie auf das Gerät herunter. Im Gegensatz zu <span class="caps">RSS</span> kann ich als &#8220;Producer&#8221; unter <a class="reference external" href="https://www.google.com/producer/home">Google Currents Producer</a>&nbsp;das Aussehen und die Inhalte kontrollieren und&nbsp;gestalten.</p> <p>Die App gibt es im Play Store&nbsp;für Android oder in <a class="reference external" href="http://itunes.apple.com/us/app/google-currents/id459182288">Itunes</a> für iPhone und&nbsp;iPad.</p> <p>Mein Blog kann man in Currents laden, indem man folgende <span class="caps">URL</span> im mobilen Browser&nbsp;aufruft:</p> <p><a class="reference external" href="https://www.google.com/producer/editions/CAowy7Nd/liomans_blog">https://www.google.com/producer/editions/CAowy7Nd/liomans_blog</a></p> <p>Ich habe dort zwei Bereiche angelegt: &#8220;Blog&#8221; und &nbsp;&#8220;Rund um Linux&#8221; weshalb dieser Artikel auch im Planeten erscheint (Ich hoffe ihr verzeiht das bisschen&nbsp;Eigenwerbung)</p> <p>Kommen mehr als 200 Abos zusammen erscheint das Blog in der&nbsp;Currents-Suche</p> <p>Und hier zum Scannen noch die <span class="caps">QR</span>-Codes:</p> <div class="figure align-left"> <img alt="QR für Android" src="https://lioman.de/images/currents_android.png" /> <p class="caption">Google Currents im Play&nbsp;Store</p> </div> <div class="figure align-left"> <img alt="QR für iOs" src="https://lioman.de/images/currents_ios.png" /> <p class="caption">Google Currents für <a class="reference external" href="http://itunes.apple.com/us/app/google-currents/id459182288">iOS</a></p> </div> <div class="figure align-left"> <img alt="Google Currents" src="https://lioman.de/images/currents_blog.png" /> <p class="caption">Mein Blog bei Google&nbsp;Currents</p> </div> LiomanThu, 14 Jun 2012 14:29:00 +0200tag:lioman.de,2012-06-14:/2012/06/mein-blog-google-currents/DigitalandroidBlogGoogle CurrentsiOSmobilUbuntuusersPlanetWordpress 3.4 mit einfacher Tweet-Einbindunghttps://lioman.de/2012/06/wordpress-3-4-mit-einfacher-tweet-einbindung/<p>Wordpress 3.4 wurde gestern <a class="reference external" href="https://wordpress.org/news/2012/06/green/">veröffentlicht</a> und obwohl wieder mal das Rad nicht neu erfunden wurde, hat sich doch einiges&nbsp;getan.</p> <p>So kann man nun Themes in einer Vorschau vor deren Aktivierung betrachten, die Headergrafik kann besser konfiguriert werden und in Bildunterschriften ist <span class="caps">HTML</span>&nbsp;erlaubt.</p> <p>Die nützlichste Änderung ist das einfügen von Tweets per <a class="reference external" href="https://codex.wordpress.org/Embeds">oEmbed</a>.</p> <p>Dazu gibt man einfach, wie man das auch bei Youtubevideos gewohnt ist, die <span class="caps">URL</span>&nbsp;ein:</p> <p><span class="dquo">&#8220;</span><a class="reference external" href="https://twitter.com/#!/lioman/status/213207320484790272">https://twitter.com/#!/lioman/status/213207320484790272</a>&#8221;</p> <p>und Wordpress macht daraus dann dies&nbsp;hier:</p> <p><a class="reference external" href="https://twitter.com/#!/lioman/status/213207320484790272">https://twitter.com/#!/lioman/status/213207320484790272</a></p> <p>Das schöne: Der Tweet ist weiter nutzbar. <span class="caps">RT</span>, Fav, Folgen ist möglich. Möchte man aber sichergehen, dass der Tweet immer angezeigt wird muss man auf einen Screenshot zurückgreifen, denn wenn der Nutzer ihn entfernt ist er auch hier&nbsp;weg.</p> <p>Der Tweet wird aber leider als Blockquote eingefügt und so stört in diesem Fall meine schöne Anführungszeichengrafik ein&nbsp;bisschen.</p> LiomanThu, 14 Jun 2012 12:07:00 +0200tag:lioman.de,2012-06-14:/2012/06/wordpress-3-4-mit-einfacher-tweet-einbindung/AllgemeinBlogoembedtwitterWordpressInhalte auf Google+ teilenhttps://lioman.de/2012/04/inhalte-auf-google-teilen/<p>Vor einiger Zeit stellte ich eine Möglichkeit vor, wie man einfach <a class="reference external" href="http://www.lioman.de/2012/01/statische-buttons-zum-teilen-einbinden/">statische Buttons</a> in sein Wordpress-Blog einbaut, damit Leser komfortabel Artikel in diversen Sozialen-Netzwerken teilen können. Der Code, der hauptsächlich auf einer Idee von <a class="reference external" href="http://www.perun.net/2011/12/15/facebook-twitter-google-statische-buttons-im-eigenbau/">Perun</a> basiert hatte ein Problem: Teilen auf Google+ war eine Art Workaround, da es keine eigene <span class="caps">URL</span> dafür gab. Das hat sich jetzt geändert den Google hat still und heimlich die Möglichkeit mittels Link zu teilen unter folgender <span class="caps">URL</span> scharfgeschaltet: <em>&#8220;https://plus.google.com/share?url=&#8221;</em></p> <p>Der geänderte Code für die statischen Buttons sieht nun im Falle von Google so&nbsp;aus:</p> <pre class="literal-block"> &lt;li class=&quot;gp-einzeln&quot;&gt;&lt;a href=&quot;https://plus.google.com/share?url=&lt;?php echo urlencode(get_permalink($post-&gt;ID)); ?&gt;&amp;title=&lt;?php echo rawurlencode(strip_tags(get_the_title())) ?&gt;&quot; target=&quot;_top&quot; title=&quot;Bei Google+ empfehlen&quot;&gt;&lt;span&gt;Google+&lt;/span&gt;&lt;/a&gt;&lt;/li&gt; </pre> <p>Eine Javascriptfreie Version von +1 gibt es aber leider immer noch nicht. Das ist schade, denn gerade diese sind ja für eine bessere Platzierung in der Suche&nbsp;wichtig.</p> LiomanMon, 02 Apr 2012 16:41:00 +0200tag:lioman.de,2012-04-02:/2012/04/inhalte-auf-google-teilen/DigitalBlogGoogleSharestatischTeilenWordpressStatische Buttons zum teilen einbindenhttps://lioman.de/2012/01/statische-buttons-zum-teilen-einbinden/<p>Ich hatte eine Weile überlegt, ob ich nicht alle Buttons entfernen sollte. Viel wird von hier aus nicht geteilt und ich bin eigentlich der Meinung solche Knöpfe gehören in den Browser und nicht auf die Seite selbst. Außerdem gibt es ja durchaus auch Datenschutz bedenken. So hatte ich eine Weile die 2-Klick-Lösung eingebunden, aber erstens hat mir das Design nicht gefallen und zweitens machte es ein paar Probleme. (Doppelte Opengraph-Tags, Javascript &#8220;biss&#8221; sich mit anderen&nbsp;Plugins)</p> <p>Nun habe ich mich für die statische Variante entschieden. Der Vorteil: einigermaßen Datenschutzkonform (Daten werden erst bei Klick übertragen) und verdammt schnell,denn es wird dank <a class="reference external" href="http://de.wikipedia.org/wiki/CSS-Sprites"><span class="caps">CSS</span>-Sprites</a> nur eine einzige schlanke Grafik<a class="reference external image-reference" href="http://www.lioman.de/wp-content/themes/yoko_lioman/images/weiterempfehlen.png"><img alt="image0" class="alignright" src="http://www.lioman.de/wp-content/themes/yoko_lioman/images/weiterempfehlen.png" style="width: 24px; height: 130px;" /></a> vom Webserver geladen und nicht, wie bei dynamischen Lösungen, mehrere Grafiken von externen Servern per&nbsp;Javascript.</p> <p>Realisiert habe ich das anhand der Anleitung von <a class="reference external" href="http://www.perun.net/2011/12/15/facebook-twitter-google-statische-buttons-im-eigenbau/">Perun</a>, allerdings habe ich Grafik (siehe rechts) und Code um Flattr erweitert und Xing aus beidem&nbsp;eliminiert.</p> <p><strong>Update:</strong> +1 geht leider nicht, denn dafür müsste man doch einen <span class="caps">JS</span>-Button einbinden. Man kann im sich öffnenden Fenster nur die Seite auf GPlus&nbsp;teilen.</p> <p>Hier ist der Code für die single.php (Flattr UserID <strong>muss</strong> ersetzt&nbsp;werden):</p> <pre class="literal-block"> &lt;div class=&quot;weiterempfehlen&quot;&gt; &lt;p&gt;Diesen Artikel weiterempfehlen:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;https://flattr.com/submit/auto?user_id=lioman&amp;amp;url=&lt;?php echo rawurlencode(get_permalink()) ?&gt;&amp;amp;title=&lt;?php echo rawurlencode(strip_tags(get_the_title())) ?&gt;&amp;amp;description=&lt;?php echo rawurlencode(strip_tags(get_the_excerpt(), true)) ?&gt;&amp;amp;tags=&lt;?php $posttags = get_the_tags();if ($posttags) {foreach($posttags as $tag) { echo $tag-&gt;name . ','; }}?&gt;&amp;amp;category=text&amp;amp;language=de_DE&quot; target=&quot;blank&quot; title=&quot;Flattrn&quot;&gt;&lt;span&gt;Flattr&lt;/span&gt;&lt;/a&gt;&lt;/li&gt; &lt;li class=&quot;tw-einzeln&quot;&gt;&lt;a href=&quot;https://twitter.com/intent/tweet?source=webclient&amp;text=&lt;?php echo rawurlencode(strip_tags(get_the_title())).'&amp;amp;via=lioman&amp;amp;url=' , urlencode(get_permalink($post-&gt;ID))?&gt;&amp;amp;hashtags='&lt;?php $posttags = get_the_tags();$count=0;if ($posttags) {foreach($posttags as $tag) {$count++;if ($count &lt;= 3) {echo $tag-&gt;name . ',';}}}?&gt;&quot; target=&quot;blank&quot; title=&quot;Bei Twitter empfehlen&quot;&gt;&lt;span&gt;Twitter&lt;/span&gt;&lt;/a&gt;&lt;/li&gt; &lt;li class=&quot;fb-einzeln&quot;&gt;&lt;a href=&quot;https://www.facebook.com/sharer/sharer.php?u=&lt;?php echo urlencode(get_permalink($post-&gt;ID)); ?&gt;&amp;t=&lt;?php echo rawurlencode(strip_tags(get_the_title())) ?&gt;&quot; target=&quot;blank&quot; title=&quot;Bei Facebook empfehlen&quot;&gt;&lt;span&gt;Facebook&lt;/span&gt;&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://plus.google.com/share?url=&lt;?php echo urlencode(get_permalink($post-&gt;ID)); ?&gt;&amp;title=&lt;?php echo rawurlencode(strip_tags(get_the_title())) ?&gt;&quot; target=&quot;_top&quot; title=&quot;Bei Google+ empfehlen&quot;&gt;&lt;span&gt;Google+&lt;/span&gt;&lt;/a&gt;&lt;/li&gt; &lt;li class=&quot;del-einzeln&quot;&gt;&lt;a href=&quot;http://del.icio.us/post?url=&lt;?php echo urlencode(get_permalink($post-&gt;ID)); ?&gt;&amp;title=&lt;?php echo rawurlencode(strip_tags(get_the_title())) ?&gt;&quot; target=&quot;blank&quot; title=&quot;Bei Delicious empfehlen&quot;&gt;&lt;span&gt;Delicious&lt;/span&gt;&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;div class=&quot;clearer&quot;&gt;&lt;/div&gt; &lt;/div&gt; </pre> <p>Und ins Theme muss folgender&nbsp;Code:</p> <pre class="literal-block"> .weiterempfehlen {margin-bottom: 19px;} .weiterempfehlen p {font-weight: bold; margin-bottom: 4px !important;} .weiterempfehlen ul {list-style: none; line-height: 24px; margin: 5px 0 15px 0; padding-left: 0;} .weiterempfehlen li {display: inline;} .weiterempfehlen a {float: left; width: 24px; height: 24px; margin-right: 25px; background: url('/wp-content/uploads/2011/12/perun-social-einzelansicht.png') no-repeat; border-bottom: none !important;} .weiterempfehlen span {display: none;} .tw-einzeln a {background-position: left -26px;} .fb-einzeln a {background-position: left -52px;} .gp-einzeln a {background-position: left -78px;} .del-einzeln a {background-position: left -104px;} .weiterempfehlen a:hover {position: relative; top: -1px;} </pre> <p><strong>Update:</strong> Den Twittercode habe ich angepasst, damit auch die <span class="caps">URL</span> und die Tags entsprechend übernommen&nbsp;werden.</p> <p><strong>Update2:</strong> Der Code ist so angepasst, dass nun auch die Google+-Teilen-<span class="caps">URL</span> unterstützt wird. näheres <a class="reference external" href="http://www.lioman.de/2012/04/inhalte-auf-google-teilen/">siehe in meinem Artikel dazu</a>.</p> LiomanMon, 16 Jan 2012 12:39:00 +0100tag:lioman.de,2012-01-16:/2012/01/statische-buttons-zum-teilen-einbinden/DigitalBlogButtonsFlattrSharestatischJahresrückblick 2011https://lioman.de/2011/12/jahresrueckblick-2011/<p><img alt="image0" class="alignright" src="https://lioman.de/images/Jahresrueckblich2011_Besucherlaender.png" style="width: 400px; height: 202px;" /> Ein Jahr neigt sich mal wieder dem Ende zu und überall gibt es Jahresrückblicke. Was in diesem Jahr passiert ist bitte ich wo anders nachzulesen. Es gibt genug Quellen und ich möchte nicht auch noch mit Guttenberg, Fukushima und Co nerven. Hier gibt es einen Jahresrückblick, den nur ich machen kann und so werde ich ein paar Statistiken rund um dieses Blog bemühen. Zuerst das offensichtliche - wo kommen meine Leser her: Die Grafik zeigt es deutlich die meisten Leser kommen aus Deutschland. Das &nbsp;ist nicht weiter verwunderlich, denn dies ist nun mal ein deutschsprachiges Blog. Spannend wäre es jetzt noch die Österreicher, Schweizer und Deutschen Besucher mit den vorhandenen Internetanschlüssen in den jeweiligen Ländern gegenzurechnen, aber das mache ich vielleicht nächstes Jahr. <a class="reference external image-reference" href="https://lioman.de/images/Blogrueckblick2011_Betriebsysteme.png"><img alt="image1" class="alignleft" src="https://lioman.de/images/Blogrueckblick2011_Betriebsysteme.png" style="width: 400px; height: 202px;" /></a>Schaue ich auf die Betriebsystemgrafik habe ich ein weinendes und ein lachendes Auge. Laut <a class="reference external" href="http://marketshare.hitslink.com/report.aspx?qprid=8">Marketshare</a>&nbsp;hat Windows derzeit einen Anteil von 86% und hier auf dem Blog surfen so überdurchschnittlich viele Linuxer und Mac-User. Das freut mich natürlich, allerdings sind es einfach immer noch sehr viele, die proprietäre Systeme nutzen und da zählen die Appel-Geräte ja auch dazu. Die anderen hätte ich&nbsp;getrost&nbsp;auch mit <em>&#8220;Mobil&#8221;</em> beschriften können und die große Zahl an Lesern, die per Handy oder Tablet hier mitlesen zeigt mir, dass es schlau war auf ein<a class="reference external" href="http://www.lioman.de/2011/09/in-eigener-sache-redesign-des-blogs/">Theme zu setzen</a>, welches auch auf kleinen Bildschirmen gut lesbar ist. <img alt="image2" class="alignright" src="https://lioman.de/images/Jahresrueckblick2011_Browser.png" style="width: 320px; height: 282px;" />Bei den Browsern, sind es jetzt doch wieder viele, die mit Open-Source-Software unterwegs sind. Nur 12% der Windowsnutzer gehen mit dem hauseigenen Browser ins Netz. Die mobilen Browser sind leider nicht gesondert erfasst und so Reihen sich OperMini, Fennec und Co. jeweils bei den Großen mit ein. Spannend wäre noch, wie viele tatsächlich GoogleChrome &nbsp;und wie viele Chromium&nbsp;nutzen. <a class="reference external image-reference" href="https://lioman.de/images/Blogrueckblick2011_Suchmaschinen.png"><img alt="image3" class="alignleft" src="https://lioman.de/images/Blogrueckblick2011_Suchmaschinen.png" style="width: 400px; height: 202px;" /></a> Nun eine Grafik die nur wieder die Dominanz von Google zeigt. Das finde ich zwar Schade, aber es gibt wenig Suchmaschinen, die Google wirklich das Wasser reichen können. Von meinem eigenen Surfverhalten kann ich als Alternative eigentlich nur <a class="reference external" href="https://duckduckgo.com/">Duckduckgo</a> nennen. Die Meisten Leser waren auf der Suche nach den <a class="reference external" href="http://www.lioman.de/2011/04/ubuntu-unity-tastenkombinationen/">Unity Tastenkombinationen</a>Die anderen Begriffe habe ich in dieser Tabelle&nbsp;zusammengefasst.</p> <table border="1" class="docutils"> <colgroup> <col width="71%" /> <col width="29%" /> </colgroup> <tbody valign="top"> <tr><td>Suchbegriff</td> <td>&#8220;Besuche&#8221;</td> </tr> <tr><td>&#8220;unity tastenkombinationen&#8221;</td> <td>178</td> </tr> <tr><td>&#8220;ubuntu unity&#8221;</td> <td>145</td> </tr> <tr><td>&#8220;ubuntu tastenkombinationen&#8221;</td> <td>127</td> </tr> <tr><td>&#8220;simfy ubuntu&#8221;</td> <td>106</td> </tr> <tr><td>&#8220;ubuntu unity shortcuts&#8221;</td> <td>78</td> </tr> <tr><td>&#8220;simfy ubuntu 11.04&#8221;</td> <td>74</td> </tr> <tr><td>&#8220;pagelogger&#8221;</td> <td>68</td> </tr> <tr><td>&#8220;google ohne zensur&#8221;</td> <td>65</td> </tr> <tr><td>&#8220;erdbeereis&#8221;</td> <td>62</td> </tr> </tbody> </table> <p>Nicht alle Leser kamen über eine Suchmaschine, inzwischen gibt es wohl doch ein paar Links im Netz, die auf mein Blog verweisen. Hier nur wieder die 10&nbsp;Wichtigsten:</p> <table border="1" class="docutils"> <colgroup> <col width="67%" /> <col width="33%" /> </colgroup> <tbody valign="top"> <tr><td>Internetseite</td> <td>&#8220;Besuche&#8221;</td> </tr> <tr><td>&#8221; nadesign.net &#8220;</td> <td>1343</td> </tr> <tr><td>&#8220;forum.ubuntuusers.de&#8221;</td> <td>256</td> </tr> <tr><td>&#8220;www.frantzen.info&#8221;</td> <td>206</td> </tr> <tr><td>&#8220;www.elmastudio.de&#8221;</td> <td>98</td> </tr> <tr><td>&#8220;www.google.de&#8221;</td> <td>89</td> </tr> <tr><td>&#8220;www.google.com&#8221;</td> <td>87</td> </tr> <tr><td>&#8220;support.simfy.de&#8221;</td> <td>42</td> </tr> <tr><td>&#8220;flattr.com&#8221;</td> <td>38</td> </tr> <tr><td>&#8220;simfy.zendesk.com&#8221;</td> <td>26</td> </tr> </tbody> </table> <p>Und nun zur letzten Tabelle (versprochen!) Die beliebtesten Artikel. Und vergleicht man diese mit den oben genannten Seiten, dann korrelieren die Ergebnisse ganz stark und ich kann nur allen die auf dieses Blog verweisen von ganzem Herzen dafür&nbsp;danken!</p> <table border="1" class="docutils"> <colgroup> <col width="79%" /> <col width="21%" /> </colgroup> <tbody valign="top"> <tr><td>Artikel</td> <td>&#8220;Besucher&#8221;</td> </tr> <tr><td>&#8220;PureReader-einklaresDesignfürGoogleReader&#8221;</td> <td>1324</td> </tr> <tr><td>&#8220;Simfy-PlayerunterUbuntu-64bitinstallieren&#8221;</td> <td>1324</td> </tr> <tr><td>&#8220;UbuntuUnityTastenkombinationen&#8221;</td> <td>1214</td> </tr> <tr><td>&#8220;AddFlattrtoPosterous&#8221;</td> <td>301</td> </tr> <tr><td>&#8220;Karte:AtomkraftwerkeinEuropa&#8221;</td> <td>269</td> </tr> <tr><td>&#8220;Simfy64bitunterUbuntu11.10installieren&#8221;</td> <td>249</td> </tr> <tr><td>&#8220;Ladenschluss:ProundKontra&#8221;</td> <td>193</td> </tr> <tr><td>&#8220;AuseinemYoutube-VideoeinanimiertesGIFerstellen&#8221;</td> <td>177</td> </tr> <tr><td>&#8220;Google.cnohneZensur&#8221;</td> <td>156</td> </tr> </tbody> </table> <p>So das waren alle Statistiken, die mir <a class="reference external" href="http://piwik.org">Piwik</a> in datenschutzkompatibler Weise geliefert hat. Jetzt muss ich mal noch schauen, was ich so hier reingestellt habe. Dazu nutze ich das Plugin <a class="reference external" href="https://wordpress.org/extend/plugins/word-stats/">Word&nbsp;Stats</a></p> <p><a class="reference external image-reference" href="https://lioman.de/images/Geschrieben2011.png"><img alt="image4" class="aligncenter" src="https://lioman.de/images/Geschrieben2011.png" style="width: 800px; height: 538px;" /></a></p> <p>Über 34000 Worte in diesem Jahr, die Worte dieses Artikels nicht mit eingerechnet. Ich hoffe, dass diese euch Lesern gefallen haben und ihr auch nächstes Jahr hier mitlest. Ich wünsche euch allen einen guten Rutsch ins neue Jahr und alles Gute. Vorsätze fürs nächste Blogjahr werde ich mir nicht nehmen - ich schau einfach was sich ergibt und schreibe, dann&nbsp;darüber.</p> LiomanSat, 31 Dec 2011 18:16:00 +0100tag:lioman.de,2011-12-31:/2011/12/jahresrueckblick-2011/Allgemein2011BlogJahresrückblickStatistikLinks von GoogleReader an Wordpress-Blog schickenhttps://lioman.de/2011/12/links-von-googlereader-an-wordpress-blog-schicken/<p>Google hat ja leider die<a class="reference external" href="http://googlereader.blogspot.com/2011/10/new-in-reader-fresh-design-and-google.html">Empfehlen-Möglichkeiten stark verändert</a> und man kann im Reader leider keinem mehr einfach so folgen. Ähnliches geht nun nur noch über Google+. Sucht man nun eine Möglichkeit Linktipps zu verteilen, kann man dies über ein eigenes (Wordpress-)Blog&nbsp;realisieren.</p> <p>Wordpress verfügt von Haus aus über eine eigene Blogroll/Linkdatenbank, man muss diese nur noch befüllen. Das ist händisch per C&amp;P recht mühsam und eine einfache Lösung in Verbindung mit dem GoogleReader wäre&nbsp;wünschenswert.</p> <p>Möchte man Links direkt aus dem Reader an das eigene Blog übertragen muss man in den &#8220;<em>Reader-Einstellungen</em>&#8221; unter &#8220;<em>Senden an</em>&#8221; einen &#8220;<em>Benutzerdefinierten Link erstellen</em>&#8221;</p> <p><a class="reference external image-reference" href="https://lioman.de/images/greader_benutzerdefinierter-link.png"><img alt="image0" class="aligncenter" src="https://lioman.de/images/greader_benutzerdefinierter-link.png" style="width: 480px; height: 289px;" /></a></p> <p>In das Formular trägt man&nbsp;einen</p> <ul class="simple"> <li>Beliebigen Namen (z.B.&nbsp;Blog)</li> <li>die <span class="caps">URL</span>: <a class="reference external" href="http://DEINEBLOGURL/wp-admin/link-add.php">http://<span class="caps">DEINEBLOGURL</span>/wp-admin/link-add.php</a>?action=popup&amp;linkurl=${url}&amp;name=${title}</li> <li>und eventuell ein Icon (z.B. Link zum eigenen favicon.ico) ein und klickt auf&nbsp;speichern.</li> </ul> <p>Unter jedem Artikel im Reader kann man über <em>&#8220;Senden an&#8221;</em> nun den Link an Wordpress weiterschicken. Dabei öffnet sich ein neues Browserfenster indem man noch fehlende Daten eintragen kann, wenn man&nbsp;möchte.</p> LiomanTue, 13 Dec 2011 14:10:00 +0100tag:lioman.de,2011-12-13:/2011/12/links-von-googlereader-an-wordpress-blog-schicken/DigitalBlogGoogle ReaderLinksLinksammlungsenden anWordpressWordpress 3.3https://lioman.de/2011/12/wordpress-3-3/<p><a class="reference external image-reference" href="https://lioman.de/images/artikelbild_wordpress.png"><img alt="image0" class="alignright size-full" src="https://lioman.de/images/artikelbild_wordpress.png" style="width: 160px; height: 160px;" /></a>Das Update auf die Version<a class="reference external" href="http://wordpress.org/news/2011/12/sonny/">3.3</a> ist draußen. Vor allem im Adminbereich hat sich einiges getan. Es soll alles ein ganzes Stück komfortabler sein. So kann man nun Dateien per Drag&amp;Drop hochladen und auch die Menüs sind praktischer. Musste man früher auf die einzelnen Menüs klicken, um an die Unterpunke zu kommen, klappt es nun aus, wenn man mit der Maus&nbsp;draufzeigt.</p> <p>Man wird nach einem Update oder einer Installation nun auch von diversen erklärenden Boxen und Spezialseiten begrüßt, die vor allen Dingen Einsteigern den Start erleichtern sollen. Eine Liste der Änderungen gibt es <a class="reference external" href="http://codex.wordpress.org/Version_3.3">hier</a>. Das Update geht ohne Probleme über die Updatefunktion von statten - trotzdem empfiehlt sich immer eine <strong>komplette</strong> Sicherung. Das kann man mit diversen <a class="reference external" href="http://wordpress.org/extend/plugins/tags/backup">Plugins</a> komfortabel&nbsp;lösen.</p> LiomanTue, 13 Dec 2011 09:53:00 +0100tag:lioman.de,2011-12-13:/2011/12/wordpress-3-3/DigitalOpen Source3.3BlogupdateWordpresswww.lioman.de auf GooglePlushttps://lioman.de/2011/11/www-lioman-de-auf-googleplus/<p><a class="reference external image-reference" href="https://lioman.de/images/gpluslogo.png"><img alt="image0" class="alignright size-full" src="https://lioman.de/images/gpluslogo.png" style="width: 119px; height: 37px;" /></a>Nachdem Google offiziell den Start von Pages auf G+ <a class="reference external" href="http://googleblog.blogspot.com/2011/11/google-pages-connect-with-all-things.html">angekündigt</a> hat, habe ich mal eine <a class="reference external" href="https://plus.google.com/u/0/b/111933298665262510479/">Seite</a>&nbsp;erstellt.</p> <p>Dazu geht man auf&nbsp;<a class="reference external" href="http://plus.google.com/pages/create">http://plus.google.com/pages/create</a>&nbsp;in gibt die Daten der Seite&nbsp;ein.</p> <p>Mangels ordentlicher <span class="caps">API</span> und entsprechenden Wordpress-Plugins ist das ganze allerdings noch nicht sonderlich komfortabel, aber ich denke, dass kann sich entwickeln. Spannend wird es dann, wenn man die Kommentare auf G+ in Wordpress importieren kann und Diskussionen so besser in Gang&nbsp;kommen.</p> LiomanThu, 10 Nov 2011 12:00:00 +0100tag:lioman.de,2011-11-10:/2011/11/www-lioman-de-auf-googleplus/AllgemeinBlogG+googleplusPageBlog läuft wieder - und weiter gehtshttps://lioman.de/2011/10/blog-laeuft-wieder-und-weiter-gehts/<p>So nun schein wieder alles zu funktionieren. Das Blog ist von außen wieder erreichbar, man kann das Feed lesen und auch der Adminbereich funktioniert wieder tadellos. Irgendwie wurden die Rechte geändert. Ich vermute, dass ich zu viel rumgespielt habe. Oder die Deaktivierung eines Plugins hat die Fehler&nbsp;verursacht.</p> <p>Auf jeden Fall kann es nun&nbsp;weitergehen&#8230;</p> LiomanMon, 24 Oct 2011 13:33:00 +0200tag:lioman.de,2011-10-24:/2011/10/blog-laeuft-wieder-und-weiter-gehts/AllgemeinBlogProblemeWordpressBlog mal wieder downhttps://lioman.de/2011/10/blog-mal-wieder-down/<p>Derzeit gibt es noch irgendwelche Probleme mit dem System. Seit den Angriffen auf den Server hakelt das Plugin-managment und so hat irgendein Fehler das Blog abgeschossen. Die Anzeige blockiert einfach und so teste ich Drivel, um diesen Post abszusetzen. Jetzt werden ihn natürlich nur Feed-Abonnenten lesen können, denn dieses funktioniert noch. Ansonsten bleibt mir nichts als auf meinen Hoster bzw. dessen Admins zu warten, die sich immer sehr bemühen und schnell helfen, wenn etwas schief läuft oder ich durch irgendwelche Basteleien mal wieder mein Blog unzugänglich mache. Leider habe ich kein <span class="caps">FTP</span>-Zugriff (um selber solche Probleme zu beheben aber dafür ein unschlagbar günstiges&nbsp;Angebot.</p> LiomanSat, 22 Oct 2011 15:17:00 +0200tag:lioman.de,2011-10-22:/2011/10/blog-mal-wieder-down/AllgemeinBlogDrivelProblemeServerproblemehttps://lioman.de/2011/10/serverprobleme/<p>Leider machte mein Blog die letzten Tage zicken und war nicht erreichbar. Laut Aussage meines Hosters, wurden dessen Server von verschiedenen Netzen aus Eurasien angegriffen und es war nicht einfach diese zu filtern. Zur Zeit ist wieder alles normal und läuft. Hoffentlich bleibt das&nbsp;so.</p> LiomanSat, 15 Oct 2011 08:25:00 +0200tag:lioman.de,2011-10-15:/2011/10/serverprobleme/AllgemeinangriffBlogserverIn eigener Sache: Redesign des Blogshttps://lioman.de/2011/09/in-eigener-sache-redesign-des-blogs/<p>Nachdem ich vor <a class="reference external" href="http://www.lioman.de/2011/07/blog-aufgeraeumt/">einigen Wochen</a> das Design schon mal etwas geändert hatte und von der etwas unübersichtlichen 3-Spaltenansicht das Design auf nur eine Widgetleiste verschlankt hatte, habe ich nun nochmals aufgeräumt. Dazu habe ich das Theme &nbsp;<a class="reference external" href="http://wordpress.bytesforall.com/wordpress-themes/new-wordpress-theme-atahualpa/">Atahualpa</a>&nbsp;durch <a class="reference external" href="http://www.elmastudio.de/wordpress-themes/yoko/">Yoko</a>&nbsp;ersetzt.</p> <p>Ich war mit Atahualpa an sich zufrieden, da die Konfiguration über die vielfältigen Optionen im Backend extrem einfach war. Der Nachteil: All diese Optionen werden in der <span class="caps">DB</span> abgelegt und müssen beim Aufruf der Seite abgerufen werden. Das verlangsamt das Blog deutlich und so konnte ich mit dem Wechsel ein paar Punkte auf der <a class="reference external" href="http://code.google.com/speed/page-speed/">PageSpeed</a>-Skala gut&nbsp;machen.</p> <p>Yoko hat neben der Geschwindigkeit noch ein paar andere&nbsp;Vorteile:</p> <p>Es ist mit <a class="reference external" href="http://de.wikipedia.org/wiki/HTML5"><span class="caps">HTML5</span></a> und <a class="reference external" href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets#CSS_3"><span class="caps">CSS3</span></a> realisiert, unterstützt <a class="reference external" href="http://codex.wordpress.org/Child_Themes">ChildThemes</a> (was eine Anpassung an die eigenen Vorstellungen erleichtert) und es passt sich dem Bildschirm so an, dass das Blog auch auf mobilen Geräten gut lesbar&nbsp;ist.</p> <p>Damit sieht mein Blog immer gleich aus und ich muss nicht die Lesbarkeit auf mobilen Geräten umständlich durch Plugins&nbsp;realisieren.</p> LiomanMon, 12 Sep 2011 18:14:00 +0200tag:lioman.de,2011-09-12:/2011/09/in-eigener-sache-redesign-des-blogs/AllgemeinBlogThemeWordpressYokoBlog aufgeräumthttps://lioman.de/2011/07/blog-aufgeraeumt/<p><a class="reference external image-reference" href="https://lioman.de/images/artikelbild_wordpress.png"><img alt="image0" class="alignleft size-full" src="https://lioman.de/images/artikelbild_wordpress.png" style="width: 160px; height: 160px;" /></a>Ich habe hier mal ein wenig aufgeräumt. &nbsp;Optisch war das Blog etwas überladen. Die beiden Sidebars Links und Rechts waren mir doch etwas zu massiv. Einige Widgets konnte ich mir sparen und nun passt alles Wichtige in eine Sidebar auf der rechten&nbsp;Seite.</p> <p>Außerdem habe ich mich von dem Plugin Now Reading Reloaded verabschiedet. Es wird nicht mehr gepflegt und vermutlich ist es nur eine Frage der Zeit, bis es gar nicht mehr funktioniert. Ich wollte es dazu benutzen, um ab und zu auch eine Buchvorstellung zu schreiben, aber irgendwie bin ich nicht dazu&nbsp;gekommen.</p> <p>Da ich schon mal dabei war habe ich mit Piwik getestet welche meiner &#8220;Pages&#8221; überhaupt besucht werden und hab alles bis auf &#8220;<a class="reference external" href="http://www.lioman.de/liokontakt/">Über mich</a>&#8221; und &#8220;<a class="reference external" href="impressum">Kontakt <span class="amp">&amp;</span> Impressum</a>&#8221;&nbsp;rausgeschmissen.</p> <p>Auch das Impressum ist aktualisiert und an die frisch eingebauten Buttons &#8220;+1&#8221; und &#8220;Facebook&#8221; angepasst. Die Vorlage dazu stammt von <a class="reference external" href="http://spreerecht.de/google-plus/2011-07/das-rechtliche-risiko-bei-googles-1-button-inkl-muster-fuer-die-datenschutzerklaerung">spreerecht</a>.</p> <p>Jetzt überlege ich, ob ich den +1 Button auch hinter einem Skript verstecken soll, welches den Knopf erst nach einem Klick&nbsp;lädt. Sicherer wäre es, allerdings geht dabei etwas Komfort&nbsp;flöten.</p> LiomanWed, 06 Jul 2011 13:19:00 +0200tag:lioman.de,2011-07-06:/2011/07/blog-aufgeraeumt/AllgemeinBlogDesignImpressumNow ReadingPluginsThemeWordpressWordpress 3.2https://lioman.de/2011/07/wordpress-3-2/<p><a class="reference external image-reference" href="https://lioman.de/images/artikelbild_wordpress.png"><img alt="image0" class="alignleft size-full" src="https://lioman.de/images/artikelbild_wordpress.png" style="width: 160px; height: 160px;" /></a>Wordpress 3.2 ist veröffentlicht worden und trägt den Namen <a class="reference external" href="http://de.wikipedia.org/wiki/George_Gershwin">Gershwin</a>. &nbsp;Neue Features gibt es kaum, denn das Augenmerk bei der Entwicklung lag auf Größe und Geschwindigkeit (<a class="reference external" href="http://wordpress.org/news/2011/07/gershwin/">Ofizielle Releasenote</a>).</p> <p>Vor allen Dingen das Backend wurde bearbeitet und als echtes neues Feature kann man nun den &#8220;Zen mode&#8221; beim Schreiben im Vollbildmodus nutzen und braucht nicht mehr das <a class="reference external" href="http://www.lioman.de/frei-schreiben-ohne-ablenkung/">hier</a> beschriebene&nbsp;Plugin.</p> <p>Das Update ging ohne Probleme über die Bühne und war recht schnell&nbsp;passiert.</p> <p>Allerdings gilt auch hier: Vorher ein <strong>vollständiges</strong>&nbsp;Update machen und man sollte Prüfen, ob der Webhoster die gestiegenen Anforderungen noch unterstützt. <span class="caps">SQL</span> muss in der Version 5.0.15+ vorliegen und&nbsp;<span class="caps">PHP</span> muss mindestens 5.2.4 sein. Und da in den verschiedenen Ankündigungen immer wieder das Problem auftauchte: &#8220;Ich habe aber nur Version 5.2.17&#8221; &nbsp;möchte ich auch hier Anmerken, dass 17 einfach größer als 4 ist und einem Update nichts im Wege&nbsp;steht.</p> <p>Man könnte sich bei <a class="reference external" href="http://www.php.net/"><span class="caps">PHP</span></a>&nbsp;mal überlegen, ob man nicht Versionen eine führende Null mitgibt, dies würde solche Irritationen&nbsp;vermeiden.</p> LiomanTue, 05 Jul 2011 11:59:00 +0200tag:lioman.de,2011-07-05:/2011/07/wordpress-3-2/AllgemeinBlogupdateWordpressWordpress 3.2Wordpress Login absichernhttps://lioman.de/2011/06/wordpress-login-absichern/<div class="line-block"> <div class="line"><a class="reference external image-reference" href="https://lioman.de/images/artikelbild_wordpress.png"><img alt="image0" class="alignleft size-full" src="https://lioman.de/images/artikelbild_wordpress.png" style="width: 160px; height: 160px;" /></a>Vor einiger Zeit, als ich Wordpress nicht gleich aktualisiert hatte, bekam ich Mails von meinem Blog. Jemand hatte versucht den Adminaccount zu hacken und an mein Passwort zu kommen. Ich hatte danach aktualisiert, die Lücke war geschlossen und ich habe eigentlich keinen weiteren Gedanken darauf verschwendet.</div> <div class="line">Durch einen Artikel bei <a class="reference external" href="http://www.perun.net/2011/06/15/wordpress-absichern-mit-limit-login-attempts/">Perun</a> bin ich wieder auf das Problem aufmerksam geworden.</div> <div class="line">Die Lösung ist eigentlich recht simpel. Da ein Angreifer das Passwort nicht kennt, muss er es ausprobieren. Entweder durch manuelles raten, oder mit einem Skript.</div> </div> <p>Dem kann man dem Spaß verderben, wenn man eine kleine Hürde einbaut, die nach einer bestimmten Anzahl von Versuchen greift. Das Plugin <em>`Limit Login Attempts &lt;https://wordpress.org/extend/plugins/limit-login-attempts/&gt;`__</em> macht genau das und sperrt den Loginbereich nach einer bestimmten Anzahl von&nbsp;Falscheingaben.</p> <p>Das bietet keine absolute Sicherheit, macht aber dieses private Kleinblog noch ein wenig uninteressanter für einen&nbsp;Angreifer.</p> LiomanSat, 18 Jun 2011 18:38:00 +0200tag:lioman.de,2011-06-18:/2011/06/wordpress-login-absichern/DigitalBlogLoginPluginSicherheitWordpressNeue Schriftart im Bloghttps://lioman.de/2011/06/neue-schriftart-im-blog/<p><a class="reference external image-reference" href="https://lioman.de/images/ubuntufont.png"><img alt="image0" class="alignleft size-full" src="https://lioman.de/images/ubuntufont.png" style="width: 208px; height: 798px;" /></a>Seit einiger Zeit hatte ich die wunderschöne freie Schriftart <a class="reference external" href="http://linuxlibertine.org">LinuxLibertine</a> per &#64;font-face eingebunden. Die Schrift ist frei und schön und sehr umfassend. Das führte zu längeren Ladezeiten, da die Schriftart doch recht groß ist und viele sie nicht installiert haben (muss also jedesmal neu geladen&nbsp;werden).</p> <p>Trotzdem wollte ich nicht auf sie verzichten, denn die ewig gleichen Fonts die so im Netz rumgeistern (courier, arial usw.) finde ich auf dauer&nbsp;langweilig.</p> <div class="line-block"> <div class="line">Jetzt habe ich einfach mal umgestellt und die Seite wird nun mit der <a class="reference external" href="http://www.ubuntu.com/project/ubuntufont">Ubuntu-Schriftart</a> dargestellt. Möglich ist dies per <a class="reference external" href="http://www.google.com/webfonts/">Google Web Font <span class="caps">API</span></a>. Die Server sind einfach schneller und verbreiteter, als der meines Hosters und das Einbinden ist Kinderleicht.</div> <div class="line">Dazu musste ich nur folgenden Code nach eintragen:</div> </div> <pre class="code html literal-block"> <span class="p">&lt;</span><span class="nt">link</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;https://fonts.googleapis.com/css?family=Ubuntu|Ubuntu+Condensed|Ubuntu+Mono&quot;</span> <span class="na">rel</span><span class="o">=</span><span class="s">&quot;stylesheet&quot;</span><span class="p">&gt;</span> </pre> <p>Per &#64;font-face ist es schon komplizierter, denn das sah in meiner css so aus (Kann man auch kürzen, aber für volle Browserkompatibilität musste es so lange&nbsp;sein):</p> <pre class="code css literal-block"> <span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxLibertine'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_it-webfont.eot'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">italic</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxLibertine'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(//:)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'no404'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_it-webfont.woff'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'woff'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_it-webfont.ttf'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'truetype'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_it-webfont.svg#webfont2kZfKjw9'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'svg'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">italic</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxLibertineC'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_c-webfont.eot'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxLibertineC'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(//:)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'no404'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_c-webfont.woff'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'woff'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_c-webfont.ttf'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'truetype'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_c-webfont.svg#webfontXhTRoXGS'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'svg'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxLibertine'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_bi-webfont.eot'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">bold</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">italic</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxLibertine'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(//:)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'no404'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_bi-webfont.woff'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'woff'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_bi-webfont.ttf'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'truetype'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_bi-webfont.svg#webfontt6kWjhxv'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'svg'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">bold</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">italic</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxLibertine'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_bd-webfont.eot'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">bold</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxLibertine'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(//:)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'no404'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_bd-webfont.woff'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'woff'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_bd-webfont.ttf'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'truetype'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine_bd-webfont.svg#webfontjqfR7YQm'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'svg'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">bold</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxLibertine'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine-webfont.eot'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxLibertine'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(//:)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'no404'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine-webfont.woff'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'woff'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine-webfont.ttf'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'truetype'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linlibertine-webfont.svg#webfont6b4IXqEV'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'svg'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxBiolinumSlanted'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_sl-webfont.eot'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxBiolinumSlanted'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(//:)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'no404'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_sl-webfont.woff'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'woff'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_sl-webfont.ttf'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'truetype'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_sl-webfont.svg#webfontEdJ4yq8E'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'svg'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxBiolinum'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_re-webfont.eot'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxBiolinum'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(//:)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'no404'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_re-webfont.woff'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'woff'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_re-webfont.ttf'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'truetype'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_re-webfont.svg#webfontxwfEhz2z'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'svg'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxBiolinum'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_it-webfont.eot'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">italic</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxBiolinum'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(//:)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'no404'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_it-webfont.woff'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'woff'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_it-webfont.ttf'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'truetype'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_it-webfont.svg#webfontHzw9ykXB'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'svg'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">italic</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxBiolinum'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_bd-webfont.eot'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">bold</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">&#64;</span><span class="k">font-face</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">font-family</span><span class="o">:</span><span class="w"> </span><span class="s1">'LinuxBiolinum'</span><span class="o">;</span><span class="w"> </span><span class="nt">src</span><span class="o">:</span><span class="w"> </span><span class="nt">url</span><span class="o">(//:)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'no404'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_bd-webfont.woff'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'woff'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_bd-webfont.ttf'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'truetype'</span><span class="o">),</span><span class="w"> </span><span class="nt">url</span><span class="o">(</span><span class="s1">'/wp-content/fonts/linbiolinum_bd-webfont.svg#webfontbsa1NPcJ'</span><span class="o">)</span><span class="w"> </span><span class="nt">format</span><span class="o">(</span><span class="s1">'svg'</span><span class="o">);</span><span class="w"> </span><span class="nt">font-weight</span><span class="o">:</span><span class="w"> </span><span class="nt">bold</span><span class="o">;</span><span class="w"> </span><span class="nt">font-style</span><span class="o">:</span><span class="w"> </span><span class="nt">normal</span><span class="o">;</span><span class="w"> </span><span class="p">}</span> </pre> <p>Das Ergebnis war gleich spürbar. Das Blog ist deutlich schneller im Seitenaufbau und gut sieht es immer noch aus - Oder gibt es da andere&nbsp;Meinungen?</p> LiomanWed, 08 Jun 2011 15:11:00 +0200tag:lioman.de,2011-06-08:/2011/06/neue-schriftart-im-blog/DigitalBlogCSSFontsLinuxStyleUbuntuWebfontWordpressBlog wieder online & Google +1https://lioman.de/2011/06/blog-wieder-online-google-1/<p>Nun ist nach einem kurzem Ausfall mein Blog wieder online. Hatte am Theme ein bisschen rumgespielt und den falschen Code eingefügt. Damit war nichts mehr erreichbar und ich war auf den Support meines Hosters angewiesen. Nötig waren die Änderungen, da Atahualpa 3.6.7, im Gegensatz zum Vorgänger, keinen <span class="caps">PHP</span>-Code in den Einstellungen zulässt. Jetzt ist alles wieder in Ordnung und ich glaube es klappt&nbsp;alles.</p> <p>Als kleine Änderung habe ich noch ein paar neue Buttons eingefügt. Wikio-Boost, den weitverbreiteten Twitterbutton und den ganz neuen <a href="http://www.google.com/+1/button/">Google +1</a>&nbsp;Knopf.</p> <p>Dies geschieht erst einmal Testweise. Ich möchte nur sehen, wie dieser verwendet wird. Im Gegensatz zu den ganzen Facebookbuttons, muss man +1 derzeit im Googleprofil explizit erlauben. So lange das so ist und wenn Google sich um die Einhaltung der gestellten Bedingungen kümmert - ist der Button datenschutzmäßig unbedenklicher als der Facebookbutton. Ist einem das ganze nicht geheuer kann man zusätzlich, wie im vorherigen <a href="https://lioman.de/2011/06/google-1-blocken/">Beitrag</a> beschrieben, +1 einfach&nbsp;blocken.</p> <p>Gibt es andere Einschätzungen zu&nbsp;+1?</p> <p><a href="https://invidious.adminforge.de/watch?v=OAyUNI3_V2c" class="youtube_video" alt="YouTube Video" title="Click to view on YouTube" target="_blank" rel="noopener noreferrer"> <img width="640" height="480" src="https://invidious.adminforge.de/vi/OAyUNI3_V2c/sddefault.jpg"> </a></p>LiomanMon, 06 Jun 2011 15:44:00 +0200tag:lioman.de,2011-06-06:/2011/06/blog-wieder-online-google-1/Digital+1BlogButtonGooglePlugin: SMu Do Followhttps://lioman.de/2011/05/plugin-smu-do-follow/<p><a class="reference external" href="http://www.wordpress.org">Wordpress</a> unterbindet ja aus Spamschutzgründen den DoFollow Tag für alle Kommentarlinks. Das ist aber mit einem ordentlichen Spamplugin nicht mehr nötig und verhindert nur eine ordentliche Vernetzung von Blogs. Ich habe darüber schon einmal <a class="reference external" href="http://www.lioman.de/nofollow-abgeschaltet-kommentare-werden-verlinkt">geschrieben</a> und dann das Plugin <a class="reference external" href="http://wordpress.org/extend/plugins/sem-dofollow/">DoFollow</a>&nbsp;eingesetzt.</p> <p>Es gibt aber doch immer wieder Leute, die nicht als Spam zu identifizieren sind, aber keinen Link haben, der zweifelsfrei wäre. Hat jedoch ein Kommentator ein Internetshop und kommentiert hier persönlich und zum Thema passend spricht nichts dagegen diesen auch zu verlinken. Ich bin jedoch zu faul das jedes Mal zu überprüfen und habe mich jetzt für ein Plugin entschieden, dass Den Autorlink + Links im Kommentarfeld auf DoFollow stellt, sobald der Autor mehr als 2 Mal kommentiert hat. (Außerdem kann ich auch Kommentatoren manuell auf DoFollow stellen falls ich das&nbsp;möchte)</p> <p><a class="reference external" href="https://wordpress.org/extend/plugins/manuall-dofollow/">SMu Manual DoFollow</a> erledigt den Job zuverlässig und soll laut <a class="reference external" href="http://blog.murawski.ch/2010/09/wordpress-manual-dofollow-plugin/">Autor</a> auch recht sparsam mit den Blogressourcen umgehen. Es wird nur eine Tabelle hinzugefügt und es soll mit Cachingplugins kompatibel&nbsp;sein.</p> LiomanTue, 03 May 2011 16:15:00 +0200tag:lioman.de,2011-05-03:/2011/05/plugin-smu-do-follow/DigitalBlogdofollowKommentarenofollowPluginWordpressFrei schreiben - ohne Ablenkunghttps://lioman.de/2011/04/frei-schreiben-ohne-ablenkung/<p>Wenn ich mal wieder was Neues ins Blog stellen möchte, werde ich immer wieder durch alles Mögliche abgelenkt. Buttons, Navigation, Kommentarbenarichtigung usw. Gerade habe ich ein nettes kleines Plugin im Blog von <a class="reference external" href="http://blog.wordpress-deutschland.org/2011/04/15/schreiben-ohne-ablenkung-in-wordpress-3-2.html">wordpress-deutschland.org</a>&nbsp;entdeckt.</p> <p>Tranquility - Ruhe also - verändert die Vollbildfunktion von TinyMCE dahingehend, dass alles unnötige ausgeblendet wird. Übrig bleibt eigentlich nur ein weißes&nbsp;Textfeld.</p> <p><a class="reference external image-reference" href="https://lioman.de/images/Tranquility.jpg"><img alt="image0" class="aligncenter size-medium" src="https://lioman.de/images/Tranquility-300x187.jpg" style="width: 300px; height: 187px;" /></a></p> <p>Die Leiste mit den Formatierungsbuttons ist versteckt und taucht erst auf, wenn man die Maus&nbsp;bewegt:</p> <p><a class="reference external image-reference" href="https://lioman.de/images/Tranquility_mitLeiste.jpg"><img alt="image1" class="aligncenter size-medium" src="https://lioman.de/images/Tranquility_mitLeiste-300x187.jpg" style="width: 300px; height: 187px;" /></a></p> <p>Das Plugin gibt es als erste Testversion im <span class="caps">SVN</span> unter <a class="reference external" href="http://plugins.svn.wordpress.org/tranquility/branches/">http://plugins.svn.wordpress.org/tranquility/branches/</a> einfach die zip-Datei runterladen und wie gewohnt&nbsp;installieren.</p> LiomanFri, 15 Apr 2011 15:17:00 +0200tag:lioman.de,2011-04-15:/2011/04/frei-schreiben-ohne-ablenkung/AllgemeinBlogPluginRuheTinyMCEWordpressKleine Verbesserungen am Bloghttps://lioman.de/2011/04/kleine-verbesserungen-am-blog/<div class="figure"> <a class="reference external image-reference" href="https://lioman.de/images/Tacho.jpg"> <img alt="Tacho" src="https://lioman.de/images/Tacho.jpg" style="width: 240px; height: 240px;" /> </a> <p class="caption">Das Bild von`kusabi &lt;<a class="reference external" href="https://www.flickr.com/photos/kusabi/">https://www.flickr.com/photos/kusabi/</a>&gt;`__ steht unter <a class="reference external" href="https://creativecommons.org/licenses/by-sa/2.0/"><span class="caps">CC</span> <span class="caps">BY</span>-<span class="caps">SA</span>&nbsp;2.0</a></p> </div> <p>Um mein Blog ein bisschen bequemer und vor allen Dingen schneller zu machen, habe ich ein paar Veränderungen&nbsp;vorgenommen.</p> <div class="line-block"> <div class="line">Das Plugin <span class="caps">WP</span>-CodeBox, dass bisher für das sogenannte Syntaxhighlighting gesorgt hat wird schon seit einiger Zeit nicht mehr weiterentwickelt. Das ist ein Problem, denn obwohl es bisher noch funktioniert kann ein simples Wordpressupdate dazu führen, dass es nicht mehr kompatibel ist und auch nicht nachgebessert wird.</div> <div class="line">Ein Neues Plugin soll also her und es soll das verpacken im &#8221; &lt;pre-Container&#8221; zulassen, da ich Shortcodes nicht möchte. Falls man nämlich aus irgendwelchen Gründen das Plugin wechseln möchte kann das zu Problemen bei alten Artikeln führen. Das war schon mal ein Haufen Arbeit und den möchte ich mir heute und in Zukunft ersparen. Ich habe also auf das <a class="reference external" href="http://betterwp.net/wordpress-plugins/bwp-syntax/">Plugin Better Wordpress</a> Syntax gesetzt, dass auf <a class="reference external" href="http://qbnz.com/highlighter/">GeSHi</a> setzt. Es scheint ohne Probleme zu funktionieren, denn die bisherigen Codebeispiele sehen ganz gut aus. Nun sollte aber noch ein bisschen Geschwindigkeit rausgeholt werden. Denn das ist nicht nur für den Leser gut, sondern auch für den Server und die Einstufung durch Google. Nachdem sowieso schon ein Caching-Plugin läuft und ich alle Bilder vor dem Upload optimiere, habe ich die deutsche Sprachdatei einfach mal ausgeschaltet. Diese macht das Blog um <a class="reference external" href="http://talkpress.de/artikel/deutsche-sprachdatei-wordpress-44-prozent-langsamer">44% langsamer</a> und ich habe keine Probleme mit einem englischen Adminbereich. Eine weitere Verbesserung soll die Umstellung der eingebauten <a class="reference external" href="https://jquery.com">jQuery</a> auf die von Google <a class="reference external" href="https://developers.google.com/speed/libraries/devguide#jquery">gehostete</a> bringen. Dies ist aus verschiedenen Gründen schneller. Google unterhält ein weltweites schnelles <span class="caps">CDN</span>, mit dem mein Hoster niemals mithalten kann und die Chance steht gut, dass die Version von Google sich schon im Browsercache des Lesers befindet, da viele Internetseiten die Bibliothek von Google eingebaut haben. Der Einbau ist recht einfach. In der functions.php des Themes muss die Zeile <em>&#8220;wp_enqueue_script(&#8216;jquery&#8217;);&#8221;</em> durch folgenden Code ersetzt werden:</div> </div> <div class="highlight"><pre><span></span><span class="x">if ( !is_admin() ) {</span> <span class="x"> wp_deregister_script( &#39;jquery&#39; );</span> <span class="x"> wp_register_script( &#39;jquery&#39;, &#39;http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js&#39;);</span> <span class="x"> wp_enqueue_script(&#39;jquery&#39;);</span> </pre></div> <p>Die Prüfung is_admin soll dabei verhindern, dass im Adminbereich die externe Bibliothek verwendet wird (Das kann zu Problemen&nbsp;führen)</p> LiomanThu, 14 Apr 2011 13:24:00 +0200tag:lioman.de,2011-04-14:/2011/04/kleine-verbesserungen-am-blog/DigitalBlogGoogleJquerySprachdateiSyntax HighlighterWordpressWordpress 3.0.2 ist draußenhttps://lioman.de/2010/12/wordpress-3-0-2-ist-draussen/<p>Heute kam die neue Version der Bloggingsoftware Wordpress raus. Es hat sich im Grunde nichts geändert, dennoch sollte man schleunigst updaten! Es wurden ein paar Sicherheitslücken geschlossen! So habe auch ich die neuste Software aufgespielt und erwarte die Version 3.1 die dann auch noch ein paar Verbesserungen&nbsp;beinhaltet.</p> LiomanWed, 01 Dec 2010 17:44:00 +0100tag:lioman.de,2010-12-01:/2010/12/wordpress-3-0-2-ist-draussen/Allgemein3.0.2BlogWordpressBlogstatistik wieder umgestellthttps://lioman.de/2010/11/blogstatistik-wieder-umgestellt/<p>Ich hatte vor einiger Zeit berichtet, dass ich pagelogger als Statistiktool einsetze und wie man die Boterkennung verbessert. Nun habe ich das System wieder gewechselt und mich für die freie GoogleAnalytics-Alternative Piwik entschieden. pagelogger war etwas dürftig in der Ausstattung und wird nicht aktiv weiterentwickelt (zumindest tut sich nix). Bei Piwik habe ich zudem die Möglichkeit leicht alle Ips zu anonymisieren. Ich speichere also keine Personenbezogene Daten - außer wenn ein Kommentar veröffentlicht wird. Die Daten werden aber nicht&nbsp;weitergegeben.</p> LiomanTue, 30 Nov 2010 17:40:00 +0100tag:lioman.de,2010-11-30:/2010/11/blogstatistik-wieder-umgestellt/AllgemeinBlogPageLoggerPiwikStatistikIn eigener Sache: Feed umgestellthttps://lioman.de/2010/11/in-eigener-sache-feed-umgestellt/<p>Liebe Feedleser, ich habe mein Blogfeed wieder umgestellt und leite nicht mehr an Feedburner weiter. Ich hatte früher alles an Feedburner weitergeleitet, weil der Dienst schnell und einfach war - außerdem kann man sich Statistiken ausgeben lassen und Werbung schalten. Nachdem ich aber die Werbung komplett ausgeschaltet habe und eigentlich möglichst keine Daten an externe Dienste weiterschicken möchte - hab ich die Umleitung wieder rausgenommen. Das <a class="reference external" href="http://feeds.feedburner.com/LiomansBlog">Feedburner-feed</a> funktioniert natürlich noch! Wer jedoch umstellen möchte kann das gerne&nbsp;tun</p> LiomanFri, 26 Nov 2010 16:21:00 +0100tag:lioman.de,2010-11-26:/2010/11/in-eigener-sache-feed-umgestellt/AllgemeinBlogFeedFeedburnerNeuer Spamfilter: AntispamBeehttps://lioman.de/2010/11/neuer-spamfilter-antispambee/<p>Bisher lief hier im Hintergrund immer das Antispamplugin Akismet. Dieses war auch ziemlich erfolgreich beim filtern der bösen Spamkommentare und ich bin eigentlich ein Fan von dieser Technik, denn wenn ich einen Spammer markiere haben auch andere Blogger etwas davon, denn bei ihnen taucht der Kommentar nicht mehr auf und wird als Müll erkannt. Das Problem Akismet ist an sich kommerziell und sammelt ziemlich Daten.&nbsp; Zur Überprüfung muss Text und <span class="caps">IP</span> immer an den Akismetserver übermittelt werden und was die genau mit den erhobenen Daten machen weiß man nicht so&nbsp;genau.</p> <p>Dazu kamen ein paar Probleme mit der Verbindung zu den Filterservern. Ich hatte also das Plugin eigentlich nur noch an, weil mir keine echte Alternative bekannt&nbsp;war.</p> <p>Nun habe ich seit einiger Zeit Antispam Bee installiert und es funktioniert perfekt. Funktionsweise und Funktionen sind gut auf der <a class="reference external" href="http://playground.ebiene.de/1137/antispam-bee-wordpress-plugin/">Pluginseite</a>&nbsp;erklärt.</p> <p>Von dort auch ein kleines Zitat, was die Stärken der Biene gegenüber Akismet&nbsp;sind:</p> <table border="1" class="docutils"> <colgroup> <col width="75%" /> <col width="14%" /> <col width="11%" /> </colgroup> <tbody valign="top"> <tr><td><em>eine Speicherung der Daten im Ausland</em></td> <td>Nein</td> <td>Ja</td> </tr> <tr><td><em>Anonyme Nutzung ohne externe Listen</em></td> <td>Nein</td> <td>Ja</td> </tr> <tr><td><em>Absolut kostenfreie Anwendung</em></td> <td>Nein</td> <td>Ja</td> </tr> <tr><td><em>Keine Registrierung notwendig</em></td> <td>Nein</td> <td>Ja</td> </tr> <tr><td><em>Prüfung von Trackbacks</em></td> <td>Nein</td> <td>Ja</td> </tr> <tr><td><em>Benachrichtigung bei neuem Spam</em></td> <td>Nein</td> <td>Ja</td> </tr> </tbody> </table> <p>Das Plugin ist im <a class="reference external" href="http://wordpress.org/extend/plugins/antispam-bee/">Wordpressverzeichnis</a> zu&nbsp;finden</p> LiomanWed, 24 Nov 2010 17:05:00 +0100tag:lioman.de,2010-11-24:/2010/11/neuer-spamfilter-antispambee/AllgemeinakismetAntispamAntispamBeeBlogPluginSpamSpammer sehen wenigerhttps://lioman.de/2010/11/spammer-sehen-weniger/<p>Habe gerade folgendes aus der Spamschlange&nbsp;geholt:</p> <blockquote> <div class="line-block"> <div class="line"><strong>Schwanz pillen:</strong></div> <div class="line">Hallo</div> <div class="line">Toller Blog, aber leider sehe ich nur die hälfte.Ist Euch das bekannt?</div> <div class="line">Liegt das an meinem Safari?</div> </div> <p>Alles Gute aus&nbsp;Mannheim</p> </blockquote> <p>Nein es war mir bisher nicht bekannt, aber danke für die Information. Jetzt muss ich heute Abend nicht mit dem bohrenden unguten Gefühl ins Bett gehen, dass ich heute nichts sinnloses erfahren und gelernt hätte. Meinen aufrichten&nbsp;Dank!</p> <p>Ach und ich tippe mal nicht auf den Safari. Ich tippe auf die vielen Pillen. Tipp rechts gibt es so eine Leiste, wenn man die nach unten zieht sieht man noch mehr.Und kauf dir nie nen <span class="caps">PC</span> mit den <strong>zwei</strong> Maustasten wärst du total&nbsp;überfordert.</p> LiomanTue, 23 Nov 2010 12:17:00 +0100tag:lioman.de,2010-11-23:/2010/11/spammer-sehen-weniger/DigitalBlogpillenscrollenSpamNofollow abgeschaltet - Kommentare werden verlinkthttps://lioman.de/2010/11/nofollow-abgeschaltet-kommentare-werden-verlinkt/<p>Über <a class="reference external" href="http://blog.till-westermayer.de/index.php/2010/11/11/kurz-nofollow-ausgeschaltet/comment-page-1/#comment-23640">Till Westermayer</a> bin ich auf eine Funktion in Wordpress gestoßen, von der ich gar nichts wusste. Alle Kommentarlinks werden automatisch mit dem nofollow-Tag versehen,da dies Spam verhindern soll. Das ist aber eigentlich gar nicht mehr nötig, Antispamplugins arbeiten schon lange mehr als zufriedenstellend. Warum man also nofollow auschalten soll mkan man <a class="reference external" href="http://www.no-nofollow.net/">hier</a> nachlesen. Per Plugin ist das Ganze relativ einfach zu realisieren. Ich habe mich für das <a class="reference external" href="http://wordpress.org/extend/plugins/sem-dofollow/">Dofollow</a>-Plugin entschieden, weil es schon lange existiert und sehr oft runtergeladen&nbsp;wird.</p> LiomanThu, 11 Nov 2010 11:25:00 +0100tag:lioman.de,2010-11-11:/2010/11/nofollow-abgeschaltet-kommentare-werden-verlinkt/DigitalBlogdofollowLinknofollowWebGravatar Hovercards einbindenhttps://lioman.de/2010/10/gravatar-hovercards-einbinden/<ul class="simple"> <li><strong>Update2: Einfacher geht es in Wordpress mit dem Plugin:</strong> <a class="reference external" href="http://jetpack.me/">Jetpack</a></li> <li><strong>Update: Der Minimierte Code geht noch nicht!!! Nur die ungepackte Version&nbsp;funktioniert!!!</strong></li> </ul> <p><a class="reference external image-reference" href="https://lioman.de/images/hovercard.jpg"><img alt="Screenshot einer Wordpress-Hovercard" class="alignleft size-full" src="https://lioman.de/images/hovercard.jpg" style="width: 521px; height: 240px;" /></a> Schon länger ist der Dienst <a class="reference external" href="http://www.gravatar.com">Gravatar</a> in diversen Blogs eingebaut. Sowohl bei wordpress.com als auch in vielen Privaten. Hat man also ein Bild mit einer Emailadresse verknüpft erscheint es überall wo man kommentiert (und der Dienst eingebunden ist). Seit einiger Zeit konnte man ein Erweitertes Profil gestalten und ein klick auf das Bild neben einem Kommentar führte zu diesem. Wenn man also möchte kann man so sein Facebook-Profil - Twitterstream oder andere Konten bekannt machen und verbreiten. Nun gibt es die Möglichkeit eben jene Informationen aus dem Profil schon beim mit der Maus über das Bild gehen sich kompakt anzeigen zu&nbsp;lassen.</p> <p>Das Ergebnis sieht man oben im Bild und eingebaut ist es in ein Theme mit wenigen&nbsp;Klicks.</p> <div class="section" id="so-wird-es-eingebaut"> <h2>So wird es&nbsp;eingebaut.</h2> <p>Einfach in die <em>functions.php</em> des Themes folgende Zeile&nbsp;einfügen:</p> <pre class="code php literal-block"> <span class="x">wp_enqueue_script( 'gprofiles', 'http://s.gravatar.com/js/gprofiles.js', array( 'jquery' ), 'e', TRUE );</span> </pre> <p>Möchte man das ganze noch mehr gestalten muss man sich ein kleines Plugin schreiben. Eine genaue Anleitung dazu gibt es <a class="reference external" href="http://blog.wordpress-deutschland.org/2010/10/10/gravatars-hovercard-verwenden.html">hier</a>. Daher habe ich auch die oben beschriebene&nbsp;Anleitung.</p> </div> <div class="section" id="verbessern"> <h2>Verbessern</h2> <p>In den Kommentaren hat <a class="reference external" href="http://toscho.de/">Thomas Scholz</a> geschrieben, dass das Skript erstens groß und zweitens mit einem Wordpresstracker versehen ist. Möchte man das umgehen, kann man sich das Skript herunterladen und bearbeiten. Ohne Tracker sieht es dann so aus (Wenn ich alles erwischt&nbsp;habe):</p> <pre class="code js literal-block"> <span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="err">\</span><span class="kc">undefined</span><span class="err">\</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="nx">console</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">console</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="err">\</span><span class="nx">log</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">str</span><span class="p">){},</span><span class="w"> </span><span class="err">\</span><span class="nx">debug</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">str</span><span class="p">){}</span><span class="w"> </span><span class="p">};</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">Gravatar</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* All loaded profiles, keyed off ghash */</span><span class="w"> </span><span class="err">\</span><span class="nx">profile_stack</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="p">{},</span><span class="w"> </span><span class="c1">// Mapping of ghash to the \currently waiting\ dom_id of where to render it</span><span class="w"> </span><span class="err">\</span><span class="nx">profile_map</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="p">{},</span><span class="w"> </span><span class="cm">/* Timeouts for hovering over and off Gravatar images */</span><span class="w"> </span><span class="err">\</span><span class="nx">overTimeout</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="err">\</span><span class="nx">outTimeout</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="cm">/* If true, show_card will bail */</span><span class="w"> </span><span class="err">\</span><span class="nx">stopOver</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="cm">/* The img element, hash and ID of the Gravatar that is being hovered over */</span><span class="w"> </span><span class="err">\</span><span class="nx">active_grav</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="err">\</span><span class="nx">active_hash</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="err">\</span><span class="nx">active_id</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="cm">/* The clone of the Gravatar img element that is being hovered over. */</span><span class="w"> </span><span class="err">\</span><span class="nx">active_grav_clone</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Callback function for once a profile is loaded */</span><span class="w"> </span><span class="err">\</span><span class="nx">profile_cb</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Wating throbber */</span><span class="w"> </span><span class="err">\</span><span class="nx">throbber</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Has a custom background image been added to the card? */</span><span class="w"> </span><span class="err">\</span><span class="nx">has_bg</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="err">\</span><span class="nx">disabled</span><span class="err">\</span><span class="o">:</span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="err">\</span><span class="nx">mouseOut</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">stopImmediatePropagation</span><span class="p">();</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">stopOver</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.debug( ':set out' );</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">outTimeout</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">setTimeout</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.debug( ':do out' );</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">hide_card</span><span class="p">();</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="mf">300</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">init</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">ca</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">cookie</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="w"> </span><span class="s1">';'</span><span class="w"> </span><span class="p">),</span><span class="w"> </span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">c</span><span class="p">;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="nx">ca</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">c</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">ca</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">' '</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">c</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">c</span><span class="o">=</span><span class="nx">c</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="w"> </span><span class="mf">1</span><span class="p">,</span><span class="w"> </span><span class="nx">c</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">c</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="w"> </span><span class="s1">'nohovercard=1'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="cm">/* Locate all Gravatar images and attach profile links to them. */</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">attach_profiles</span><span class="p">();</span><span class="w"> </span><span class="cm">/* Add CSS */</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">add_card_css</span><span class="p">();</span><span class="w"> </span><span class="cm">/* Find and show a hovercard when hovering over a Gravatar. */</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'img.grav-hashed'</span><span class="p">).</span><span class="nx">live</span><span class="p">(</span><span class="w"> </span><span class="s1">'mouseenter.gravatar mouseleave.gravatar'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">disabled</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">preventDefault</span><span class="p">();</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">stopPropagation</span><span class="p">();</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">'mouseleave'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">type</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="s1">'mouseout'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">type</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.debug( 'grav out' );</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">mouseOut</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">,</span><span class="w"> </span><span class="nx">e</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">stopOver</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.debug( 'grav enter' );</span><span class="w"> </span><span class="cm">/* Get and store the hash and ID for the active Gravatar */</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="s1">'id'</span><span class="p">);</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_id</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s1">'-'</span><span class="p">)[</span><span class="mf">1</span><span class="p">];</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">untilt_gravatar</span><span class="p">();</span><span class="w"> </span><span class="c1">// console.debug( ':clear over1' );</span><span class="w"> </span><span class="nx">clearTimeout</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">overTimeout</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// No profile data - see fetch_profile_error</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">profile_map</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">// console.debug( ':clear out' );</span><span class="w"> </span><span class="nx">clearTimeout</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">outTimeout</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">tilt_gravatar</span><span class="p">();</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">fetch_profile_by_hash</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="p">,</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// console.debug( ':set over' );</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">overTimeout</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">setTimeout</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">show_card</span><span class="p">();</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="mf">600</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="cm">/* Maintain hovercard state when rolling over a hovercard or cloned image */</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'div.gcard, img.grav-clone'</span><span class="p">).</span><span class="nx">live</span><span class="p">(</span><span class="w"> </span><span class="s1">'mouseenter.gravatar mouseleave.gravatar'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">disabled</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">preventDefault</span><span class="p">();</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">stopPropagation</span><span class="p">();</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">type</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'mouseenter'</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">type</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'mouseover'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">stopOver</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.debug( 'clone enter' );</span><span class="w"> </span><span class="c1">// console.debug( ':clear out2' );</span><span class="w"> </span><span class="nx">clearTimeout</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">outTimeout</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.debug( 'clone out' );</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">mouseOut</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">,</span><span class="w"> </span><span class="nx">e</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="cm">/* Cancel a hovercard when scrolling. */</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nx">bind</span><span class="p">(</span><span class="w"> </span><span class="s1">'scroll'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">hide_card</span><span class="p">();</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">attach_profiles</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">container</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* Locate all Gravatar images and add profiles to them */</span><span class="w"> </span><span class="nx">container</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">\</span><span class="kc">undefined</span><span class="err">\</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="nx">container</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="err">\</span><span class="nx">body</span><span class="err">\</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="nx">container</span><span class="p">;</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="nx">container</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' img[src*=gravatar.com/avatar]'</span><span class="w"> </span><span class="p">).</span><span class="nx">not</span><span class="p">(</span><span class="w"> </span><span class="s1">'.no-grav, .no-grav img'</span><span class="w"> </span><span class="p">).</span><span class="nx">each</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">extract_hash</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="cm">/* Add unique ID to image so we can reference it directly */</span><span class="w"> </span><span class="nx">uniq</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#grav-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">uniq</span><span class="w"> </span><span class="p">).</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#grav-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">uniq</span><span class="w"> </span><span class="p">).</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">uniq</span><span class="o">++</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="cm">/* Remove the hover titles for sanity */</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">g</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="w"> </span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'id'</span><span class="p">,</span><span class="w"> </span><span class="s1">'grav-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">uniq</span><span class="w"> </span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'title'</span><span class="p">,</span><span class="w"> </span><span class="s1">''</span><span class="w"> </span><span class="p">).</span><span class="nx">removeAttr</span><span class="p">(</span><span class="w"> </span><span class="s1">'title'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">g</span><span class="p">.</span><span class="nx">parent</span><span class="p">(</span><span class="w"> </span><span class="s1">'a'</span><span class="w"> </span><span class="p">).</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">g</span><span class="p">.</span><span class="nx">parent</span><span class="p">(</span><span class="w"> </span><span class="s1">'a'</span><span class="w"> </span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'href'</span><span class="p">,</span><span class="w"> </span><span class="s1">'http://gravatar.com/'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'title'</span><span class="p">,</span><span class="w"> </span><span class="s1">''</span><span class="w"> </span><span class="p">).</span><span class="nx">removeAttr</span><span class="p">(</span><span class="w"> </span><span class="s1">'title'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">g</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="s1">'grav-hashed'</span><span class="p">);</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">show_card</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">stopOver</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">profile_map</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">];</span><span class="w"> </span><span class="c1">// Close any existing cards</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'.gcard'</span><span class="w"> </span><span class="p">).</span><span class="nx">hide</span><span class="p">();</span><span class="w"> </span><span class="c1">// Bail if we're waiting on a fetch</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">'fetching'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">profile_stack</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">show_throbber</span><span class="p">();</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="p">,</span><span class="w"> </span><span class="s1">'show_card'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// console.log( 'still fetching ' + hash );</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">// If we haven't fetched this profile yet, do it now and do this later</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">'undefined'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">profile_stack</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">show_throbber</span><span class="p">();</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="p">,</span><span class="w"> </span><span class="s1">'show_card'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// console.log( 'need to start fetching ' + hash + '&#64;' + dom_id );</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">fetch_profile_by_hash</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="p">,</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">hide_throbber</span><span class="p">();</span><span class="w"> </span><span class="c1">// console.log( 'show_card: hash: ' + hash + ', DOM ID: ' + dom_id );</span><span class="w"> </span><span class="c1">// No HTML? build it</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#profile-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">active_hash</span><span class="w">&nbsp; </span><span class="p">).</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">build_card</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">active_hash</span><span class="p">,</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">profile_stack</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">render_card</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">active_grav</span><span class="p">,</span><span class="w"> </span><span class="s1">'profile-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">hide_card</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.debug( ':clear over3' );</span><span class="w"> </span><span class="nx">clearTimeout</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">overTimeout</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="cm">/* Untilt the Gravatar image */</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">untilt_gravatar</span><span class="p">();</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">current_image</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'div.gcard'</span><span class="w"> </span><span class="p">).</span><span class="nx">filter</span><span class="p">(</span><span class="w"> </span><span class="s1">'#profile-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">).</span><span class="nx">fadeOut</span><span class="p">(</span><span class="mf">120</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'img.grav-large'</span><span class="p">).</span><span class="nx">stop</span><span class="p">().</span><span class="nx">remove</span><span class="p">();</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">).</span><span class="nx">end</span><span class="p">().</span><span class="nx">not</span><span class="p">(</span><span class="w"> </span><span class="s1">'#profile-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">).</span><span class="nx">hide</span><span class="p">();</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">render_card</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">grav</span><span class="p">,</span><span class="w"> </span><span class="nx">card_id</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">card_el</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card_id</span><span class="w">&nbsp; </span><span class="p">).</span><span class="nx">stop</span><span class="p">();</span><span class="w"> </span><span class="c1">// console.log( 'render_card for ' + grav_id + ', ' + card_id );</span><span class="w"> </span><span class="c1">// Change CSS positioning based on where grav_id is in the page</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_el</span><span class="w">&nbsp; </span><span class="o">=</span><span class="w"> </span><span class="nx">grav</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_pos</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">grav_el</span><span class="p">.</span><span class="nx">offset</span><span class="p">();</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="kc">null</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nx">grav_pos</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_width</span><span class="w">&nbsp; </span><span class="o">=</span><span class="w"> </span><span class="nx">grav_el</span><span class="p">.</span><span class="nx">width</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">grav_el</span><span class="p">.</span><span class="nx">height</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_space</span><span class="w">&nbsp; </span><span class="o">=</span><span class="w"> </span><span class="mf">5</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav_width</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">.4</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">card_width</span><span class="w">&nbsp; </span><span class="o">=</span><span class="w"> </span><span class="nx">card_el</span><span class="p">.</span><span class="nx">width</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">card_height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">card_el</span><span class="p">.</span><span class="nx">height</span><span class="p">();</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">card_width</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nx">width</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">card_width</span><span class="w">&nbsp; </span><span class="o">=</span><span class="w"> </span><span class="mf">400</span><span class="p">;</span><span class="w"> </span><span class="nx">card_height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">200</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="cm">/* console.log( grav_pos ); console.log( 'grav_width = ' + grav_width + \\n\ + 'grav_height = ' + grav_height + \\n\ + 'grav_space = ' + grav_space + \\n\ + 'card_width = ' + card_width + \\n\ + 'card_height = ' + card_height + \\n\ ); */</span><span class="w"> </span><span class="cm">/* Position to the right of the element */</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">left</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">grav_pos</span><span class="p">.</span><span class="nx">left</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_width</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_space</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">top</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">grav_pos</span><span class="p">.</span><span class="nx">top</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_pos_class</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'pos-right'</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Position to the left of the element if space on the right is not enough. */</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav_pos</span><span class="p">.</span><span class="nx">left</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_width</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_space</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card_width</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nx">width</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nx">scrollLeft</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">left</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">grav_pos</span><span class="p">.</span><span class="nx">left</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">card_width</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_space</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">grav_pos_class</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'pos-left'</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="cm">/* Reposition the card itself */</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">top_offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">grav_height</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">.25</span><span class="p">;</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card_id</span><span class="w"> </span><span class="p">).</span><span class="nx">removeClass</span><span class="p">(</span><span class="w"> </span><span class="s1">'pos-right pos-left'</span><span class="w"> </span><span class="p">).</span><span class="nx">addClass</span><span class="p">(</span><span class="w"> </span><span class="nx">grav_pos_class</span><span class="w"> </span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s1">'top'</span><span class="o">:</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">top</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">top_offset</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">,</span><span class="w"> </span><span class="s1">'left'</span><span class="o">:</span><span class="w"> </span><span class="nx">left</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="cm">/* Position of the small arrow in relation to the Gravatar */</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav_height</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="nx">card_height</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">card_height</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">card_height</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">6</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">card_height</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">6</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="mf">53</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">53</span><span class="p">;</span><span class="w"> </span><span class="c1">// Max</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">has_bg</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">8</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// Min</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">css</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s1">'height'</span><span class="o">:</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav_height</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">1.5</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">top_offset</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="w"> </span><span class="p">};</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">'pos-right'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">grav_pos_class</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">css</span><span class="p">[</span><span class="s1">'right'</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'auto'</span><span class="p">;</span><span class="w"> </span><span class="nx">css</span><span class="p">[</span><span class="s1">'left'</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'-7px'</span><span class="p">;</span><span class="w"> </span><span class="nx">css</span><span class="p">[</span><span class="s1">'background-position'</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'0px '</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">css</span><span class="p">[</span><span class="s1">'right'</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'-10px'</span><span class="p">;</span><span class="w"> </span><span class="nx">css</span><span class="p">[</span><span class="s1">'left'</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'auto'</span><span class="p">;</span><span class="w"> </span><span class="nx">css</span><span class="p">[</span><span class="s1">'background-position'</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'0px '</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card_id</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-cardarrow'</span><span class="w"> </span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="nx">css</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">card_el</span><span class="p">.</span><span class="nx">stop</span><span class="p">().</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">opacity</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">).</span><span class="nx">show</span><span class="p">().</span><span class="nx">animate</span><span class="p">(</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">opacity</span><span class="o">:</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="mf">150</span><span class="p">,</span><span class="w"> </span><span class="s1">'linear'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="w"> </span><span class="p">).</span><span class="nx">stop</span><span class="p">();</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">init</span><span class="p">(</span><span class="w"> </span><span class="nx">card_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">init</span><span class="p">(</span><span class="w"> </span><span class="nx">card_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">build_card</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="p">,</span><span class="w"> </span><span class="nx">profile</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nb">Object</span><span class="p">.</span><span class="nx">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">key</span><span class="p">;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="nx">key</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="nx">obj</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">obj</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">key</span><span class="p">))</span><span class="w"> </span><span class="nx">size</span><span class="o">++</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">size</span><span class="p">;</span><span class="w"> </span><span class="p">};</span><span class="w"> </span><span class="c1">// console.log( 'Build profile card for: ' + hash );</span><span class="w"> </span><span class="c1">// console.log( profile );</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">init</span><span class="p">(</span><span class="w"> </span><span class="nx">profile</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">urls</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="s1">'urls'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">photos</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="s1">'photos'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">services</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="s1">'accounts'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">limit</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">100</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nb">Object</span><span class="p">.</span><span class="nx">size</span><span class="p">(</span><span class="w"> </span><span class="nx">urls</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="mf">3</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">limit</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mf">90</span><span class="p">;</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="nx">limit</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mf">10</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="mf">20</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Object</span><span class="p">.</span><span class="nx">size</span><span class="p">(</span><span class="w"> </span><span class="nx">urls</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nb">Object</span><span class="p">.</span><span class="nx">size</span><span class="p">(</span><span class="w"> </span><span class="nx">services</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">limit</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mf">30</span><span class="p">;</span><span class="w"> </span><span class="nx">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="s1">'aboutMe'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">description</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="w"> </span><span class="sr">/&amp;lt;[^&amp;gt;]+&amp;gt;/ig</span><span class="p">,</span><span class="w"> </span><span class="s1">''</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">description</span><span class="p">.</span><span class="nx">toString</span><span class="p">().</span><span class="nx">substr</span><span class="p">(</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">limit</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">limit</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">description</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">description</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">'&lt;span class=&quot;removed_link&quot; title=&quot;\'&quot;&gt;&amp;amp;#8230;&lt;/span&gt;'</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">card_class</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'grav-inner'</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.log( Gravatar.my_hash, hash );</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">my_hash</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">my_hash</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">card_class</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">' grav-is-user'</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="nx">description</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">\</span><span class="o">&lt;</span><span class="err">/pre&gt;</span><span class="w"> </span><span class="nx">Want</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="nx">better</span><span class="w"> </span><span class="nx">profile</span><span class="o">?</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">a</span><span class="w"> </span><span class="kd">class</span><span class="o">=</span><span class="s2">&quot;grav-edit-profile&quot;</span><span class="w"> </span><span class="nx">href</span><span class="o">=</span><span class="s2">&quot;http://gravatar.com/profiles/edit/&quot;</span><span class="w"> </span><span class="nx">target</span><span class="o">=</span><span class="s2">&quot;_blank&quot;</span><span class="o">&gt;</span><span class="nx">Click</span><span class="w"> </span><span class="nx">here</span><span class="o">&lt;</span><span class="err">/a&gt;.</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">pre</span><span class="w"> </span><span class="nx">lang</span><span class="o">=</span><span class="s2">&quot;js&quot;</span><span class="o">&gt;</span><span class="err">\</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">description</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">card_class</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">' gcard-about'</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'&lt;/pre&gt; &lt;div id=&quot;\profile-'</span><span class="s2">&quot;&gt; \ &lt;div&gt; \ &lt;div&gt; \ &lt;h4&gt;&lt;span class=&quot;</span><span class="nx">removed_link</span><span class="s2">&quot; title=&quot;</span><span class="err">\</span><span class="s1">'&quot;&gt;'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="s1">'displayName'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'&lt;/span&gt;&lt;/h4&gt; \\ '</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">description</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' \ \ &lt;/div&gt; \ &lt;div&gt; '</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nb">Object</span><span class="p">.</span><span class="nx">size</span><span class="p">(</span><span class="w"> </span><span class="nx">urls</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nb">Object</span><span class="p">.</span><span class="nx">size</span><span class="p">(</span><span class="w"> </span><span class="nx">services</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">card_class</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">' gcard-links'</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">' &lt;h5&gt;Personal Links&lt;/h5&gt; \ &lt;ul&gt; &lt;ul&gt;'</span><span class="p">;</span><span class="w"> </span><span class="nx">url_count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">u</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="nx">urls</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="nx">urls</span><span class="p">[</span><span class="nx">u</span><span class="p">][</span><span class="s1">'value'</span><span class="p">]</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="o">!</span><span class="nx">urls</span><span class="p">[</span><span class="nx">u</span><span class="p">][</span><span class="s1">'title'</span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">continue</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">url_count</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">' &lt;li&gt;&lt;span class=&quot;removed_link&quot; title=&quot;\'&quot;&gt; + '</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">urls</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">url_count</span><span class="w"> </span><span class="p">)</span><span class="w">&nbsp; </span><span class="o">+</span><span class="w"> </span><span class="s1">' more&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/ul&gt; '</span><span class="p">;</span><span class="w"> </span><span class="k">break</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">' &lt;ul&gt; &lt;ul&gt; &lt;li&gt;&lt;span class=&quot;removed_link&quot; title=&quot;\'&quot;&gt;'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">urls</span><span class="p">[</span><span class="nx">u</span><span class="p">][</span><span class="s1">'title'</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/ul&gt; '</span><span class="p">;</span><span class="w"> </span><span class="nx">url_count</span><span class="o">++</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">' '</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.log( 'Services to include in card:' ); // console.log( services ); if ( Object.size( services ) ) { card_class += ' gcard-services'; } card += '</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">ul</span><span class="o">&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">ul</span><span class="o">&gt;</span><span class="s1">'; services_out = 0; for ( var s in services ) { if ( !services[s]['</span><span class="nx">url</span><span class="s1">'] ) continue; if ( services_out &amp;gt;= 6 ) break; card += '</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">li</span><span class="o">&gt;&lt;</span><span class="err">/li&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="err">/ul&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="err">/ul&gt;</span><span class="w"> </span><span class="s1">'; services_out++; } card += '</span><span class="w"> </span><span class="s1">'; card += '</span><span class="w"> </span><span class="o">&lt;</span><span class="err">/div&gt;</span><span class="w"> </span><span class="s1">'; // right col if ( Object.size( photos ) &amp;gt; 1 ) { card_class += '</span><span class="w"> </span><span class="nx">gcard</span><span class="o">-</span><span class="nx">gallery</span><span class="s1">'; } card += '</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">div</span><span class="o">&gt;</span><span class="w"> </span><span class="err">\</span><span class="w"> </span><span class="nx">Previous</span><span class="w"> </span><span class="o">\</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">div</span><span class="o">&gt;</span><span class="w"> </span><span class="o">\</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">ul</span><span class="o">&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">ul</span><span class="o">&gt;</span><span class="s1">'; for ( var p in photos ) { if ( !photos[p]['</span><span class="nx">value</span><span class="s1">'] ) continue; card += '</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">li</span><span class="o">&gt;&lt;</span><span class="err">/li&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="err">/ul&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="err">/ul&gt;</span><span class="w"> </span><span class="s1">'; } card += '</span><span class="w"> </span><span class="o">\</span><span class="w"> </span><span class="o">&lt;</span><span class="err">/div&gt;</span><span class="w"> </span><span class="err">\</span><span class="w"> </span><span class="nx">Next</span><span class="w"> </span><span class="o">\</span><span class="w"> </span><span class="o">&lt;</span><span class="err">/div&gt;</span><span class="w"> </span><span class="s1">'; // gallery card += '</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">div</span><span class="o">&gt;&lt;</span><span class="err">/div&gt;</span><span class="w"> </span><span class="o">\</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">div</span><span class="o">&gt;&lt;</span><span class="nx">a</span><span class="w"> </span><span class="nx">title</span><span class="o">=</span><span class="s2">&quot;\Powered&quot;</span><span class="w"> </span><span class="nx">href</span><span class="o">=</span><span class="s2">&quot;\http://gravatar.com/\&quot; target=&quot;</span><span class="err">\</span><span class="nx">_blank</span><span class="err">\</span><span class="s2">&quot;&gt;&amp;amp;nbsp;&lt;/a&gt;&lt;/div&gt; \ &lt;div style=&quot;</span><span class="err">\</span><span class="nx">clear</span><span class="o">:</span><span class="w"> </span><span class="nx">both</span><span class="err">\</span><span class="p">;;</span><span class="s2">&quot;&gt;&lt;/div&gt; '; card += 'Turn off hovercards '; card += ' &lt;/div&gt; &lt;/div&gt; &lt;pre lang=&quot;</span><span class="nx">js</span><span class="s2">&quot;&gt;'; // .grav-inner, .gcard // console.log( 'Finished building card for ' + dom_id ); jQuery( 'body' ).append( jQuery( card ) ); jQuery( '#profile-' + hash + ' .grav-inner' ).addClass( card_class ); // Custom Background this.has_bg = false; bg = GProfile.get( 'profileBackground' ); if ( Object.size( bg ) ) { this.has_bg = true; var bg_css = { padding: '8px 0' }; if ( bg.color ) bg_css['background-color'] = bg.color; if ( bg.url ) bg_css['background-image'] = 'url(' + bg.url + ')'; if ( bg.position ) bg_css['background-position'] = bg.position; if ( bg.repeat ) bg_css['background-repeat'] = bg.repeat; jQuery( '#profile-' + hash ).css( bg_css ); } // Resize card based on what's visible if ( !jQuery( '#profile-' + hash + ' .gcard-links' ).length &amp;amp;&amp;amp; !jQuery( '#profile-' + hash + ' .gcard-services' ).length ) jQuery( '#profile-' + hash + ' .grav-rightcol' ).css( { 'width': 'auto' } ); if ( !jQuery( '#profile-' + hash + ' .gcard-about' ).length ) jQuery( '#profile-' + hash + ' .grav-leftcol' ).css( { 'width': 'auto' } ); // Trigger callback if defined if ( jQuery.isFunction( Gravatar.profile_cb ) ) { Gravatar.loaded_js( hash, 'profile-' + hash ); } }, \tilt_gravatar\: function() { /* Set the active gravatar */ this.active_grav = jQuery('img#' + this.active_id); if ( jQuery('img#grav-clone-' + this.active_hash).length ) return; /* Clone the image */ this.active_grav_clone = this.active_grav.clone().attr( 'id', 'grav-clone-' + this.active_hash ).addClass('grav-clone'); var top = this.active_grav.offset().top; var left = this.active_grav.offset().left; /* top&nbsp; -= 2; left -= 2; */ /* Style clone */ var fancyCSS = { '-webkit-transform': 'rotate(-4deg) scale(1.3)', '-moz-transform': 'rotate(-4deg) scale(1.3)', '-o-transform': 'rotate(-4deg) scale(1.3)', 'transform': 'rotate(-4deg) scale(1.3)', '-webkit-box-shadow': '0 0 4px #aaa', '-moz-box-shadow': '0 0 4px #aaa', 'box-shadow': '0 0 4px #aaa', 'border-width': '2px 2px ' + ( this.active_grav.height() / 5 ) + 'px 2px', 'border-color': '#fff', 'border-style': 'solid', 'padding': '0px' }; if ( jQuery.browser.msie &amp;amp;&amp;amp; 9 &amp;gt; jQuery.browser.version ) { fancyCSS['filter'] = \progid:DXImageTransform.Microsoft.Matrix(M11='1.29683327', M12='0.0906834159', M21='-0.0906834159', M22='1.29683327', SizingMethod='auto expand') progid:DXImageTransform.Microsoft.Glow(Color='#aaaaaa', strength='2'\; top&nbsp; -= 5; left -= 6; } var appendix = this.active_grav_clone.css( fancyCSS ).wrap( '' ).parent().css( { 'position': 'absolute', 'top': top + 'px', 'left': left + 'px', 'z-index': 15, 'border': 'none', 'text-decoration': 'none' } ); /* Append the clone on top of the original */ jQuery('body').append( appendix ); this.active_grav_clone.removeClass('grav-hashed'); }, \untilt_gravatar\: function() { jQuery('img.grav-clone, a.grav-clone-a').remove(); Gravatar.hide_throbber(); }, \show_throbber\: function() { // console.log( 'throbbing...' ); if ( !Gravatar.throbber ) { Gravatar.throbber = jQuery( '&lt;/pre&gt; &lt;div id=&quot;</span><span class="err">\</span><span class="nx">grav</span><span class="o">-</span><span class="nx">throbber</span><span class="err">\</span><span class="s2">&quot;&gt;&lt;img src=&quot;</span><span class="err">\</span><span class="nx">http</span><span class="o">:</span><span class="c1">//s.gravatar.com/images/throbber.gif\&quot; alt=&quot;\.\&quot; width=&quot;\15\&quot; height=&quot;\15\&quot; /&gt;&lt;/div&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">pre</span><span class="w"> </span><span class="nx">lang</span><span class="o">=</span><span class="s2">&quot;js&quot;</span><span class="o">&gt;</span><span class="s1">' ); } jQuery( '</span><span class="nx">body</span><span class="s1">' ).append( Gravatar.throbber ); var offset = jQuery('</span><span class="err">#</span><span class="s1">' + Gravatar.active_id).offset(); Gravatar.throbber.css( { top: offset.top + 2 + '</span><span class="nx">px</span><span class="s1">', left: offset.left + 1 + '</span><span class="nx">px</span><span class="s1">' } ); }, \hide_throbber\: function() { // Remove the throbber if it exists. if ( !Gravatar.throbber ) { return; } // console.log( '</span><span class="nx">stopped</span><span class="w"> </span><span class="nx">throbbing</span><span class="p">.</span><span class="s1">' ); Gravatar.throbber.remove(); }, /*** * Helper Methods */ \fetch_profile_by_email\: function( email ) { // console.debug( '</span><span class="nx">fetch_profile_by_email</span><span class="s1">' ); return this.fetch_profile_by_hash( this.md5( email ) ); }, \fetch_profile_by_hash\: function( hash, dom_id ) { // This is so that we know which specific Grav is waiting on us this.profile_map[ '</span><span class="nx">g</span><span class="s1">' + hash ] = dom_id; // console.log( this.profile_map ); // If we already have it, no point getting it again, so just return it and notify any listeners if ( this.profile_stack[ '</span><span class="nx">g</span><span class="s1">' + hash ] &amp;amp;&amp;amp; '</span><span class="nx">object</span><span class="s1">' == typeof( this.profile_stack[ '</span><span class="nx">g</span><span class="s1">' + hash ] ) ) return this.profile_stack[ '</span><span class="nx">g</span><span class="s1">' + hash ]; // console.log( '</span><span class="nx">fetch_profile_by_hash</span><span class="o">:</span><span class="w"> </span><span class="s1">' + hash, dom_id ); this.profile_stack[ '</span><span class="nx">g</span><span class="s1">' + hash ] = '</span><span class="nx">fetching</span><span class="s1">'; // Not using $.getJSON because it won'</span><span class="nx">t</span><span class="w"> </span><span class="nx">call</span><span class="w"> </span><span class="nx">an</span><span class="w"> </span><span class="nx">error</span><span class="w"> </span><span class="nx">handler</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">remote</span><span class="w"> </span><span class="nx">URLs</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">load_js</span><span class="p">(</span><span class="w"> </span><span class="s1">'http://en.gravatar.com/'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'.json?callback=Gravatar.fetch_profile_callback'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">fetch_profile_error</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="p">,</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">fetch_profile_callback</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">profile</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="nx">profile</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="s1">'object'</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="nx">profile</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.log( 'Received profile via callback:' );</span><span class="w"> </span><span class="c1">// console.log( profile );</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">profile_stack</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">profile</span><span class="p">.</span><span class="nx">entry</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">profile</span><span class="p">;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify</span><span class="p">(</span><span class="w"> </span><span class="nx">profile</span><span class="p">.</span><span class="nx">entry</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">hash</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">fetch_profile_error</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="p">,</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">profile_map</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav</span><span class="p">.</span><span class="nx">parent</span><span class="p">(</span><span class="w"> </span><span class="s1">'a[href=http://gravatar.com/'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">']'</span><span class="w"> </span><span class="p">).</span><span class="nx">size</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav</span><span class="p">.</span><span class="nx">unwrap</span><span class="p">();</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">// console.debug( dom_id, Gravatar.active_id );</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_id</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">hide_card</span><span class="p">();</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">listen</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">key</span><span class="p">,</span><span class="w"> </span><span class="nx">callback</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{};</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">key</span><span class="p">;</span><span class="w"> </span><span class="c1">// Force valid first char</span><span class="w"> </span><span class="c1">// console.log( 'listening for: ' + key );</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[];</span><span class="w"> </span><span class="c1">// Make sure it's not already queued</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">].</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">a</span><span class="o">++</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">callback</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.log( 'already' );</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">].</span><span class="nx">length</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">callback</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.log( 'added listener: ' + key + ' =&amp;gt; ' + callback );</span><span class="w"> </span><span class="c1">// console.log( this.notify_stack );</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">notify</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.log( 'trigger notification: ' + key );</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{};</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">key</span><span class="p">;</span><span class="w"> </span><span class="c1">// Force valid first char</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[];</span><span class="w"> </span><span class="c1">// Reverse it so that notifications are sent in the order they were queued</span><span class="w"> </span><span class="c1">// console.log( 'notifying key: ' + key + ' (with ' + this.notify_stack[ key ].length + ' listeners)' );</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">].</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">a</span><span class="o">++</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="err">\</span><span class="kc">undefined</span><span class="err">\</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">continue</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.log( 'send notification to: ' + this.notify_stack[ key ][ a ] );</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">[</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">](</span><span class="w"> </span><span class="nx">key</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">extract_hash</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">str</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// Get hash from img src</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sr">/gravatar.com\/avatar\/([0-9a-f]{32})/</span><span class="p">.</span><span class="nx">exec</span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="nx">str</span><span class="w"> </span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'src'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="kc">null</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="err">\</span><span class="nx">object</span><span class="err">\</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">hash</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">hash</span><span class="p">[</span><span class="mf">1</span><span class="p">];</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sr">/gravatar_id\=([0-9a-f]{32})/</span><span class="p">.</span><span class="nx">exec</span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="nx">str</span><span class="w"> </span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'src'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="kc">null</span><span class="w"> </span><span class="o">!==</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="err">\</span><span class="nx">object</span><span class="err">\</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">hash</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">hash</span><span class="p">[</span><span class="mf">1</span><span class="p">];</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">hash</span><span class="p">;</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">load_js</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">src</span><span class="p">,</span><span class="w"> </span><span class="nx">error_handler</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">loaded_scripts</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">loaded_scripts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[];</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">loaded_scripts</span><span class="p">[</span><span class="w"> </span><span class="nx">src</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">loaded_scripts</span><span class="p">[</span><span class="w"> </span><span class="nx">src</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">new_script</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="w"> </span><span class="s1">'script'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">new_script</span><span class="p">.</span><span class="nx">src</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">src</span><span class="p">;</span><span class="w"> </span><span class="nx">new_script</span><span class="p">.</span><span class="nx">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'text/javascript'</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">.</span><span class="nx">isFunction</span><span class="p">(</span><span class="w"> </span><span class="nx">error_handler</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">new_script</span><span class="p">.</span><span class="nx">onerror</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">error_handler</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">// console.log( src );</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="w"> </span><span class="s1">'head'</span><span class="w"> </span><span class="p">)[</span><span class="mf">0</span><span class="p">].</span><span class="nx">appendChild</span><span class="p">(</span><span class="w"> </span><span class="nx">new_script</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">loaded_js</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="p">,</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">profile_cb</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="p">,</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">add_card_css</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#gravatar-card-css'</span><span class="w"> </span><span class="p">).</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">urlS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'script[src*=gravatar.com/js/gprofiles.js]'</span><span class="w"> </span><span class="p">),</span><span class="w"> </span><span class="nx">url</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">urlS</span><span class="p">.</span><span class="nx">size</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">urlS</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'src'</span><span class="w"> </span><span class="p">).</span><span class="nx">replace</span><span class="p">(</span><span class="w"> </span><span class="sr">/\/js\/gprofiles\.js.*$/</span><span class="p">,</span><span class="w"> </span><span class="s1">''</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="nx">url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'http://s.gravatar.com'</span><span class="p">;</span><span class="w"> </span><span class="nx">new_css</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">\\</span><span class="p">;</span><span class="w"> </span><span class="nx">new_css</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="err">\\</span><span class="p">;</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'head'</span><span class="w"> </span><span class="p">).</span><span class="nx">append</span><span class="p">(</span><span class="w"> </span><span class="nx">new_css</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// console.log( 'Added CSS for profile cards to DOM' );</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">md5</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">str</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">hex_md5</span><span class="p">(</span><span class="w"> </span><span class="nx">str</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">autofill</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">email</span><span class="p">,</span><span class="w"> </span><span class="nx">map</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.log('autofill');</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="nx">email</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="o">-</span><span class="mf">1</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">email</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="w"> </span><span class="s1">'&#64;'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">autofill_map</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">map</span><span class="p">;</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">md5</span><span class="p">(</span><span class="w"> </span><span class="nx">email</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// console.log( this.profile_stack[ 'g' + hash ] );</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="err">\</span><span class="kc">undefined</span><span class="err">\</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">profile_stack</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="p">,</span><span class="w"> </span><span class="s1">'autofill_data'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">fetch_profile_by_hash</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.log( 'stack: ' + this.profile_stack[ 'g' + hash ] );</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">autofill_data</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">autofill_data</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.log( this.autofill_map );</span><span class="w"> </span><span class="c1">// console.log( this.profile_stack[ 'g' + hash ] );</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">init</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">profile_stack</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">autofill_map</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.log( m );</span><span class="w"> </span><span class="c1">// console.log( this.autofill_map[ m ] );</span><span class="w"> </span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="s1">'url'</span><span class="o">:</span><span class="w"> </span><span class="nx">link</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="s1">'urls'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// console.log( link );</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">autofill_map</span><span class="p">[</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">).</span><span class="nx">val</span><span class="p">(</span><span class="w"> </span><span class="nx">link</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="w"> </span><span class="s1">'value'</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">break</span><span class="p">;</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="s1">'urls'</span><span class="o">:</span><span class="w"> </span><span class="nx">links</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="s1">'urls'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">links_str</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">''</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.log( links );</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">l</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">l</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="nx">links</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">l</span><span class="o">++</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">links_str</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="nx">links</span><span class="p">[</span><span class="w"> </span><span class="nx">l</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="s1">'value'</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="err">\\</span><span class="nx">n</span><span class="err">\</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">autofill_map</span><span class="p">[</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">).</span><span class="nx">val</span><span class="p">(</span><span class="w"> </span><span class="nx">links_str</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">break</span><span class="p">;</span><span class="w"> </span><span class="k">default</span><span class="o">:</span><span class="w"> </span><span class="nx">parts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">m</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="w"> </span><span class="sr">/\./</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">val</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="s1">'ims'</span><span class="o">:</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="s1">'phoneNumbers'</span><span class="o">:</span><span class="w"> </span><span class="nx">val</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">val</span><span class="p">.</span><span class="nx">value</span><span class="p">;</span><span class="w"> </span><span class="k">break</span><span class="p">;</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="s1">'emails'</span><span class="o">:</span><span class="w"> </span><span class="nx">val</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">val</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">value</span><span class="p">;</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="s1">'accounts'</span><span class="o">:</span><span class="w"> </span><span class="nx">val</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">val</span><span class="p">.</span><span class="nx">url</span><span class="p">;</span><span class="w"> </span><span class="k">break</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">autofill_map</span><span class="p">[</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">).</span><span class="nx">val</span><span class="p">(</span><span class="w"> </span><span class="nx">val</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">autofill_map</span><span class="p">[</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">).</span><span class="nx">val</span><span class="p">(</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">whee</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">whee</span><span class="p">.</span><span class="nx">didWhee</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">whee</span><span class="p">.</span><span class="nx">didWhee</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">styleSheets</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">addRule</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">styleSheets</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">addRule</span><span class="p">(</span><span class="w"> </span><span class="s1">'.grav-tag a'</span><span class="p">,</span><span class="w"> </span><span class="s1">'background-position: 22px 100% !important'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'.grav-tag a'</span><span class="w"> </span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="s1">'background-position'</span><span class="p">,</span><span class="w"> </span><span class="s1">'22px 100%'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'img[src*=gravatar.com/]'</span><span class="w"> </span><span class="p">).</span><span class="nx">addClass</span><span class="p">(</span><span class="w"> </span><span class="s1">'grav-whee'</span><span class="w"> </span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s1">'-webkit-box-shadow'</span><span class="o">:</span><span class="w"> </span><span class="s1">'1px 1px 3px #aaa'</span><span class="p">,</span><span class="w"> </span><span class="s1">'-moz-box-shadow'</span><span class="o">:</span><span class="w"> </span><span class="s1">'1px 1px 3px #aaa'</span><span class="p">,</span><span class="w"> </span><span class="s1">'box-shadow'</span><span class="o">:</span><span class="w"> </span><span class="s1">'1px 1px 3px #aaa'</span><span class="p">,</span><span class="w"> </span><span class="s1">'border'</span><span class="o">:</span><span class="w"> </span><span class="s1">'2px white solid'</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">setInterval</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'.grav-whee'</span><span class="w"> </span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s1">'-webkit-transform'</span><span class="o">:</span><span class="w"> </span><span class="s1">'rotate(-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'deg) scale(1.3)'</span><span class="p">,</span><span class="w"> </span><span class="s1">'-moz-transform'</span><span class="o">:</span><span class="w"> </span><span class="s1">'rotate(-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'deg) scale(1.3)'</span><span class="p">,</span><span class="w"> </span><span class="s1">'transform'</span><span class="o">:</span><span class="w"> </span><span class="s1">'rotate(-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'deg) scale(1.3)'</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="mf">360</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="mf">6</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="cm">/** * Provides an interface for acceseing profile data returned from Gravatar.com. * Use GProfile.init() to set up data, based on the JSON returned from Gravatar, * then GProfile.get() to access data more easily. */</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">GProfile</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="err">\</span><span class="nx">data</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="p">{},</span><span class="w"> </span><span class="err">\</span><span class="nx">init</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">data</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">'fetching'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">data</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">'undefined'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="nx">data</span><span class="p">.</span><span class="nx">entry</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">data</span><span class="p">.</span><span class="nx">entry</span><span class="p">[</span><span class="mf">0</span><span class="p">];</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="cm">/** * Returns a value from the profile data. * &#64;param string attr The name of the attribute you want * &#64;param int num (Optional) 0-based array index of the value from this attribute. Use 0 if you're not sure * &#64;return Mixed value of the attribute, or empty string. */</span><span class="w"> </span><span class="err">\</span><span class="nx">get</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">attr</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// Handle x.y references</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">-</span><span class="mf">1</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nx">attr</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="w"> </span><span class="s1">'.'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">parts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">attr</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="w"> </span><span class="sr">/\./</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// console.log(parts);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">s</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">].</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="nx">s</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">].</span><span class="nx">type</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">].</span><span class="nx">type</span><span class="w"> </span><span class="c1">// phoneNumbers | ims</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">].</span><span class="nx">shortname</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">].</span><span class="nx">shortname</span><span class="w"> </span><span class="c1">// accounts</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">].</span><span class="nx">primary</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'primary'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// emails</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">];</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s1">''</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">// Handle \top-level\ elements</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">attr</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">attr</span><span class="w"> </span><span class="p">];</span><span class="w"> </span><span class="c1">// And some \aliases\</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">'url'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">attr</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">urls</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">urls</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">value</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s1">''</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">};</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_resize</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">card_id</span><span class="o">:</span><span class="w"> </span><span class="s1">''</span><span class="p">,</span><span class="w"> </span><span class="nx">orig_width</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">orig_height</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">orig_top</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">orig_left</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">current_image</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="nx">init</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">card_id</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">card_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">card_id</span><span class="p">;</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">bind_enlarge</span><span class="p">();</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="nx">enlarge</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">el</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* Remove any enlarged images */</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'img.grav-large'</span><span class="p">).</span><span class="nx">stop</span><span class="p">().</span><span class="nx">remove</span><span class="p">().</span><span class="nx">size</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">current_image</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">current_image</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'src'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="cm">/* Preload the larger version of the image */</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">card_id</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-tag a'</span><span class="w"> </span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="s1">'background-position'</span><span class="p">,</span><span class="w"> </span><span class="s1">'22px 100%'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">fullsize</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'&lt;img alt=&quot;&quot; /&gt;'</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'src'</span><span class="p">,</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">current_image</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'&amp;amp;size=400'</span><span class="w"> </span><span class="p">).</span><span class="nx">load</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">card_id</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-tag a'</span><span class="w"> </span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="s1">'background-position'</span><span class="p">,</span><span class="w"> </span><span class="s1">'22px 0'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="cm">/* Clone the image */</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">the_clone</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">clone</span><span class="p">();</span><span class="w"> </span><span class="nx">the_clone</span><span class="p">.</span><span class="nx">css</span><span class="p">({</span><span class="w"> </span><span class="s1">'position'</span><span class="o">:</span><span class="w"> </span><span class="s1">'absolute'</span><span class="p">,</span><span class="w"> </span><span class="s1">'top'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_top</span><span class="p">,</span><span class="w"> </span><span class="s1">'left'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_left</span><span class="p">,</span><span class="w"> </span><span class="s1">'background-color'</span><span class="o">:</span><span class="w"> </span><span class="s1">'#333'</span><span class="p">,</span><span class="w"> </span><span class="s1">'width'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_width</span><span class="p">,</span><span class="w"> </span><span class="s1">'height'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_height</span><span class="p">,</span><span class="w"> </span><span class="s1">'border-color'</span><span class="o">:</span><span class="w"> </span><span class="s1">'#555'</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="nx">the_clone</span><span class="p">.</span><span class="nx">appendTo</span><span class="p">(</span><span class="nx">el</span><span class="p">.</span><span class="nx">parent</span><span class="p">());</span><span class="w"> </span><span class="cm">/* Get the image ratio */</span><span class="w"> </span><span class="kd">var</span><span class="w">&nbsp;&nbsp; &nbsp;</span><span class="nx">horiz_padding</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w">&nbsp;&nbsp; &nbsp;</span><span class="nx">vert_padding</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">border_width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">6</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">card_id</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-inner'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">width</span><span class="p">()</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">height</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">ratio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">height</span><span class="p">()</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">width</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">card</span><span class="p">.</span><span class="nx">outerWidth</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">width</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">ratio</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">vert_padding</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">.</span><span class="nx">outerHeight</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// if height it too big resize it width wise.</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="nx">card</span><span class="p">.</span><span class="nx">outerHeight</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">ratio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">width</span><span class="p">()</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">height</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">card</span><span class="p">.</span><span class="nx">outerHeight</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">ratio</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">horiz_padding</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">.</span><span class="nx">outerWidth</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">width</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">ratio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">width</span><span class="p">()</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">height</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">card</span><span class="p">.</span><span class="nx">outerHeight</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">ratio</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">horiz_padding</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">.</span><span class="nx">outerWidth</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">width</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">the_clone</span><span class="p">.</span><span class="nx">stop</span><span class="p">().</span><span class="nx">animate</span><span class="p">({</span><span class="w"> </span><span class="s1">'top'</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="s1">'left'</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="s1">'width'</span><span class="o">:</span><span class="w"> </span><span class="nx">width</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">border_width</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">,</span><span class="w"> </span><span class="s1">'height'</span><span class="o">:</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">border_width</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">,</span><span class="w"> </span><span class="s1">'z-index'</span><span class="o">:</span><span class="w"> </span><span class="mf">99</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-left'</span><span class="o">:</span><span class="w"> </span><span class="nx">horiz_padding</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-right'</span><span class="o">:</span><span class="w"> </span><span class="nx">horiz_padding</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-top'</span><span class="o">:</span><span class="w"> </span><span class="nx">vert_padding</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-bottom'</span><span class="o">:</span><span class="w"> </span><span class="nx">vert_padding</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="mf">250</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* Make the clone the fullsize image that was preloaded */</span><span class="w"> </span><span class="nx">the_clone</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="s1">'grav-large'</span><span class="p">);</span><span class="w"> </span><span class="nx">the_clone</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s1">'src'</span><span class="p">,</span><span class="w"> </span><span class="nx">fullsize</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s1">'src'</span><span class="p">)</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="cm">/* Add the close button */</span><span class="w"> </span><span class="nx">the_clone</span><span class="p">.</span><span class="nx">parent</span><span class="p">().</span><span class="nx">append</span><span class="p">(</span><span class="s1">'&lt;/pre&gt; &lt;div&gt;X&lt;/div&gt; &lt;pre lang=&quot;js&quot;&gt;'</span><span class="p">);</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'.grav-large-close'</span><span class="p">).</span><span class="nx">hide</span><span class="p">().</span><span class="nx">fadeIn</span><span class="p">(</span><span class="mf">100</span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="o">+</span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">card_id</span><span class="o">+</span><span class="s1">' .grav-gallery img'</span><span class="p">).</span><span class="nx">unbind</span><span class="p">(</span><span class="s1">'click'</span><span class="p">);</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'.grav-large-close'</span><span class="w"> </span><span class="p">).</span><span class="nx">live</span><span class="p">(</span><span class="w"> </span><span class="s1">'click'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">reduce</span><span class="p">(</span><span class="w"> </span><span class="nx">the_clone</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="nx">the_clone</span><span class="p">).</span><span class="nx">click</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">reduce</span><span class="p">(</span><span class="w"> </span><span class="nx">the_clone</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="nx">reduce</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">el</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'.grav-large-close'</span><span class="p">).</span><span class="nx">remove</span><span class="p">();</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">stop</span><span class="p">().</span><span class="nx">animate</span><span class="p">({</span><span class="w"> </span><span class="s1">'top'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_top</span><span class="p">,</span><span class="w"> </span><span class="s1">'left'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_left</span><span class="p">,</span><span class="w"> </span><span class="s1">'width'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_width</span><span class="p">,</span><span class="w"> </span><span class="s1">'height'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_height</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-left'</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-right'</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-top'</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-bottom'</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="mf">250</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'img.grav-large'</span><span class="p">).</span><span class="nx">remove</span><span class="p">();</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">bind_enlarge</span><span class="p">(</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">card_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">current_image</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="nx">bind_enlarge</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">card_id</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-gallery img'</span><span class="p">).</span><span class="nx">parent</span><span class="p">(</span><span class="w"> </span><span class="s1">'a'</span><span class="w"> </span><span class="p">).</span><span class="nx">click</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">.</span><span class="nx">browser</span><span class="p">.</span><span class="nx">msie</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">.</span><span class="nx">browser</span><span class="p">.</span><span class="nx">version</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="mf">9.0</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">preventDefault</span><span class="p">();</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">current_image</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">img</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nx">find</span><span class="p">(</span><span class="w"> </span><span class="s1">'img'</span><span class="w"> </span><span class="p">).</span><span class="nx">not</span><span class="p">(</span><span class="w"> </span><span class="s1">'.grav-large'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">position</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">img</span><span class="p">.</span><span class="nx">position</span><span class="p">();</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">img</span><span class="p">.</span><span class="nx">width</span><span class="p">();</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">img</span><span class="p">.</span><span class="nx">height</span><span class="p">();</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_top</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">position</span><span class="p">.</span><span class="nx">top</span><span class="p">;</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_left</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">position</span><span class="p">.</span><span class="nx">left</span><span class="p">;</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">enlarge</span><span class="p">(</span><span class="w"> </span><span class="nx">img</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">orig_left</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">pos</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">init</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">bind_arrows</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">,</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="cm">/* Also recheck the arrows are correct once the user hovers over the gallery section, in case the images took a while to load */</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-gallery'</span><span class="p">).</span><span class="nx">mouseover</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">bind_arrows</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">,</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="nx">bind_arrows</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">,</span><span class="w"> </span><span class="nx">reset</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">gallery_el</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-gallery ul'</span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="nx">gallery_el</span><span class="p">.</span><span class="nx">size</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">orig_left</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">gallery_el</span><span class="p">.</span><span class="nx">css</span><span class="p">(</span><span class="s1">'margin-left'</span><span class="p">).</span><span class="nx">replace</span><span class="p">(</span><span class="s1">'px'</span><span class="p">,</span><span class="s1">''</span><span class="p">);</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">pos</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">gallery_el</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="w"> </span><span class="s1">'li:last'</span><span class="p">).</span><span class="nx">position</span><span class="p">();</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' a.grav-gallery-next'</span><span class="p">).</span><span class="nx">live</span><span class="p">(</span><span class="w"> </span><span class="s1">'click'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">pos</span><span class="p">.</span><span class="nx">left</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="mf">275</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">gallery_el</span><span class="p">.</span><span class="nx">animate</span><span class="p">({</span><span class="s1">'margin-left'</span><span class="o">:</span><span class="w"> </span><span class="nb">parseFloat</span><span class="p">(</span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">orig_left</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">314</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">},</span><span class="w"> </span><span class="mf">300</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">highlight_arrows</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">,</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' a.grav-gallery-prev'</span><span class="p">).</span><span class="nx">live</span><span class="p">(</span><span class="w"> </span><span class="s1">'click'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">orig_left</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">gallery_el</span><span class="p">.</span><span class="nx">animate</span><span class="p">({</span><span class="s1">'margin-left'</span><span class="o">:</span><span class="w"> </span><span class="nb">parseFloat</span><span class="p">(</span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">orig_left</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">314</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">},</span><span class="w"> </span><span class="mf">300</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">highlight_arrows</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">,</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">reset</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-gallery ul'</span><span class="p">).</span><span class="nx">css</span><span class="p">({</span><span class="s1">'margin-left'</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">});</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">highlight_arrows</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">,</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="nx">highlight_arrows</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">orig_left</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-gallery ul'</span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="s1">'margin-left'</span><span class="p">).</span><span class="nx">replace</span><span class="p">(</span><span class="s1">'px'</span><span class="p">,</span><span class="s1">''</span><span class="p">);</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">last</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-gallery ul li:last'</span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">last</span><span class="p">.</span><span class="nx">position</span><span class="p">().</span><span class="nx">left</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="mf">275</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' a.grav-gallery-next'</span><span class="p">).</span><span class="nx">css</span><span class="p">({</span><span class="s1">'background-position'</span><span class="o">:</span><span class="w"> </span><span class="s1">'-39px 0'</span><span class="p">});</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' a.grav-gallery-next'</span><span class="p">).</span><span class="nx">css</span><span class="p">({</span><span class="s1">'background-position'</span><span class="o">:</span><span class="w"> </span><span class="s1">'-26px 0'</span><span class="p">});</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">orig_left</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' a.grav-gallery-prev'</span><span class="p">).</span><span class="nx">css</span><span class="p">({</span><span class="s1">'background-position'</span><span class="o">:</span><span class="w"> </span><span class="s1">'0 0'</span><span class="p">});</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' a.grav-gallery-prev'</span><span class="p">).</span><span class="nx">css</span><span class="p">({</span><span class="s1">'background-position'</span><span class="o">:</span><span class="w"> </span><span class="s1">'-13px 0'</span><span class="p">});</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="cm">/* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as defined in RFC 1321. * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet * Distributed under the BSD License * See http://pajhome.org.uk/crypt/md5 for more info. */</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">hexcase</span><span class="o">=</span><span class="mf">0</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">b64pad</span><span class="o">=</span><span class="err">\\</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">chrsz</span><span class="o">=</span><span class="mf">8</span><span class="p">;</span><span class="kd">function</span><span class="w"> </span><span class="nx">hex_md5</span><span class="p">(</span><span class="nx">s</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">binl2hex</span><span class="p">(</span><span class="nx">core_md5</span><span class="p">(</span><span class="nx">str2binl</span><span class="p">(</span><span class="nx">s</span><span class="p">),</span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="nx">chrsz</span><span class="p">))}</span><span class="kd">function</span><span class="w"> </span><span class="nx">b64_md5</span><span class="p">(</span><span class="nx">s</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">binl2b64</span><span class="p">(</span><span class="nx">core_md5</span><span class="p">(</span><span class="nx">str2binl</span><span class="p">(</span><span class="nx">s</span><span class="p">),</span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="nx">chrsz</span><span class="p">))}</span><span class="kd">function</span><span class="w"> </span><span class="nx">str_md5</span><span class="p">(</span><span class="nx">s</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">binl2str</span><span class="p">(</span><span class="nx">core_md5</span><span class="p">(</span><span class="nx">str2binl</span><span class="p">(</span><span class="nx">s</span><span class="p">),</span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="nx">chrsz</span><span class="p">))}</span><span class="kd">function</span><span class="w"> </span><span class="nx">hex_hmac_md5</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">binl2hex</span><span class="p">(</span><span class="nx">core_hmac_md5</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">))}</span><span class="kd">function</span><span class="w"> </span><span class="nx">b64_hmac_md5</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">binl2b64</span><span class="p">(</span><span class="nx">core_hmac_md5</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">))}</span><span class="kd">function</span><span class="w"> </span><span class="nx">str_hmac_md5</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">binl2str</span><span class="p">(</span><span class="nx">core_hmac_md5</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">))}</span><span class="kd">function</span><span class="w"> </span><span class="nx">md5_vm_test</span><span class="p">(){</span><span class="k">return</span><span class="w"> </span><span class="nx">hex_md5</span><span class="p">(</span><span class="err">\</span><span class="nx">abc</span><span class="err">\</span><span class="p">)</span><span class="o">==</span><span class="err">\</span><span class="mf">900150983</span><span class="nx">cd24fb0d6963f7d28e17f72</span><span class="err">\</span><span class="p">}</span><span class="kd">function</span><span class="w"> </span><span class="nx">core_md5</span><span class="p">(</span><span class="nx">x</span><span class="p">,</span><span class="nx">e</span><span class="p">){</span><span class="nx">x</span><span class="p">[</span><span class="nx">e</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">5</span><span class="p">]</span><span class="o">|=</span><span class="mh">0x80</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;((</span><span class="nx">e</span><span class="p">)</span><span class="o">%</span><span class="mf">32</span><span class="p">);</span><span class="nx">x</span><span class="p">[(((</span><span class="nx">e</span><span class="o">+</span><span class="mf">64</span><span class="p">)</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">9</span><span class="p">)</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="mf">4</span><span class="p">)</span><span class="o">+</span><span class="mf">14</span><span class="p">]</span><span class="o">=</span><span class="nx">e</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">a</span><span class="o">=</span><span class="mf">1732584193</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">b</span><span class="o">=-</span><span class="mf">271733879</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">c</span><span class="o">=-</span><span class="mf">1732584194</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">d</span><span class="o">=</span><span class="mf">271733878</span><span class="p">;</span><span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="o">=</span><span class="mf">0</span><span class="p">;</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="nx">x</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="nx">i</span><span class="o">+=</span><span class="mf">16</span><span class="p">){</span><span class="kd">var</span><span class="w"> </span><span class="nx">f</span><span class="o">=</span><span class="nx">a</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">g</span><span class="o">=</span><span class="nx">b</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">h</span><span class="o">=</span><span class="nx">c</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">j</span><span class="o">=</span><span class="nx">d</span><span class="p">;</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">0</span><span class="p">],</span><span class="mf">7</span><span class="p">,</span><span class="o">-</span><span class="mf">680876936</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">1</span><span class="p">],</span><span class="mf">12</span><span class="p">,</span><span class="o">-</span><span class="mf">389564586</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">2</span><span class="p">],</span><span class="mf">17</span><span class="p">,</span><span class="mf">606105819</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">3</span><span class="p">],</span><span class="mf">22</span><span class="p">,</span><span class="o">-</span><span class="mf">1044525330</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">4</span><span class="p">],</span><span class="mf">7</span><span class="p">,</span><span class="o">-</span><span class="mf">176418897</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">5</span><span class="p">],</span><span class="mf">12</span><span class="p">,</span><span class="mf">1200080426</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">6</span><span class="p">],</span><span class="mf">17</span><span class="p">,</span><span class="o">-</span><span class="mf">1473231341</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">7</span><span class="p">],</span><span class="mf">22</span><span class="p">,</span><span class="o">-</span><span class="mf">45705983</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">8</span><span class="p">],</span><span class="mf">7</span><span class="p">,</span><span class="mf">1770035416</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">9</span><span class="p">],</span><span class="mf">12</span><span class="p">,</span><span class="o">-</span><span class="mf">1958414417</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">10</span><span class="p">],</span><span class="mf">17</span><span class="p">,</span><span class="o">-</span><span class="mf">42063</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">11</span><span class="p">],</span><span class="mf">22</span><span class="p">,</span><span class="o">-</span><span class="mf">1990404162</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">12</span><span class="p">],</span><span class="mf">7</span><span class="p">,</span><span class="mf">1804603682</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">13</span><span class="p">],</span><span class="mf">12</span><span class="p">,</span><span class="o">-</span><span class="mf">40341101</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">14</span><span class="p">],</span><span class="mf">17</span><span class="p">,</span><span class="o">-</span><span class="mf">1502002290</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">15</span><span class="p">],</span><span class="mf">22</span><span class="p">,</span><span class="mf">1236535329</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">1</span><span class="p">],</span><span class="mf">5</span><span class="p">,</span><span class="o">-</span><span class="mf">165796510</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">6</span><span class="p">],</span><span class="mf">9</span><span class="p">,</span><span class="o">-</span><span class="mf">1069501632</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">11</span><span class="p">],</span><span class="mf">14</span><span class="p">,</span><span class="mf">643717713</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">0</span><span class="p">],</span><span class="mf">20</span><span class="p">,</span><span class="o">-</span><span class="mf">373897302</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">5</span><span class="p">],</span><span class="mf">5</span><span class="p">,</span><span class="o">-</span><span class="mf">701558691</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">10</span><span class="p">],</span><span class="mf">9</span><span class="p">,</span><span class="mf">38016083</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">15</span><span class="p">],</span><span class="mf">14</span><span class="p">,</span><span class="o">-</span><span class="mf">660478335</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">4</span><span class="p">],</span><span class="mf">20</span><span class="p">,</span><span class="o">-</span><span class="mf">405537848</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">9</span><span class="p">],</span><span class="mf">5</span><span class="p">,</span><span class="mf">568446438</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">14</span><span class="p">],</span><span class="mf">9</span><span class="p">,</span><span class="o">-</span><span class="mf">1019803690</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">3</span><span class="p">],</span><span class="mf">14</span><span class="p">,</span><span class="o">-</span><span class="mf">187363961</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">8</span><span class="p">],</span><span class="mf">20</span><span class="p">,</span><span class="mf">1163531501</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">13</span><span class="p">],</span><span class="mf">5</span><span class="p">,</span><span class="o">-</span><span class="mf">1444681467</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">2</span><span class="p">],</span><span class="mf">9</span><span class="p">,</span><span class="o">-</span><span class="mf">51403784</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">7</span><span class="p">],</span><span class="mf">14</span><span class="p">,</span><span class="mf">1735328473</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">12</span><span class="p">],</span><span class="mf">20</span><span class="p">,</span><span class="o">-</span><span class="mf">1926607734</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">5</span><span class="p">],</span><span class="mf">4</span><span class="p">,</span><span class="o">-</span><span class="mf">378558</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">8</span><span class="p">],</span><span class="mf">11</span><span class="p">,</span><span class="o">-</span><span class="mf">2022574463</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">11</span><span class="p">],</span><span class="mf">16</span><span class="p">,</span><span class="mf">1839030562</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">14</span><span class="p">],</span><span class="mf">23</span><span class="p">,</span><span class="o">-</span><span class="mf">35309556</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">1</span><span class="p">],</span><span class="mf">4</span><span class="p">,</span><span class="o">-</span><span class="mf">1530992060</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">4</span><span class="p">],</span><span class="mf">11</span><span class="p">,</span><span class="mf">1272893353</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">7</span><span class="p">],</span><span class="mf">16</span><span class="p">,</span><span class="o">-</span><span class="mf">155497632</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">10</span><span class="p">],</span><span class="mf">23</span><span class="p">,</span><span class="o">-</span><span class="mf">1094730640</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">13</span><span class="p">],</span><span class="mf">4</span><span class="p">,</span><span class="mf">681279174</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">0</span><span class="p">],</span><span class="mf">11</span><span class="p">,</span><span class="o">-</span><span class="mf">358537222</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">3</span><span class="p">],</span><span class="mf">16</span><span class="p">,</span><span class="o">-</span><span class="mf">722521979</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">6</span><span class="p">],</span><span class="mf">23</span><span class="p">,</span><span class="mf">76029189</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">9</span><span class="p">],</span><span class="mf">4</span><span class="p">,</span><span class="o">-</span><span class="mf">640364487</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">12</span><span class="p">],</span><span class="mf">11</span><span class="p">,</span><span class="o">-</span><span class="mf">421815835</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">15</span><span class="p">],</span><span class="mf">16</span><span class="p">,</span><span class="mf">530742520</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">2</span><span class="p">],</span><span class="mf">23</span><span class="p">,</span><span class="o">-</span><span class="mf">995338651</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">0</span><span class="p">],</span><span class="mf">6</span><span class="p">,</span><span class="o">-</span><span class="mf">198630844</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">7</span><span class="p">],</span><span class="mf">10</span><span class="p">,</span><span class="mf">1126891415</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">14</span><span class="p">],</span><span class="mf">15</span><span class="p">,</span><span class="o">-</span><span class="mf">1416354905</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">5</span><span class="p">],</span><span class="mf">21</span><span class="p">,</span><span class="o">-</span><span class="mf">57434055</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">12</span><span class="p">],</span><span class="mf">6</span><span class="p">,</span><span class="mf">1700485571</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">3</span><span class="p">],</span><span class="mf">10</span><span class="p">,</span><span class="o">-</span><span class="mf">1894986606</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">10</span><span class="p">],</span><span class="mf">15</span><span class="p">,</span><span class="o">-</span><span class="mf">1051523</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">1</span><span class="p">],</span><span class="mf">21</span><span class="p">,</span><span class="o">-</span><span class="mf">2054922799</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">8</span><span class="p">],</span><span class="mf">6</span><span class="p">,</span><span class="mf">1873313359</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">15</span><span class="p">],</span><span class="mf">10</span><span class="p">,</span><span class="o">-</span><span class="mf">30611744</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">6</span><span class="p">],</span><span class="mf">15</span><span class="p">,</span><span class="o">-</span><span class="mf">1560198380</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">13</span><span class="p">],</span><span class="mf">21</span><span class="p">,</span><span class="mf">1309151649</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">4</span><span class="p">],</span><span class="mf">6</span><span class="p">,</span><span class="o">-</span><span class="mf">145523070</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">11</span><span class="p">],</span><span class="mf">10</span><span class="p">,</span><span class="o">-</span><span class="mf">1120210379</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">2</span><span class="p">],</span><span class="mf">15</span><span class="p">,</span><span class="mf">718787259</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">9</span><span class="p">],</span><span class="mf">21</span><span class="p">,</span><span class="o">-</span><span class="mf">343485551</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">f</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">g</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">h</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">j</span><span class="p">)}</span><span class="k">return</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">md5_cmn</span><span class="p">(</span><span class="nx">q</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">bit_rol</span><span class="p">(</span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">q</span><span class="p">),</span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">x</span><span class="p">,</span><span class="nx">t</span><span class="p">)),</span><span class="nx">s</span><span class="p">),</span><span class="nx">b</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">md5_cmn</span><span class="p">((</span><span class="nx">b</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="nx">c</span><span class="p">)</span><span class="o">|</span><span class="p">((</span><span class="o">~</span><span class="nx">b</span><span class="p">)</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="nx">d</span><span class="p">),</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">md5_cmn</span><span class="p">((</span><span class="nx">b</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="nx">d</span><span class="p">)</span><span class="o">|</span><span class="p">(</span><span class="nx">c</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;(</span><span class="o">~</span><span class="nx">d</span><span class="p">)),</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">md5_cmn</span><span class="p">(</span><span class="nx">b</span><span class="o">^</span><span class="nx">c</span><span class="o">^</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">md5_cmn</span><span class="p">(</span><span class="nx">c</span><span class="o">^</span><span class="p">(</span><span class="nx">b</span><span class="o">|</span><span class="p">(</span><span class="o">~</span><span class="nx">d</span><span class="p">)),</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">core_hmac_md5</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">){</span><span class="kd">var</span><span class="w"> </span><span class="nx">c</span><span class="o">=</span><span class="nx">str2binl</span><span class="p">(</span><span class="nx">a</span><span class="p">);</span><span class="k">if</span><span class="p">(</span><span class="nx">c</span><span class="p">.</span><span class="nx">length</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">16</span><span class="p">)</span><span class="nx">c</span><span class="o">=</span><span class="nx">core_md5</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">a</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="nx">chrsz</span><span class="p">);</span><span class="kd">var</span><span class="w"> </span><span class="nx">d</span><span class="o">=</span><span class="nb">Array</span><span class="p">(</span><span class="mf">16</span><span class="p">),</span><span class="nx">opad</span><span class="o">=</span><span class="nb">Array</span><span class="p">(</span><span class="mf">16</span><span class="p">);</span><span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="o">=</span><span class="mf">0</span><span class="p">;</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="mf">16</span><span class="p">;</span><span class="nx">i</span><span class="o">++</span><span class="p">){</span><span class="nx">d</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="o">=</span><span class="nx">c</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="o">^</span><span class="mh">0x36363636</span><span class="p">;</span><span class="nx">opad</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="o">=</span><span class="nx">c</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="o">^</span><span class="mh">0x5C5C5C5C</span><span class="p">}</span><span class="kd">var</span><span class="w"> </span><span class="nx">e</span><span class="o">=</span><span class="nx">core_md5</span><span class="p">(</span><span class="nx">d</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span><span class="nx">str2binl</span><span class="p">(</span><span class="nx">b</span><span class="p">)),</span><span class="mf">512</span><span class="o">+</span><span class="nx">b</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="nx">chrsz</span><span class="p">);</span><span class="k">return</span><span class="w"> </span><span class="nx">core_md5</span><span class="p">(</span><span class="nx">opad</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span><span class="nx">e</span><span class="p">),</span><span class="mf">512</span><span class="o">+</span><span class="mf">128</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">x</span><span class="p">,</span><span class="nx">y</span><span class="p">){</span><span class="kd">var</span><span class="w"> </span><span class="nx">a</span><span class="o">=</span><span class="p">(</span><span class="nx">x</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="mh">0xFFFF</span><span class="p">)</span><span class="o">+</span><span class="p">(</span><span class="nx">y</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="mh">0xFFFF</span><span class="p">);</span><span class="kd">var</span><span class="w"> </span><span class="nx">b</span><span class="o">=</span><span class="p">(</span><span class="nx">x</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">16</span><span class="p">)</span><span class="o">+</span><span class="p">(</span><span class="nx">y</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">16</span><span class="p">)</span><span class="o">+</span><span class="p">(</span><span class="nx">a</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">16</span><span class="p">);</span><span class="k">return</span><span class="p">(</span><span class="nx">b</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="mf">16</span><span class="p">)</span><span class="o">|</span><span class="p">(</span><span class="nx">a</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="mh">0xFFFF</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">bit_rol</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">){</span><span class="k">return</span><span class="p">(</span><span class="nx">a</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="nx">b</span><span class="p">)</span><span class="o">|</span><span class="p">(</span><span class="nx">a</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;(</span><span class="mf">32</span><span class="o">-</span><span class="nx">b</span><span class="p">))}</span><span class="kd">function</span><span class="w"> </span><span class="nx">str2binl</span><span class="p">(</span><span class="nx">a</span><span class="p">){</span><span class="kd">var</span><span class="w"> </span><span class="nx">b</span><span class="o">=</span><span class="nb">Array</span><span class="p">();</span><span class="kd">var</span><span class="w"> </span><span class="nx">c</span><span class="o">=</span><span class="p">(</span><span class="mf">1</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="nx">chrsz</span><span class="p">)</span><span class="o">-</span><span class="mf">1</span><span class="p">;</span><span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="o">=</span><span class="mf">0</span><span class="p">;</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="nx">a</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="nx">chrsz</span><span class="p">;</span><span class="nx">i</span><span class="o">+=</span><span class="nx">chrsz</span><span class="p">)</span><span class="nx">b</span><span class="p">[</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">5</span><span class="p">]</span><span class="o">|=</span><span class="p">(</span><span class="nx">a</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">i</span><span class="o">/</span><span class="nx">chrsz</span><span class="p">)</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="nx">c</span><span class="p">)</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;(</span><span class="nx">i</span><span class="o">%</span><span class="mf">32</span><span class="p">);</span><span class="k">return</span><span class="w"> </span><span class="nx">b</span><span class="p">}</span><span class="kd">function</span><span class="w"> </span><span class="nx">binl2str</span><span class="p">(</span><span class="nx">a</span><span class="p">){</span><span class="kd">var</span><span class="w"> </span><span class="nx">b</span><span class="o">=</span><span class="err">\\</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">c</span><span class="o">=</span><span class="p">(</span><span class="mf">1</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="nx">chrsz</span><span class="p">)</span><span class="o">-</span><span class="mf">1</span><span class="p">;</span><span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="o">=</span><span class="mf">0</span><span class="p">;</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="nx">a</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="mf">32</span><span class="p">;</span><span class="nx">i</span><span class="o">+=</span><span class="nx">chrsz</span><span class="p">)</span><span class="nx">b</span><span class="o">+=</span><span class="nb">String</span><span class="p">.</span><span class="nx">fromCharCode</span><span class="p">((</span><span class="nx">a</span><span class="p">[</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">5</span><span class="p">]</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;(</span><span class="nx">i</span><span class="o">%</span><span class="mf">32</span><span class="p">))</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="nx">c</span><span class="p">);</span><span class="k">return</span><span class="w"> </span><span class="nx">b</span><span class="p">}</span><span class="kd">function</span><span class="w"> </span><span class="nx">binl2hex</span><span class="p">(</span><span class="nx">a</span><span class="p">){</span><span class="kd">var</span><span class="w"> </span><span class="nx">b</span><span class="o">=</span><span class="nx">hexcase</span><span class="o">?</span><span class="err">\</span><span class="mo">01234567</span><span class="mf">89</span><span class="nx">ABCDEF</span><span class="err">\</span><span class="o">:</span><span class="err">\</span><span class="mo">01234567</span><span class="mf">89</span><span class="nx">abcdef</span><span class="err">\</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">c</span><span class="o">=</span><span class="err">\\</span><span class="p">;</span><span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="o">=</span><span class="mf">0</span><span class="p">;</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="nx">a</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="mf">4</span><span class="p">;</span><span class="nx">i</span><span class="o">++</span><span class="p">){</span><span class="nx">c</span><span class="o">+=</span><span class="nx">b</span><span class="p">.</span><span class="nx">charAt</span><span class="p">((</span><span class="nx">a</span><span class="p">[</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">2</span><span class="p">]</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;((</span><span class="nx">i</span><span class="o">%</span><span class="mf">4</span><span class="p">)</span><span class="o">*</span><span class="mf">8</span><span class="o">+</span><span class="mf">4</span><span class="p">))</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="mh">0xF</span><span class="p">)</span><span class="o">+</span><span class="nx">b</span><span class="p">.</span><span class="nx">charAt</span><span class="p">((</span><span class="nx">a</span><span class="p">[</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">2</span><span class="p">]</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;((</span><span class="nx">i</span><span class="o">%</span><span class="mf">4</span><span class="p">)</span><span class="o">*</span><span class="mf">8</span><span class="p">))</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="mh">0xF</span><span class="p">)}</span><span class="k">return</span><span class="w"> </span><span class="nx">c</span><span class="p">}</span><span class="kd">function</span><span class="w"> </span><span class="nx">binl2b64</span><span class="p">(</span><span class="nx">a</span><span class="p">){</span><span class="kd">var</span><span class="w"> </span><span class="nx">b</span><span class="o">=</span><span class="err">\</span><span class="nx">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789</span><span class="o">+</span><span class="err">/\;var c=\\;for(var i=0;i&amp;lt;a.length*4;i+=3){var d=(((a[i&amp;gt;&amp;gt;2]&amp;gt;&amp;gt;8*(i%4))&amp;amp;0xFF)&amp;lt;&amp;lt;16)|(((a[i+1&amp;gt;&amp;gt;2]&amp;gt;&amp;gt;8*((i+1)%4))&amp;amp;0xFF)&amp;lt;&amp;lt;8)|((a[i+2&amp;gt;&amp;gt;2]&amp;gt;&amp;gt;8*((i+2)%4))&amp;amp;0xFF);for(var j=0;j&amp;lt;4;j++){if(i*8+j*6&amp;gt;a.length*32)c+=b64pad;else c+=b.charAt((d&amp;gt;&amp;gt;6*(3-j))&amp;amp;0x3F)}}return c};</span> </pre> <div class="line-block"> <div class="line">Minimiert man das ganze noch mit einem JSMinifier wie <a class="reference external" href="http://fmarcia.info/jsmin/test.html">diesem</a>, schrumpft das ganz noch einmal deutlich ein.</div> <div class="line">Die so erhaltene Datei (Hier zum Download: <a class="reference external" href="https://lioman.de/2010/10/gravatar-hovercards-einbinden/Hovercard.js.gz">Hovercard.js.gz</a> )</div> <div class="line">Läd man z.B. in <span class="caps">MEINBLOG</span>/wp-includes/js und trägt folgendes in die <em>funtions.php</em> des Themes ein:</div> </div> <pre class="literal-block"> //Gravatar wp_enqueue_script( 'gprofiles', '/wp-includes/js/Hovercard.js', array( 'jquery' ), 'e', TRUE ); ?&gt; </pre> </div> LiomanTue, 12 Oct 2010 13:26:00 +0200tag:lioman.de,2010-10-12:/2010/10/gravatar-hovercards-einbinden/DigitalBlogGravatarHoverJavascriptKommentarescriptFlattr-Ergebnissehttps://lioman.de/2010/06/flattr-ergebnisse/<p>Tja der erste Abrechnungsmonat mit <a class="reference external" href="http://www.flattr.com">Flattr</a> ist schon um. Und selbst bei einem so kleinen Blog wie dem meinen kommt ein bisschen was rein. Während <a class="reference external" href="http://blogs.taz.de/hausblog/2010/06/01/erstes_geld_von_flattr/">taz</a>, <a class="reference external" href="http://carta.info/28399/flattr-die-erste-abrechnung/">Carta</a>und <a class="reference external" href="http://www.spreeblick.com/2010/06/02/flattr-nach-den-ersten-14-tagen/">Spreeblick</a>. Beträge im dreistelligen Bereich bekommen, habe ich noch mehr geflattert, als bei mir reinkam. 6 Klicks (Wovon 2 für ein Forumbeitrag waren) haben mi 0,68€ eingebracht. Ein Klick ist damit ca 11ct&nbsp;Wert.</p> <div class="section" id="ist-das-nicht-furchtbar-enttauschend"> <h2><strong>Ist das nicht furchtbar&nbsp;enttäuschend?</strong></h2> <p>Ich sage nein. Zwar ist es so, dass ich bisher mehr fürs Flattrn zahle, aber die Nutzerzahlen sind ja noch entsprechend niedrig. Flattr befindet sich ja immer noch in der (halb)geschlossenen Beta-Phase. Die Meisten Nutzer sind zudem noch selbst Blogger und der Großteil des Geldes wird im Kreis rumgeschoben. Zwar können größere Blogs/Netzzeitungen&nbsp; mehr Klicks auf sich ziehen aber bis etwas bei anderen ankommt wird es noch ein bisschen&nbsp;dauern.</p> <p>Erst wenn unter den Nutzern viele Leser, Schreibenden gegenüberstehen dann wird es sich auch für kleinere Blogs&nbsp;lohnen.</p> <p>Erste Verbesserungen im Bezahlsystem sind auch schon erreicht. Nun kann man auch per Moneybookers Geld auf das Flattrkonto schieben. Das ist noch nicht ganz optimal, aber die Gebühren sind schon einmal niedriger. (Bei 100 € frisst <span class="caps">MB</span> 2,3% Paypal möchte hingegen 3,75%). Wirklich Gebührenfrei wäre nur eine Banküberweisung (Hoffentlich kommt diese&nbsp;bald).</p> <p>Manche meinen, dass schon die Idee <em>Geld für Inhalte</em> absurd ist, wenn man eh alles kostenlos bekommt. Blogger würden sich so für Werbung oder Klicks korrumpieren und nur das schreiben was Geld&nbsp;bringt.</p> <p>Ich sehe das nicht so eng. Bloggen ist für mich ein Hobby. Ich werde damit kein Geld verdienen können. Allerdings möchte ich das Hobby so günstig wie möglich halten. Es frisst Zeit genug - da soll nicht auch noch die Geldbörse eangefressen&nbsp;werden.</p> <p>Ein System wie Flattr oder eben Werbung ist die Möglichkeit ein Teil der Kosten die das Hosten kostet wieder&nbsp;reinzubekommen.</p> <p>Käme durch Flattr irgendwann genug rein, würde ich die Werbung vielleicht sogar gänzlich abschalten. Es würde mein Blog auf jeden Fall schöner&nbsp;machen.</p> <p>Bis dahin taucht hier eben ab und&nbsp;zudas:</p> <p>auf. (Auch wenn die Einnahmen mehr als Bescheiden&nbsp;sind)</p> </div> LiomanMon, 07 Jun 2010 14:29:00 +0200tag:lioman.de,2010-06-07:/2010/06/flattr-ergebnisse/DigitalBlogbloggenFazitFlattrMicropaymentMonetarisierungmoneybookersverbesserungenEndlich Flattrhttps://lioman.de/2010/05/endlich-flattr/<p><strong>*Ich schrieb schon über den Micropayment-Dienst `Flattr &lt;http://www.youtube.com/watch?v=kwvExIWf_Uc&gt;`__ auf diesem `Blog &lt;/minispenden-fuer-content&gt;`__. Nun ist Flattr auch hier&nbsp;angekommen.*</strong></p> <p>Gleich nachdem ich die ersten Berichte (z.B. bei <a class="reference external" href="http://netzwertig.com/2010/02/11/flattr-neuer-micropaymentdienst-setzt-auf-die-thank-you-economy/">netzwertig.com</a>) über den Dienst Flattr gelesen hatte, habe ich mich auf der Hompage des Dienstes um einen Invitation-Code bemüht. Heute kam er per Mail und nun bin ich Mitglied. Der Rest war einfach hab per <a class="reference external" href="http://www.paypal.com">Paypal</a> 2,50 an Flattr geschickt. 2,06 kamen dann an (wegen der PayPal-Gebühren). Und nun kann es los gehen. Verschiedenste Seiten haben schon den Button von Flattr eingefügt. Am einfachsten geht das per (Wordpress-)`Plugin &lt;<a class="reference external" href="http://wordpress.org/extend/plugins/flattr">http://wordpress.org/extend/plugins/flattr</a>&gt;`__. <a class="reference external image-reference" href="https://lioman.de/images/Flattr.png"><img alt="Clickratio Flattr" class="alignright size-full" src="https://lioman.de/images/Flattr.png" style="width: 363px; height: 188px;" /></a></p> <p>Wenn man nun auf anderen Seiten klickt wird der eingestellte Betrag durch die Klicks geteilt. Den Wert eines Klicks kann man im Dashboard jederzeit&nbsp;ablesen.</p> <p>Hat man so wie ich auch den Button eingefügt und klickt jemand darauf kann man im Dashboard auch die entsprechenden Geldeingänge&nbsp;sehen.</p> <p>Hat das Modell&nbsp;Zukunft?</p> <p>Wenn Flattr mit den Einladungen nicht geizt und wenn es möglichst viele einbauen - dann lautet die Antwort&nbsp;ja.</p> </p><p>Vielleicht sind noch ein paar Verbesserungen nötig. Ich denke, dass viele nicht viel ausgeben möchten. 2 € sind da gerade so <span class="caps">OK</span>. Möchte man nun dass nicht Paypal mitverdient muss man das Konto mit einem größeren Betrag aufladen. Andere Bezahlmöglichkeiten wären also von Vorteil. Die gute alte Überweisung halte ich da sogar für die beste Lösung - da niemand dazwischen auch noch mitverdienen will. Ein weiteres Problem sehe ich im Abogedanken. Da muss noch dran geschraubt werden. Ich halte es nicht für sinnvoll, dass der Account eingefrohren wird, wenn kein Geld drauf ist. Auch die eigenen Buttons. Ich habe also nichtmal die Möglichkeit, neue Flattr zu verdienen - die ich dann wieder&nbsp;verteile.</p> <p>Ein Test gibt es auch bei <a class="reference external" href="http://netzwertig.com/2010/04/26/thank-you-economy-ein-erster-blick-auf-flattr/">Netzwertig</a></p> LiomanTue, 11 May 2010 13:30:00 +0200tag:lioman.de,2010-05-11:/2010/05/endlich-flattr/DigitalBlogFlattrGeldMicropaymentPluginverdienenWordpressWordtube abgeschafft - Vodpod ist Ersatzhttps://lioman.de/2010/01/wordtube-abgeschafft-vodpod-ist-ersatz/<p><strong>*Ich hatte auf diesem Blog bisher das Wortube-Plugin im Einsatz. Trotz einiger Vorteile muss es nun&nbsp;weg.*</strong></p> <p>Wordtube hat den Vorteil, dass es einfach zu bedienen ist, einen eigenständigen Player nutzt (Also alle Videos genau optisch gleich eingebettet werden können). Und es unterstützt Playlisten und so kann man bestimmte Kanäle generieren, Videosammlungen bestimmten Themen zuordnen und einfach&nbsp;einblenden.</p> <p>Warum sollte man ein solch praktisches Plugin einfach&nbsp;abschaffen?</p> <p>Also zum Ersten: Lizenzgründe -&nbsp; Der benutzte <a class="reference external" href="http://www.longtailvideo.com/players/jw-flv-player/"><span class="caps">JW</span> Player</a> darf nicht frei genutzt werden, wenn man GoogleAdsense einblendet. Das Blog gilt damit automatisch als kommerziell (auch wenn die Einnahmen niemals die Kosten des Blogs&nbsp;decken).</p> <p>Und zum Zweiten: Weiterentwicklung und Abhängigkeit - Das Plugin wird in letzter Zeit nicht mehr aktiv weiterentwickelt. So musste ich selbst schon im <span class="caps">PHP</span>-Code herumbasteln, damit das Interface an den Adminbereich ab Wordpress 2.7 angepasst ist (vgl <a class="reference external" href="/wordtube-playlist-verwaltung">hier</a>). Baut man seine kompletten Einbettungen auf ein Plugin aus, das nicht einen simplen Tag wie &#8220;[videotag] <span class="caps">VIDEOURL</span> [/videortag]&#8221; nutzt, auf ist man abhängig von dessen Funktionalität und Weiterentwicklung. (Einen einfachen Tag kann man leicht durch ein paar <span class="caps">SQL</span>-Befehle ersetzen falls dies nötig&nbsp;wäre).</p> <p>In Zukunft binde ich also alle Videos direkt ein. Das geht ohne Probleme, da <a class="reference external" href="http://blog.wordpress-deutschland.org/2009/10/15/noch-einfacher-videos-bilder-einbinden-mit-oembed-in-wordpress-2-9.html">Wordpress 2.9+</a> <a class="reference external" href="http://www.oembed.com/">oEmbed</a>&nbsp;unterstützt.</p> <p>Um Playlisten einzufügen nutze ich den Dienst vodpod.com in Verbindung mit dem Plugin von <a class="reference external" href="http://www.xondie.com/resources/">Xondie</a>. Das Ergebnis kann man oben unter dem Link <em>Liotube</em>&nbsp;bestaunen.</p> <p>Vodpod hat noch ein paar andere Vorteile: Man kann von vielen Portalen Videos einfach per Button zur eigenen Sammlung hinzufügen, kommentieren und mit Tags versehen. Man kann mit VodSpot ein eigenes Videoportal erstellen und man kann die gesammelten Videos an diverse Soziale Netzwerke verteilen, bzw per Knopfdruck direkt an sein eigenes Blog&nbsp;schicken.</p> LiomanWed, 13 Jan 2010 14:47:00 +0100tag:lioman.de,2010-01-13:/2010/01/wordtube-abgeschafft-vodpod-ist-ersatz/DigitalBlogoembedPluginVideovodpodwordtubeWordpress 2.9https://lioman.de/2009/12/wordpress-2-9/<p>Ich habe hier mal gleich die aktuellste Version von Wordpress eingespielt. Auf den ersten Blick hat sich nicht viel verändert aber es gibt einige neue Funktionen. Die sicher interessant sind. Eine genaue Auflistungen gibt es <a class="reference external" href="http://blog.wordpress-deutschland.org/2009/12/18/wordpress-2-9-eine-uebersicht-der-neuen-funktionen.html">hier,</a></p> <p>Das Update war wie immer ganz&nbsp;leicht:</p> <ul class="simple"> <li>Datenbank&nbsp;sichern</li> <li>Alte Dateien&nbsp;aufräumen</li> <li>Neue per <span class="caps">FTP</span>&nbsp;draufschieben</li> <li>Datenbank&nbsp;Update</li> </ul> <p>Es sieht so aus, als würde alles soweit funktionieren. Jetzt teste ich noch die Planungsfunktion, da diese bei mir bisher nicht funktioniert hat. Wenns wieder nicht klappt muss ich wohl per Plugin&nbsp;nachrüsten.</p> LiomanMon, 21 Dec 2009 17:25:00 +0100tag:lioman.de,2009-12-21:/2009/12/wordpress-2-9/Digital2.9BlogupdateWordpressFeedburner Twitterthttps://lioman.de/2009/12/feedburner-twittert/<p>Wie viele Blogger nutze auch ich den Microbloggingdienst <a href="http://www.twitter.com">Twitter</a>, um meine Blogeinträge zu verteilen und bekannt zu machen. Bisher schickte der Dienst <a href="http://twitterfeed.com">twitterfeed.com</a> das Blogfeed zu&nbsp;Twitter.</p> <p>Nun gibt es eine neue Möglichkeit, die ich erst mal testen werde. Mein Feed wird über den Dienst Feedburner zur Verfügung gestellt, das hat verschiedene Vorteile, die ich aber an dieser Stelle nicht weiter erläutern werde. Über <em>Publicize &gt; Socialize</em> kann man den neuen Service in Anspruch nehmen. Über <a href="http://de.wikipedia.org/wiki/OAuth">OAuth</a> verknüpft man sein <a href="http://twitter.com/lioman">Twitterprofil</a> und macht die gewünschten Einstellungen. Man kann Platz für Retweets lassen, Hashtags automatisch erstellen lassen, den Link zum Artikel hinzufügen, zusätzlichen Text vor bzw. hinter das Tweet stellen und zu guter Letzt Filtern was überhaupt gepostet werden&nbsp;soll.</p> <p>Die Links werden vom neuen <span class="caps">URL</span>-Shortener <a href="http://goo.gl/">goo.gl</a> verkürzt. (Zudem es noch nicht viele Informationen gibt. Aber Stabilität, Sicherheit und Geschwindigkeit sind die&nbsp;Ziele).</p> <p>Besonders die Funktion der Hashtaggenerierung finde ich praktisch. So werden ausgewählte Worte im Titel + Artikeltags mit der Raute versehen bzw.&nbsp;hinzugefügt.</p> <p>In der Vorschau sieht man aber auch womit der Dienst noch seine Probleme hat: <img alt="Feedburner_Twitsample" src="https://lioman.de/images/Feedburner_Twitsample.png"></p> <p>Kommt ein Umlaut im Tag vor (wie bei bücher) ist laut Vorschau nach dem b Schluss mit dem Hashtag. Vielleicht macht Twitter das dann anders - wenn nicht müssen die Entwickler noch ein bisschen&nbsp;Nachlegen</p> <p>gefunden bei <a href="http://www.googlewatchblog.de/2009/12/14/google-integriert-twitter-in-feedburner/">googlewatchblog</a></p>liomanTue, 15 Dec 2009 09:27:00 +0100tag:lioman.de,2009-12-15:/2009/12/feedburner-twittert/digitalblogfeedfeedburnergoo.glgoogletesttwitterurl-shortenerInternetseite richtig umziehenhttps://lioman.de/2009/11/internetseite-richtig-umziehen/<p>Vor einiger Zeit habe ich mit diesem Blog die Domain gewechselt. Ich fand lioman.de einfach passender als blog.familie-kirchgaessner.de, schon einfach weil die alte Domain einfach zu lange war. Doch leider sind damit auch weniger Leser hier gelandet. Warum? - Ich bin falsch&nbsp;umgezogen.</p> <p>Ich habe hier wohl nicht viele regelmäßige Leser. Die Nutzer kommen doch eher per Suchmaschine, Blogverzeichnis oder ähnliche Internetdienste auf meine Seite. Ich bin also darauf angewiesen, dass Suchmaschinen alle Themen ordentlich indexieren und dann publizieren. Nun habe ich folgenden Fehler gemacht. Ich habe die neue Domain aufgeschaltet und die alte einfach so gelassen. Das führt dazu, dass alles bleibt wie bisher. Die Crawler durchforsten die alte Domain und Backlinks werden dieser oder der neuen zugeordnet aber nicht als zueinander zugehörig gesehen. Im Gegenteil es gibt nun plötzlich zwei Seiten mit tupfengleichem Inhalt, Das erkennen die modernen Suchalgorythmen und schmeißen den bösen Kopierer (neue Domain) raus bzw. schieben die Ergebnisse im Ranking nach&nbsp;unten.</p> <p>Die Lösung für dieses Problem ist eigentlich ganz einfach: Der Error-Code&nbsp;301.</p> <p>Die Übersetzung für diesen Code ist: Moved Permanently. Es ist also nicht nur eine einfache Umleitung, sondern gleich auch eine Übermittlung der neuen Adresse. Der Vorteil dabei ist, dass ein Mensch die neue Seite sieht und auch alle Artikel erreichen kann. Jeder Robot bekommt aber alle Informationen, die ich ihm mitgeben möchte: &#8220;<em>Suche hier nicht mehr sondern ersetze in deinem Index alle alten Einträge durch die neue Adresse</em>&#8221;</p> <p>Das ganze kann man unterschiedlich umsetzen. Eine Möglichkeit wäre per <em>.htacces</em> einfacher jedoch geht es mit folgendem&nbsp; <span class="caps">PHP</span>-Script:</p> <pre class="code php literal-block"> <span class="cp">&lt;?php</span> <span class="nb">header</span><span class="p">(</span><span class="s2">&quot;HTTP/1.1 301 Moved Permanently&quot;</span><span class="p">);</span> <span class="nb">header</span><span class="p">(</span><span class="s2">&quot;Location: http://www.NEUEADRESSE.TLD&quot;</span><span class="p">);</span> <span class="nb">header</span><span class="p">(</span><span class="s2">&quot;Connection: close&quot;</span><span class="p">);</span><span class="cp">?&gt;</span><span class="x">;</span> </pre> <p><strong><span class="caps">WICHTIG</span></strong>: Umleitung&nbsp;prüfen</p> <p>Man muss sein kleines Script umbedingt mit einem Webtool wie <a class="reference external" href="http://web-sniffer.net/">web-sniffer.net</a> prüfen. Ich hatte einen Copy + Paste Fehler und so sieht es bei diversen Suchmaschinen so&nbsp;aus:</p> <p><a class="reference external image-reference" href="https://lioman.de/images/blog_google_umleitungsfehler.png"><img alt="blog_google_umleitungsfehler" class="aligncenter size-full" src="https://lioman.de/images/blog_google_umleitungsfehler.png" style="width: 552px; height: 75px;" /></a>Genau das wollte ich ja verhindern. Eine Unerreichbarkeit meiner alten&nbsp;Adresse</p> LiomanMon, 23 Nov 2009 15:38:00 +0100tag:lioman.de,2009-11-23:/2009/11/internetseite-richtig-umziehen/Digital301BlogDomainphp headerrobotSEOtippUmziehenOpenID-Ersatzhttps://lioman.de/2009/10/openid-ersatz/<p><strong>*Das OpenID-Plugin hat große Probleme gemacht und deswegen habe ich es ausgeschaltet (siehe `hier &lt;/plugin-problem-openid&gt;`__). Nun gibt es Ersatz*</strong>.</p> <p>Man muss im Netz einfach viel zu viele Formulare ausfüllen und sich ständig irgendwo neu registrieren. Hier setzt <a class="reference external" href="http://www.openid.net">OpenID</a> an und stellt ein Protokoll bereit, dass es ermöglicht sich mit den Zugangsdaten eines OpenID-Providers bei einer anderen Seite einzuloggen. Diese Idee finde ich genial und so wollte ich auch dies hier&nbsp;realisieren.</p> <p>Doch nach anfänglichen Erfolgen, machte das <a class="reference external" href="http://wordpress.org/extend/plugins/openid/">OpenID-Plugin</a> so Probleme, dass ich es abschalten musste. Statt der bisherigen lokalen Lösung habe ich mich nun für eine Externe entschieden. Dazu habe ich das Plugin: <a class="reference external" href="http://wordpress.org/extend/plugins/rpx/">JanRain <span class="caps">RPX</span></a>&nbsp;installiert.</p> <p>Das ging&nbsp;so:</p> <ul class="simple"> <li>Downloaden und in den Ordner Blogverzeichnis/wp-content/plugins/&nbsp;hochkopieren</li> <li>Plugin&nbsp;aktivieren</li> <li>Auf der Seite <a class="reference external" href="https://rpxnow.com/">rpxnow.com</a> einen Accounnt&nbsp;einrichten</li> <li>Dann dort eine &#8220;Application&#8221; (Basic ist kostenlos und völlig ausreichend)&nbsp;einrichten</li> <li>Noch den <span class="caps">API</span>-Key in den <span class="caps">RPX</span>-Plugin-Einstellungen&nbsp;eintragen.</li> </ul> <p>Im Grunde sollte es nun schon funktionieren. Es empfiehlt sich jedoch noch die angezeigten Provider einzustellen. Dazu geht man auf <em><span class="caps">RPX</span>&gt;MyAccount&gt;Dein Blog&gt; Configure Providers</em> und schiebt bis zu sechs verschiedene Dienste von links nach rechts (Für Facebook, Twitter, Yahoo, Myspace und Windows Live muss man eine Anwendung kreieren - dies wird jedoch ausreichend&nbsp;erklärt).</p> <p>Nun kann man hier mit seinem Facebook-, Twitter-, Google-, Yahoo-, <span class="caps">AOL</span>-Zugang oder jeder OpenID kommentieren und sich&nbsp;einloggen.</p> <p>Damit ich mich bei anderen Seiten mit meiner <span class="caps">URL</span> einloggen kann setze ich auf den Dienst myOpenID (der zu <span class="caps">RPX</span> gehört) und das dazugehörige&nbsp;Plugin.</p> LiomanThu, 01 Oct 2009 14:32:00 +0200tag:lioman.de,2009-10-01:/2009/10/openid-ersatz/DigitalBlogFacebookOpenIDPlugintwitterUpdate auf 2.8.3https://lioman.de/2009/08/update-auf-2-8-3/<p><strong>Bei Wordpress 2.8.2 und älter ist eine Sicherheitslücke aufgetaucht. Ein Update behebt das&nbsp;Problem.</strong></p> <p>Änderte man als Abonnent nur ein wenig die <span class="caps">URL</span> konnte man sonst geschützte Einstellungen&nbsp;ändern.</p> <p>Vor einiger Zeit hatte ich Probleme mit Spamanmeldungen. Jeden Tag haben sich mehrere neue Benutzer angemeldet. Die E-Mailadressen (meist <a class="reference external" href="mailto:irgendwas&#64;spamserver.ru">irgendwas&#64;spamserver.ru</a>) habe ich mit Spamverzeichnissen verglichen und bei fast allen bestätigte sich die Vermutung). Ich habe daraufhin alle Benutzer gelöscht und komplett auf <a class="reference external" href="http://de.wikipedia.org/wiki/Openid">OpenID</a> umgestellt. Seither habe ich keine Probleme&nbsp;mehr.</p> <p>Es empfiehlt sich also ein Update. Die Version 2.8.3&nbsp; behebt das Problem. In deutsch bekommt man sie wie immer auf <a class="reference external" href="http://blog.wordpress-deutschland.org/2009/08/03/wordpress-2-8-3-inkl-de-edition-und-upgradepaket-veroeffentlicht.html/trackback">www.wordpress-deutschland.org</a>.</p> LiomanWed, 05 Aug 2009 10:33:00 +0200tag:lioman.de,2009-08-05:/2009/08/update-auf-2-8-3/Allgemein2.82.8.3BlogOpenIDSicherheitslückeupdateWordpressLiomans Blog unter neuer Adressehttps://lioman.de/2009/07/liomans-blog-unter-neuer-adresse/<p>Nach einem Jahr bloggen habe ich beschlossen dieses kleine Experiment weiterzuführen. Es ist ein echtes Hobby geworden. Man kann so viel in und um ein Blog tun. Bisher war die <span class="caps">URL</span> (www.blog.familie-kirchgaessner.de) ziemlich lang und hatte nichts mit dem Titel: Liomans Blog zu tun. Um es allen ein bisschen einfacher zu machen und um im <span class="caps">URL</span>-Registrierungs-Wettrennen das Nachsehen zu haben, ließ ich die Domain <strong>http://www.lioman.de</strong> auf mich einschreiben :hurra:&nbsp;.</p> <p>Das Blog ist jetzt auch ab sofort darunter erreichbar. Am Besten ihr ändert die Adresse in eurem Feedreader, Blogroll, Linkliste usw. Es tut mir Leid, dass ich ein bisschen Arbeit machen&nbsp;muss.</p> <p>Die <span class="caps">URL</span> sollte auch schon in allen Blogverzeichnissen geändert sein oder in naher Zukunft geändert werden. Nun fängt einiges an Arbeit auch erneut an. :google:&nbsp; kennt schon den neuen Link, aber es gibt ja noch andere Suchmaschinen. Das werde ich aber erst nach und nach&nbsp;erledigen.</p> <p>Kommentare sind wie immer willkommen. Ich freue mich vor allen Dingen über Verbesserungsvorschläge. Fehler entdeckt? einfach&nbsp;melden</p> LiomanTue, 14 Jul 2009 07:34:00 +0200tag:lioman.de,2009-07-14:/2009/07/liomans-blog-unter-neuer-adresse/AllgemeinAdresseBlogLiomanumzugURLWordtube Playlist-Verwaltung:Problem und Lösunghttps://lioman.de/2009/07/wordtube-playlist-verwaltung/<p><em>Das Plugin Wordtube macht seit dem Update auf <span class="caps">WP</span> 2.8 Probleme.</em> <em>Man kann im Verwaltungsdialog keine Playlisten zuordnen. Hier ist die&nbsp;Lösung.</em></p> <p><a class="reference external" href="#English">go to&nbsp;English-Howto</a></p> <p>Um Videos hier sinnvoll einzubinden nutze ich das Plugin <a class="reference external" href="http://wordpress.org/extend/plugins/wordtube/">Wordtube</a> von <a class="reference external" href="http://alexrabe.boelinger.com/wordpress-plugins/wordtube/">Alex Rabe</a>. Seit dem Wordpress-Update auf die Version 2.8 treten jedoch Probleme auf. Im Video-Verwaltungs-Dialog war in einer Art Sidebar der Dialog um das Video einer bestimmten Playlist zuzuordnen. Dieser Dialog fehlte nun und das Update auf 2.8.1 hatte keine Änderung gebracht. Komischerweise steht die Dialogbox im Quelltext, wenn man sich diesen Anzeigen lässt.&nbsp;:(</p> <p>Da ich nicht auf das Update warten wollte (Ohne Playlist ist es nicht Nutzbar) habe ich den Plugincode verändert und die Auswahl aus der Sidbar gehohlt und unten direkt angefügt. Hier ist die verbesserte <tt class="docutils literal">manage.php</tt> (verpackt) zum Download. Einfach in /<span class="caps">BLOGVERZEICHNIS</span>/wp-content/plugins/wordtube/admin kopieren, dann sollte alles wieder&nbsp;gehen.</p> <p>Description in English: if you have problems with the playlistdialog in wordtube (invisible) copy the <tt class="docutils literal">manage.php</tt> (packed) in /wp-directory/wp-content/plugins/wordtube/admin over the existing version. This will fix the problem and the settings is now under the managing&nbsp;section.</p> LiomanMon, 13 Jul 2009 10:06:00 +0200tag:lioman.de,2009-07-13:/2009/07/wordtube-playlist-verwaltung/Digital2.82.8.1BlogPluginWordpresswordtubeUpdate auf 2.8.1https://lioman.de/2009/07/update-auf-2-8-1/<p>Gestern Abend wurde das Sicherheitrelease für Wordpress veröffentlicht. 2.8 hatte leider einige Probleme gemacht. So gingen bei manchen die Pings nicht richtig oder alles brach wegen zu hohem Speicherverbrauch zusammen. Zudem kommen noch wichtige Sicherheitsfeatures. Aus diesem Grund hatte ich hier auch die Beta2 schon am Laufen. Also Update dringend geboten. Version 2.8.1 gibt es unter: <a class="reference external" href="http://blog.wordpress-deutschland.org/2009/07/09/wordpress-281-inkl-sprachdatei-de-edition.html">Wordpress-Deutschland</a></p> LiomanFri, 10 Jul 2009 06:58:00 +0200tag:lioman.de,2009-07-10:/2009/07/update-auf-2-8-1/Allgemein2.82.8.1BlogSicherheitupdateWordpressTwitter mit Technorati verbindenhttps://lioman.de/2009/06/twitter-technorati-verbinden/<div class="line-block"> <div class="line"><strong>Twitter</strong> ist ein <a class="reference external" href="https://de.wikipedia.org/wiki/Soziales_Netzwerk_%28Internet%29">soziales Netzwerk</a> und ein auf einer Website oder mobil per Mobiltelefon geführtes und meist öffentlich einsehbares Tagebuch im Internet (<a class="reference external" href="http://de.wikipedia.org/wiki/Mikro-Blogging">Mikro-Blog</a>).</div> </div> <p>So die kurze Definition bei Wikipedia. und <a class="reference external" href="http://technorati.com">Technorati</a>?</p> <blockquote> <strong>Technorati</strong> ist eine der größten Echtzeit-Internet-<a class="reference external" href="http://de.wikipedia.org/wiki/Suchmaschine">Suchmaschinen</a> speziell für <a class="reference external" href="http://de.wikipedia.org/wiki/Weblog">Weblogs</a>. Mitte Februar 2008 waren etwa 112,8 Millionen Weblogs und 2 Milliarden <a class="reference external" href="http://de.wikipedia.org/wiki/Hyperlink">Links</a> <a class="reference external" href="http://de.wikipedia.org/wiki/Indexierung">indexiert</a>. Täglich kommen nach eigenen Angaben etwa 70.000 neue Blogs hinzu.</blockquote> <p>Wenn man bei Technorati also sein Blog eintragen kann, dann müsste es doch mit einem Mikro-Blog genauso gehen. Unter Claim a new Blog kann man das tun, sofern man angemeldet ist. Dazu gibt man die Twitter-<span class="caps">URL</span> ein: <a class="reference external" href="http://twitter.com/Nutzername">http://twitter.com/Nutzername</a> . Der generierte Code muss dann nur noch auf Twitter veröffentlicht&nbsp;werden.</p> <p>Bei mir hat es ein wenig gedauert und ich musste mehrere Versuche unternehmen, da Technorati immer wieder Serverprobleme&nbsp;hat.</p> LiomanThu, 25 Jun 2009 18:29:00 +0200tag:lioman.de,2009-06-25:/2009/06/twitter-technorati-verbinden/DigitalBlogclaimInterInternetTechnoratitwitterverbindenGeburtstag!!!https://lioman.de/2009/06/geburtstag/<p>Wow, dieses Blog hat heute Geburtstag :torte: :hurra: . Am 20.06.2008 startete ich mit dem sensationellen Artikel <a class="reference external" href="https://lioman.de/2008/06/aufbau/">Aufbau</a>. Tja ich bin zwar schon am Bloggen, aber für dieses Blog bin ich die ganze Zei am experimentieren. Neue Versionen einspielen, das Theme anpassen, Plugins installieren und unnützes runterzuschmeißen. Es macht Spaß und ich habe das Gefühl, dass es auch ein paar Leser*innen&nbsp;gibt.</p> <p>Ach ja, Geschenke sind willkommen&nbsp;:D</p> LiomanSat, 20 Jun 2009 18:53:00 +0200tag:lioman.de,2009-06-20:/2009/06/geburtstag/AllgemeinBlogGeburtstagJahrestagTestartikel lohnt sich nicht zu lesenhttps://lioman.de/2009/06/testartikel-lohnt-sich-nicht-zu-lesen/<p>Dies ist nur ein Artikel für mich, um etwas zu&nbsp;testen.</p> <p>:-)</p> LiomanThu, 11 Jun 2009 22:00:00 +0200tag:lioman.de,2009-06-11:/2009/06/testartikel-lohnt-sich-nicht-zu-lesen/AllgemeinBlogTestUpdate auf 2.8 erfolgthttps://lioman.de/2009/06/update-auf-2-8-erfolgt/<p>So jetzt ist die deutsche Version 2.8 von Wordpress draußen und ich hab sie gleich mal eingespielt. Hier läuft jetzt also wieder die allerneuste Version und ich hoffe es hat alles so geklappt, wie es&nbsp;soll.</p> <p>Außerdem habe ich einige Plugins deaktiviert, die ich gar nicht mehr benötigt habe. Dazu aber später&nbsp;mehr.</p> <p><em>Nachtrag: Der erste Versuch hat schonmal nicht funktioniert. Irgendein-Plugin hat&nbsp;gestört</em></p> <p><em>Nachtrag 2: Es ist das Custom smilies Plugin. Schade die Smilies gehen also erstmal&nbsp;nicht</em></p> LiomanThu, 11 Jun 2009 18:07:00 +0200tag:lioman.de,2009-06-11:/2009/06/update-auf-2-8-erfolgt/Allgemein2.8BlogupdateWordpressUpdate ist da - Endlichhttps://lioman.de/2009/06/update-ist-da-endlich/<p>Es scheint so, als haben es die fleißigen Programmierer geschafft die Version 2.8 von Wordpress zu&nbsp;veröffentlichen.</p> <p><a class="reference external" href="http://blog.wordpress-deutschland.org/2009/06/11/wordpress-28-veroeffentlicht.html">Wordpress-Deutschland.org</a> hat darüber berichtet und angekündigt, dass sie bald die übersetzte Version online&nbsp;stellen.</p> <p>Ich glaube ich werde sie dann möglichst schnell&nbsp;einspielen.</p> <p>Mein neues Theme sollte eigentlichh damit&nbsp;nklarkommen.</p> LiomanThu, 11 Jun 2009 09:13:00 +0200tag:lioman.de,2009-06-11:/2009/06/update-ist-da-endlich/Digital2.8BlogupdateWordpressDer Spuk ist vorüberhttps://lioman.de/2009/06/der-spuk-ist-voruber/<p>Kaum ist der Monat Mai vorbei, fällt die Akismet-Spamstatistik in den&nbsp;Keller.</p> <p>zur Verdeutlichung ein Bild: <img alt="spammonatmai" class="alignright size-full" src="https://lioman.de/images/spammonatmai.png" style="width: 283px; height: 208px;" /></p> <p>Mir ist es absolut recht, dass das vorüber ist&nbsp;:freu:</p> <p>Ich Frage mich nur was das sollte&nbsp;:question:</p> <p>Warum war das Spamaufkommen genau im Mai so hoch und fällt danach wieder auf Normalmaß&nbsp;zurück?</p> <p>Vielleicht hat ja irgendjemand antworten. Hier gibt es dank Akismet aber kein <span class="caps">SPAM</span></p> LiomanTue, 09 Jun 2009 16:11:00 +0200tag:lioman.de,2009-06-09:/2009/06/der-spuk-ist-voruber/DigitalakismetBlogFrageMaiSpamUmbau auf diesem Bloghttps://lioman.de/2009/06/umbau-auf-diesem-blog/<p>Da ich schon mal am Wählen bin. Erwähle ich mir ein neues Theme.&nbsp;Warum?</p> <p>Also einmal untersützt das alte keine erweiterte Diskussionen, außerdem ist&nbsp; es ein älteres und ich möchte eines, dass auch an die neuen Entwicklungen nach 2.7 angebunden ist. Außerdem wünsche ich mir ein bisschen mehr Konfigurierbarkeit ohne im Code rumwerkeln zu&nbsp;müssen.</p> <p>Es kann also sein, dass&nbsp; es hier in nächster Zeit optisch ein wenig drunter und drüber&nbsp;geht.</p> LiomanSun, 07 Jun 2009 20:17:00 +0200tag:lioman.de,2009-06-07:/2009/06/umbau-auf-diesem-blog/AllgemeinBlogThemeWordpressErweiterte Kommentarfunktion eingeschaltethttps://lioman.de/2009/06/erweiterte-kommentarfunktion-eingeschaltet/<p>Habe heute die erweiterte Kommentarfunktion entdeckt und gleich mal eingeschaltet. Nun ist es möglich auf Kommentare direkt zu&nbsp;antworten.</p> <p>So sind Diskussionen eher möglich und falls mal viele Kommentare kommen sollten, muss man nicht ewig&nbsp;scrollen.</p> <p>Ein Beispiel sollte es gleich mal unten&nbsp;geben.</p> LiomanSun, 07 Jun 2009 16:23:00 +0200tag:lioman.de,2009-06-07:/2009/06/erweiterte-kommentarfunktion-eingeschaltet/AllgemeinBlogKommentareWordpressWP-EinstellungenWP 2.8 Neuer Terminhttps://lioman.de/2009/06/wp-28-neuer-termin/<p>Laut <a class="reference external" href="http://wordpress.org/development/">Wordpress.org-Blog</a> gibt es einen neuen Termin für das Update auf <span class="caps">WP</span> 2.8. Schade, dass es so lange gedauert hat, bis man etwas gehört hat. Aber jetzt scheint es so, dass der Termin am 10.Juni eingehalten werden kann. Schaut man in den <a class="reference external" href="http://core.trac.wordpress.org/">Wordpress Trac</a> so steht die Entwicklung in der Roadmap auf 99% und nur noch 10 Tickets sind offen. Ich hoffe die Übersetzung ist dann dementsprechend zeitnah von <a class="reference external" href="http://wordpress-deutschland.org/">wordpress-deutschland.org</a>&nbsp;herunterladbar.</p> LiomanThu, 04 Jun 2009 14:15:00 +0200tag:lioman.de,2009-06-04:/2009/06/wp-28-neuer-termin/Digital2.8BlogRoadmapupdateWordpressWP-Update dauert längerhttps://lioman.de/2009/06/wp-update-dauert-langer/<p>Schade ich wollte heute mal die neue Version von Wordpress einspielen. Nach dem der Releasetermin von Version 2.8 auf Ende Mai verschoben wurde, muss man sich wohl nocheinmal gedulden. In der <a class="reference external" href="http://core.trac.wordpress.org/roadmap">Roadmap</a> stehen die gelösten Tickets immer noch auf 93%. Aber es ist immer besser, wenn sich die Entwickler genug Zeit nehmen und dafür dann eine ausgereifte Software auf den Server stellen. Eine genaue Liste der Änderungen kann man <a class="reference external" href="http://blog.wordpress-deutschland.org/2009/05/29/aenderungen-und-neuerungen-in-wordpress-28.html">hier</a> auf Deutsch&nbsp;einsehen</p> LiomanMon, 01 Jun 2009 12:41:00 +0200tag:lioman.de,2009-06-01:/2009/06/wp-update-dauert-langer/Allgemein2.8BlogReleaseRoadmapSoftwareupdateWordpressStatistik Plugin Test 4https://lioman.de/2009/05/statistik-plugin-test-4/<p>So das letzte ist aus der Liste ausgeschieden. SlimStat muss trotz einiger toller Funktionen, die die anderen nicht hatte gehen und CyStats trotz nötiger Verbesserungen&nbsp;geblieben.</p> <p>Zuerst zu den angesprochenen zusätzlichen Funktionen: Man kann ein paar &#8220;Erweiterungen&#8221; zusätzliche installieren (Also Plugins fürs Plugin). Unter anderem eine GoogleMap, die anzeigt woher die Besucher kamen. Außerdem gab es eine Erweiterung, die zeigte, wie sich die Besucher auf der Seite Bewegten. Alles ganz nett. Doch mir gefiel die Menüführung, die Grafiken und die mangelnde Unterscheidung zwischen Bots und&nbsp;Benutzern.</p> <p>Ich habe mich also für Cystats entschieden. Deswegen, werde ich es demnächst in einem gesonderten Blogartikel beschreiben. Außerdem werde ich die kleinen Verbesserungen, die ich daran vorgenommen habe&nbsp;erklären.</p> LiomanFri, 15 May 2009 12:20:00 +0200tag:lioman.de,2009-05-15:/2009/05/statistik-plugin-test-4/AllgemeinBlogCyStatsPluginSlimStatStatistikTestWordpressUmstellung auf Feedburnerhttps://lioman.de/2009/05/umstellung-auf-feedburner/<p>Habe hier das Feed mal auf <a class="reference external" href="http://feedburner.google.com">Feedburner</a> umgestellt. Hauptsächlich wegen der zusätzlichen Statistiken, die man dadurch geliefert&nbsp;bekommt.</p> <p>Der Umstieg ist relativ Simpel. Man braucht ein Google-Konto und meldet dann sein Feed an. Jetzt muss man nur noch das Feed von seiner Wordpressinstallation umleiten. Das geht mit dem Plugin von Steve Smith (download). So ab jetzt muss man nur noch warten, bis die Ersten das Feed&nbsp;aufrufen.</p> <p>Wie gesagt finde ich besonderst die Statistikfunktionen interessant. Nun möchte ich natürlich diese auch direkt von meinem Wordpress-Dashboard aus betrachten können. Dazu benötigt man wiederum ein Plugin. Installationsbeschreibung und Download gibt es <a class="reference external" href="http://www.speedbreeze.com/feed-stats/product/installation">hier</a>. Damit es funktioniert muss man bei seinem Feed die Awareness <span class="caps">API</span> einschalten. Danach kann man unter <em>Übersicht &gt; FeedStats</em> die aktuellen Statistiken abrufen. Falls am Anfang ersteinmal eine Fehlermeldung kommt so ist das normal. Es dauert ein bisschen bis Feedburner die Statistiken zur Verfügung&nbsp;stellt.</p> <p>Nachtrag: Man kann auch Google-Adsense im Feed einblenden lassen. Ob das Sinn macht sei&nbsp;dahingestellt.</p> LiomanSun, 10 May 2009 11:45:00 +0200tag:lioman.de,2009-05-10:/2009/05/umstellung-auf-feedburner/DigitalBlogFeedFeedburnerPluginStatistikWordpressSpammonat Maihttps://lioman.de/2009/05/spammonat-mai/<p>Um den Monatswechsel kam es in diesem Blog zu gehäuftem Spamaufkommen. Bis heute waren es knapp 80 Spamkommentare die diesen Monat vom Antispamplugin <a class="reference external" href="http://www.akismet.com">Akismet</a> geblockt wurden. Das ist insofern bemerkenswert, weil es im kompletten Vormonat gerade mal 51 und im März 86 Werbekommentare waren. Vielleicht lag es am langen Maiwochenende und auch nebenberufliche Müllproduzenten hatten Zeit um mein Blog mit :datenschmutz: zu bombardieren. Auch verwunderlich ist der bevorzugte Artikel der Spamer: <a class="reference external" href="/umweltschutz-geht-durch-den-magen">Umweltschutz geht durch den Magen</a>. Der geneigte Leser fragt sich vielleicht warum dies ungewöhnlich sein soll. Einmal ist es ein älterer Artikel und so steht er nicht auf der ersten Seite. Zum Anderen ist es ja ein durchaus grünes Thema und wie die McAfee-Studie (Download hier (<span class="caps">PDF</span>)) zeigte ist Spam ein Klimakiller. Eine deutsche Zusammenfassung der Studie kann man in <a class="reference external" href="http://dobersch.com/wie-schaedlich-ist-spam-fuer-die-umwelt">Gabriels Blog</a>&nbsp;lesen.</p> <p>Was mich jetzt noch interessieren würde, ob andere Blogger einen ähnlichen Anstieg des Spamaufkommens bemerkt haben oder ob dies nur bei mir so&nbsp;ist.</p> LiomanTue, 05 May 2009 14:41:00 +0200tag:lioman.de,2009-05-05:/2009/05/spammonat-mai/DigitalakismetBlogSpamUmweltschutzWordpressStatistik-Plugintest 3https://lioman.de/2009/04/statistikplugintest-3/<p>Ein weiteres Plugin muss nun meine Testgruppe&nbsp;verlassen.</p> <p>Semmelstatz fliegt leider&nbsp;raus.</p> <p>Es ist das perfekte Plugin um mal kurz nen überblick zu bekommen (Top Ten, wer ist gerade online usw.) aber um genau zu sehen was sich so auf seinem Blog tummelt (Bots) reicht es nicht. Da aber die beiden letzten auch solche übersichten haben bleiben SlimStat und CyStats im&nbsp;Rennen.</p> LiomanMon, 27 Apr 2009 19:03:00 +0200tag:lioman.de,2009-04-27:/2009/04/statistikplugintest-3/DigitalBlogPluginStatistikTestWordpressStatistik-Plugin Test 2https://lioman.de/2009/04/statistikplugin-test-2/<div class="line-block"> <div class="line">So ich habe mich entschieden, das ganze im Ausschlussverfahren zu machen.</div> <div class="line">Ich werfe nach und nach ein Plugin raus und am Ende bleibt <strong>das</strong> Plugin übrig.</div> </div> <p>Zum Schluss soll dann aber noch mal eine Zusammenfassung&nbsp;erscheinen.</p> <p>Hier das erste, das rausfliegt.&nbsp;:-(</p> <p>Das offizielle <a class="reference external" href="http://wordpress.org/extend/plugins/stats/">Wordpress.com-Plugin</a>.</p> <p><strong>Warum denn dass</strong>?</p> <p>Ich finde es ganz einfach nicht&nbsp;praktikabel.</p> <p>Da die Statistiken auf dem Wordpress.com-Server liegen, muss man sich immer mit seinem Passwort einloggen. Das nervt ganz einfach. Dazu kommt, dass ich mit den Statistiken nicht ganz zufrieden bin. Ich sehe nicht welche Bots ankommen und das ganze ist etwas unübersichtlich. Man muss sich zu allen möglichen Details erst&nbsp;durchklicken.</p> <p>Und das letzte Manko ist die Konfigurierbarkeit. Man kann z.B. keine <span class="caps">IP</span> aus der Statistik&nbsp;ausnehmen.</p> <p>Also <strong>weg</strong>&nbsp;damit.</p> LiomanWed, 22 Apr 2009 11:43:00 +0200tag:lioman.de,2009-04-22:/2009/04/statistikplugin-test-2/AllgemeinBlogPluginStatistikTestWordpressBlog-Statistik-Plugin-Testhttps://lioman.de/2009/04/blog-statistik-plugin-test/<div class="line-block"> <div class="line">Bisher hatte ich das StatPress-Reloaded-Plugin im Einsatz.</div> <div class="line">Aber irgendwie ist es mir zu groß und schwerfällig, außerdem habe ich Updateprobleme.</div> <div class="line">Also teste ich jetzt ein paar andere.</div> <div class="line">1. das offizielle wordpress.com Plugin</div> <div class="line">2. Semmelstatz</div> <div class="line">3. ShortStat</div> </div> <p>4.SlimStat</p> <p>Welches ich am Besten finde schreibe ich wenn der Test abgeschlossen&nbsp;ist.</p> <p><strong>Nachtrag:</strong></p> <p><em>ShortStat schließe ich aus, da SlimStat darauf aufbaut und diese&nbsp;verbessert.</em></p> <p><em>Dafür füge ich CyStats hinzu. Nach dem ich diesen Artikel abgeschickt habe lösche ich alle Statistiken, um alle vergleichen zu&nbsp;können.</em></p> LiomanFri, 03 Apr 2009 09:21:00 +0200tag:lioman.de,2009-04-03:/2009/04/blog-statistik-plugin-test/DigitalBlogPluginTestWordpressbald gehts weiter mit dem Bloggenhttps://lioman.de/2008/12/bald-gehts-weiter-mit-dem-bloggen/<div class="line-block"> <div class="line">Da ich mein Blog nicht ganz verweisen lassen möchte, schreibe ich jetzt schnell eine Nachricht:</div> <div class="line">Die Festplatte ist wirklich hinüber. Ein Teil ist einfach kaputt und so ist die ganze Platte nicht mehr zu nutzen.</div> <div class="line">Die defekte Sektion lag dummerweise genau dort, wo sich die wichtigsten Daten befanden :-( .</div> <div class="line">Ich habe jedoch die Meisten wieder bekommen. Wie man das macht, schreibe ich bald hier.</div> <div class="line">Warum nicht gleich?</div> <div class="line">Na ja, <strong>Weihnachten</strong> steht vor der Tür und da muss noch einiges gemacht werden.</div> </div> LiomanFri, 19 Dec 2008 17:49:00 +0100tag:lioman.de,2008-12-19:/2008/12/bald-gehts-weiter-mit-dem-bloggen/AllgemeinBlogfestplatteUpdate auf 2.7https://lioman.de/2008/12/update-auf-27/<p>So ich hab gleich mal auf die neue Version <strong>2.7</strong> installiert. Die interne Updatefunktion hat wunderbar funktioniert. Das ist übrigens die Funktion, die ich neben dem Pluginmanager am meristen&nbsp;schätze.</p> LiomanFri, 12 Dec 2008 18:07:00 +0100tag:lioman.de,2008-12-12:/2008/12/update-auf-27/AllgemeinBlogupdateWordpressWerbung im Bloghttps://lioman.de/2008/12/werbung-im-blog/<div class="line-block"> <div class="line">Ich habe mich entschlossen nun hier Werbung zu schalten.</div> <div class="line">Aber ich will es nicht übertreiben, deswegen habe ich mich für GoogleAdsense entschieden. Warum? Ich möchte nicht überalle blinkende, sich öffnende, tönende den Leser nervende Banner, Skripte oder ähnliches.</div> </div> <p>Ich möchte nur kleine Felder, die auch als Werbung erkennbar sind und (wenn möglich) auch noch irgendwie zum Thema passen. Ich denke das lässt sich mit GoogleAdsense ganz gut&nbsp;realisieren.</p> <p>Dieses Blog soll <strong>keine</strong> Geldmaschine werden, es soll nur ein kleiner Teil der Kosten :cash: wieder&nbsp;reinkommt.</p> LiomanThu, 04 Dec 2008 17:13:00 +0100tag:lioman.de,2008-12-04:/2008/12/werbung-im-blog/AllgemeinAdsenseBlogGeldGoogleWerbungSoziale Werbunghttps://lioman.de/2008/11/soziale-werbung/<p>Ich finde jedes Blog sollte auch eine soziale Komponente&nbsp;haben.</p> <p>Deswegen habe ich mit Hilfe des Plugins <a class="reference external" href="http://wordpress.org/extend/plugins/adrotate/">AdRotate</a> Werbung für Soziale Projekte und Organisationen&nbsp;geschaltet.</p> <p><strong>Ich habe davon keinen finanziellen Vorteil</strong>!!!</p> <p>Möchte aber Organisationen wie Greenpeace, <span class="caps">WWF</span>, Adveniat, Amnesty usw.&nbsp;unterstützen.</p> LiomanFri, 21 Nov 2008 19:52:00 +0100tag:lioman.de,2008-11-21:/2008/11/soziale-werbung/Politik und GesellschaftAmnestyBlogGreenpeaceSozialUmweltWerbungwwfUmzug geht weiterhttps://lioman.de/2008/11/umzug-geht-weiter/<p>So ein Umzug, braucht doch Zeit. Nachdem ich die technischen Probleme jetzt im Griff habe, müssen jetzt noch die letzten Kartons ausgepackt&nbsp;werden.</p> <p>Bilder müssen hochgeladen werden, alte Artikel müssen überarbeitet werden und Links kontrolliert&nbsp;werden.</p> <p>Aber das ist wohl normal. Wenn man von einer Wohnung in eine andere zieht dauert es auch bis man die letzten Kartons in die Regale&nbsp;verstaut.</p> <p>Aber ich denke bald kann ich hier neue Artikel&nbsp;posten.</p> <p>Es gibt ja genug zu berichten und kommentieren z.B. Der <a class="reference external" href="http://www.sueddeutsche.de/,tt5m1/computer/881/333735/text/">Rechtsstreit</a> um Wikipedia bzw. Lutz Heinemann oder die öffentliche kollektive Hirnamputation auf Brosieheben von UrinIna&nbsp;:-P</p> <p><span class="caps">PS</span>: Der Support von hostloco ist sensationell&nbsp;gut.</p> LiomanSun, 16 Nov 2008 20:24:00 +0100tag:lioman.de,2008-11-16:/2008/11/umzug-geht-weiter/AllgemeinBlogserverumzugUmzughttps://lioman.de/2008/11/umzug/<p>Habe das Blog auf einen gescheiten Server&nbsp;geschoben.</p> <p>Kilu war ja ganz net, aber ständig gab es Probleme mit dem zugewiesenen&nbsp;Arbeitsspeicher.</p> <p>Leider funktioniert hier jetzt auch noch nicht alles, aber ich bin optimistisch, dass ich es gemeinsam mit dem Support von Hostloco hinbekomme.&nbsp;:-)</p> LiomanFri, 14 Nov 2008 10:57:00 +0100tag:lioman.de,2008-11-14:/2008/11/umzug/AllgemeinBlogserverumzugNeuste Version von Wordpresshttps://lioman.de/2008/11/neuste-version-von-wordpress/<div class="line-block"> <div class="line">Heute habe ich mir mal gleich die Beta2 von Worpress 2.7 installiert.</div> <div class="line">Was verändert wurde kann man <a class="reference external" href="http://wordpress.org/development/2008/11/wordpress-27-beta-2/">hier</a> nachlesen.</div> </div> <p>Ich kann nur sagen 2.7 ist <strong>toll</strong></p> <p>Schön aufgeräumt, und ich hab das Gefühl, dass es auch schneller&nbsp;ist.</p> <p>Zudem kommen noch ein paar nette neue Features, wie z.B. ein&nbsp;Pluginmamager</p> LiomanThu, 06 Nov 2008 16:44:00 +0100tag:lioman.de,2008-11-06:/2008/11/neuste-version-von-wordpress/AllgemeinBetaBlogWordpressWordpressupdate (2.6.3) schnell gemachthttps://lioman.de/2008/10/wordpressupdate-263-schnell-gemacht/<p>Der Feedcatcher, der die Nachrichten auf das Wordpress-Dashboard liefert hat in 2.6.2 eine&nbsp;Sicherheitslücke.</p> <p>Wer sich jetzt aber nicht durch die ganze Installation kämpfen möchte kann einfach folgende Dateien&nbsp;ersetzen:</p> <ol class="arabic simple"> <li><a class="reference external" href="http://trac.wordpress.org/export/9310/tags/2.6.3/wp-includes/class-snoopy.php">wp-includes/class-snoopy.php</a></li> <li><a class="reference external" href="http://trac.wordpress.org/export/9310/tags/2.6.3/wp-includes/version.php">wp-includes/version.php</a></li> </ol> <p>Das ist wesentlich bequemer&nbsp;:-)</p> <p><em>Nachricht auf `Wordpress.org &lt;http://wordpress.org/development/2008/10/wordpress-263/&gt;`__ , auf `Wordpress Deutschland &lt;http://blog.wordpress-deutschland.org/2008/10/24/wordpress-263-sicherheitsrelease.html&gt;`__ oder auf `Greensmilies.com &lt;http://www.greensmilies.com/2008/10/24/wordpress-263-ist-da/&gt;`__&nbsp;:schildkroete:</em></p> LiomanFri, 24 Oct 2008 18:33:00 +0200tag:lioman.de,2008-10-24:/2008/10/wordpressupdate-263-schnell-gemacht/AllgemeinBlogdashboardupdateWordpressAchtung Polemik!https://lioman.de/2008/10/achtung-polemik-2/<p>Nach dem ich ein wenig das Blog vernachlässigt habe, möchte ich nun eine neue Kategorie&nbsp;einführen:</p> <p><strong>Achtung Polemik</strong>.</p> <p>Manchmal findet man ein gutes Thema, beobachtet etwas, stößt auf etwas, das komisch und skurril&nbsp;ist.</p> <p>Aber es normal und objektiv zu beschreiben, macht oft keinen Sinn, da es nur aus dem Auge des Betrachters von <strong>einem</strong> Standpunkt aus wirklich etwas&nbsp;hermacht.</p> <p>Es gibt einfach Phänomene über die kann man sich herrlich aufregen, man kann sich in <strong>Rage</strong> schreiben und kann herrlich drüber&nbsp;schimpfen.</p> <p>Sachlichkeit steht dabei <strong>nicht</strong> unbedingt im Vordergrund, die Polemik ist eher mit Übertreibung, Ironie und Sarkasmus&nbsp;gewürzt.</p> <p>Der geneigte Leser fragt vielleicht: <strong>Warum das&nbsp;ganze?</strong></p> <ul class="simple"> <li>Weil es Spaß&nbsp;macht</li> </ul> <p>Es macht Spaß so zu schreiben und es macht Spaß so etwas zu&nbsp;lesen.</p> LiomanSun, 19 Oct 2008 11:08:00 +0200tag:lioman.de,2008-10-19:/2008/10/achtung-polemik-2/AllgemeinAufregerBlogPolemikScheiß Spammer!!!https://lioman.de/2008/08/scheiss-spammer/<p>Sobald in deinem Blog oder Forum Kommentare/ Beiträgevon Personen mit so wohlklingenden Namen wie <strong>Mritpozk</strong>, <strong>Dfrrnqxo</strong> oder <strong>Gyuzmkjm</strong> auftauchen, weißt du der Spam geht mal wieder&nbsp;um.</p> <p>Was dreckige Ratten und fette Tauben für Großstädte sind, sind die Spammer für das&nbsp;Internet.</p> <p>Und um beim Taubenbild zu bleiben: Wenn man nicht aufpasst und Maßnahmen gegen sie ergreift kacken sie mit ihrer ätzenden Scheiße das ganze Blog&nbsp;zu.</p> <p>Es gibt im Grunde zwei Maßnamen gegen Spam. Man kann Kommentare erst einmal blockieren und alle moderieren. Das hat zwar zur Folge, dass man nur gewünschte Kommentare auf seinem Blog findet, aber es verzögert das ganze und eine aktive Diskussion kann dadurch schon ziemlich gestört&nbsp;werden.</p> <p>Also Möglichkeit zwei: Eine Filter-Erweiterung für das&nbsp;Blog.</p> <p>Da sage ich nur: <a class="reference external" href="http://akismet.com/">Akismet</a> ist dein&nbsp;Freund.</p> <p>Diese Erweiterung ist an <a class="reference external" href="http://www.wordpress.com">wordpress.com</a> angegliedert. Das verspricht eine hohe Genauigkeit in der Unterscheidung von Ham und Spam, weil die Erweiterung lernfähig ist und so von den vielen Nutzern&nbsp;profitiert.</p> <p>Bisher funktioniert alles tadellos und ein paar Statistiken kann man <a class="reference external" href="http://akismet.com/stats/">hier</a>&nbsp;einsehen.</p> LiomanFri, 29 Aug 2008 20:59:00 +0200tag:lioman.de,2008-08-29:/2008/08/scheiss-spammer/DigitalAntispamBlogInternetSpamWordpressWordpress 2.6.1 - die neuste Versionhttps://lioman.de/2008/08/wordpress-261-die-neuste-version/<p>Ich habe mich vor kurzem nach einem Kurzurlaub in mein <a class="reference external" href="http://www.lioman.de">**Blog**</a>eingeloggt und gleich Sprang mir die Meldung: <em>&gt;&gt;Update verfügbar&lt;&lt;</em> ins Auge. Die neuste Version kurz nach der größeren Aktualisierung auf 2.6 ist veröffentlicht&nbsp;worden.</p> <p>Auf <a class="reference external" href="http://blog.wordpress-deutschland.org/2008/08/15/aenderungen-in-wordpress-261.html">blog.wordpress-deutschland.org</a> kann man dann auch die Liste der Änderungen auf Deutsch&nbsp;nachlesen.</p> <p>Es ist nichts welbewegendes an Funktionen hinzugekommen, lediglich ein paar Bugs, die wohl übersehen wurden, wurden&nbsp;ausgemerzt.</p> <p>Na ja ich hab gleich mal das Update aufgespielt und das ging wirklich Fix. Solche einfachen Installationsroutinen lobe ich&nbsp;mir.</p> LiomanWed, 20 Aug 2008 13:20:00 +0200tag:lioman.de,2008-08-20:/2008/08/wordpress-261-die-neuste-version/AllgemeinBlogbugsupdateWordpressWorpress Blog frei hostenhttps://lioman.de/2008/08/worpress-blog-frei-hosten/<p>Ich habe prinzipiell etwas gegen <strong>vorgefertigte</strong> Softwareangebote im Netz, wenn es auch die Alternative gibt, diese runterzuladen und <strong>selbst</strong> zu&nbsp;hosten.</p> <p><a class="reference external" href="http://wordpress.com">Wordpress.com</a> bietet tolle Dienste an und für den absoluten Anfänger sind sie nicht schlecht. Allerdings sind die Wordpress-Installationen stark <strong>eingeschränkt</strong>. So kann man z. B. keine Plugins installieren und ist auch in der Designauswahl auf die, auf dem Server installierten,&nbsp;angewiesen.</p> <p>Es ist jedoch nicht sinnvoll, deswegen ein teures Webhostingpaket zu kaufen und für sein kleines privates Blog viele Euro pro Monat&nbsp;auszugeben.</p> <p>Deswegen habe ich mich für dieses Blog auf die Suche nach einem Free-Hoster&nbsp;gemacht.</p> <p>Dabei bin ich auf das nahezu sensationelle Angebot von <a class="reference external" href="http://bplaced.net">bplaced.net</a> gestoßen und war anfangs auch sehr zufrieden&nbsp;damit.</p> <p>Das Einzige Problem dieses Hosters ist die Unterbindung von ausgehenden Verbindungen&nbsp;(fsockopen())</p> <p>Das hat aber gravierende Folgen, so funktioniert damit das pingen, also das Informieren von Blogverzeichnissen,&nbsp;nicht.</p> <p>Ich dachte mir <span class="caps">OK</span>, dann kann ich ja manuell pingen, aber auch <strong>Pingbacks</strong> und <strong>Trackbacks</strong> gehen&nbsp;nicht.</p> <p><strong>Das ist das eigentliche&nbsp;Problem</strong></p> <p>Denn ohne Ping- und Trackbacks sind notwendig um den eigenen Blo bekannt zu machen und verschiedene Blogs miteinander zu&nbsp;vernetzen</p> <p>Also musste ich mich auf die Suche nach einem neuen Hoster machen und bin habe einen Blogeintrag von CPUfronz&nbsp;gefunden.</p> <p>Jetzt bin ich so wie er auf <a class="reference external" href="http://kilu.net">kilu.net</a> umgestiegen und es sieht schon einiges anderst aus. Gleich beim ersten einloggen viel auf, dass sich die Plugins <strong>selbständig</strong> um Updates bemühen und auch auf dem Dashboard gab es Informationen, die ich sonst gar nicht gesehen&nbsp;habe.</p> <p>Dafür lohnt es sich den schmalen Werbebalken zu <strong>akzeptieren</strong>. Das ist der einzige Nachteil con kilu gegenüber&nbsp;bplaced.</p> <p>Wenn blaced auch ausgehende Verbindungen erlaubt ziehe ich deswegen sicher wieder&nbsp;zurück</p> LiomanWed, 13 Aug 2008 15:00:00 +0200tag:lioman.de,2008-08-13:/2008/08/worpress-blog-frei-hosten/DigitalBlogfreihostingInternetKostenlosWordpressBeiträge bekannt machen!https://lioman.de/2008/08/beitraege-bekannt-machen/<p><strong>Stell dir vor du bloggst&nbsp;&#8230;&#8230;</strong></p> <p><strong>&#8230;.. und keiner schaut&nbsp;hin.</strong></p> <p>Wenn man neu das <strong>Bloggen</strong> für sich entdeckt und das jungfräuliche Bloggsystem erstmal fleißig mit Beiträgen füttert, kann man eigentlich kaum erwarten, dass innerhalb kurzer Zeit die halbe Welt zu Gast ist und gleich mal fleißig Anteil&nbsp;nimmt.</p> <p>Es dauert ein wenig, bis der eigene <strong>Blog</strong> bekannt&nbsp;ist.</p> <p>Man kann dies selbst aber ein wenig beschleunigen in dem&nbsp;man</p> <ol class="arabic simple"> <li>Etwas interessantes schreibt&nbsp;und</li> <li>Das geschriebene bekannt&nbsp;macht.</li> </ol> <p>Dazu muss man die Domain ersteinmal in die diversen <strong>Suchmaschinen</strong> eintragen. Wie das geht überlasse ich den unzähligen <strong><span class="caps">SEO</span>&#8217;s.</strong></p> <p>Außerdem kann man immer, wenn man einen Beitrag geschrieben hat, <strong>Pingdinste</strong> anpingen - ihnen also die frohe Kunde über neuste geistige Ergüsse zukommen&nbsp;lassen.</p> <p>Die meisten Blogsysteme (wie z.B. Wordpress) haben ein eingebautes <strong>Ping-Modul.</strong> Man trägt alle URLs ein und die Software erledigt den&nbsp;Rest.</p> <p>Bei einigen <strong>Webhostern</strong> sind jedoch Serverseitig bestimmte Features <strong>deaktiviert,</strong> so dass man auf die manuelle Methode ausweichen&nbsp;muss.</p> <p>Um nicht endlos Pingdienste zu besuchen und trotzdem alle wichtigen anzupingen kann man einen besuchen, der dann die wichtigsten&nbsp;bedient.</p> <p>Am praktikabelsten hat sich für mich <a class="reference external" href="http://blogpingr.de">Blogpingr.de</a>&nbsp;erwiesen.</p> <p>Der Dienst verteilt laut <a class="reference external" href="http://web.archive.org/web/20080912225149/http://www.webmasterwatchblog.de:80/hinweise/blogpingr-und-noch-ein-pingdienst/">Webmaster Watchblog</a>&nbsp;an.</p> <ul class="simple"> <li>Google</li> <li>Yahoo</li> <li>Twingly</li> <li>Technorati</li> <li>Weblogs</li> <li>Syndic8</li> <li>Icerocket</li> <li>Moreover</li> <li>Feedburner</li> </ul> <p>Meines Erachtens sind das erst mal die <strong>wichtigsten.</strong></p> <p>Wenn man ein kleines Bild mit entsprechendem <a class="reference external" href="http://blogpingr.de/buttons/">Code</a> auf seinem Blog einbindet, wird man zudem in den Blogticker aufgenommen und man kann im Blogmonitor die wichtigsten Statistiken über alle Blogs&nbsp;einsehen.</p> <p>Seit ich diesen Dienste nutze sind schon mal ein paar&nbsp; Benutzer auf meine Seite gekommen und das anpingen anderer Dienste funktioniert <strong>perfekt</strong>. Kaum habe ich angepingt tauchen die Crawler der Anderen&nbsp;auf.</p> <p>Das Einzige, das ich wirklich noch vermisse ist eine sinnvolle <strong>Suchfunktion.</strong> Man sieht leider immer nur die aktuellsten Blogs und nicht alle&nbsp;eingegangenen.</p> <p>Ich werde mal eine Mail schreiben und hoffe, es wird noch&nbsp;eingebaut.</p> LiomanTue, 05 Aug 2008 12:28:00 +0200tag:lioman.de,2008-08-05:/2008/08/beitraege-bekannt-machen/DigitalBlogInternetPingdienstSEOAufbauhttps://lioman.de/2008/06/aufbau/<p>Dieser Blog befindet sich noch im (technischen) Aufbau, bevor ich wirklich anfange zu bloggen möchte ich ein wenig herumexperimentieren&nbsp;:-)</p> <p>Lioman</p> LiomanFri, 20 Jun 2008 11:15:00 +0200tag:lioman.de,2008-06-20:/2008/06/aufbau/AllgemeinBlogInformationen