Aug 18
Manchmal würde ich gerne der Welt draussen via Twitter mitteilen, was ich gerade für Musik höre.
Meistens habe ich aber gerade dann keine Lust den Künstler und Titel des Songs irgendwo in einen Twitter Client zu hacken.

Also habe ich mir ein Greasemonkey-Script geschrieben, was den offiziellen TwitterButton in meine Last.fm Profilseite hackt.

TweetButton im Last.fm Profil


Funktioniert natürlich nur, wenn gerade Musik läuft.
Andernfalls würde ja auch die Bezeichnung "Now Playing" nur begrenzt Sinn ergeben.

Wenn Ihr Greasemonkey installiert habt, dann könnt ihr das entsprechende Script auf userscripts.org herunterladen.
Achja: Den Sourcecode dazu gibt es auf GitHub

Geschrieben von Funkmaster Flow

Tags für diesen Artikel: , , , , ,
Feb 7
Zeiten, in denen der Internet Explorer als unsicher gilt, kommen den alternativen Browsern zu Gute. So auch dem Chrome aus dem Hause Google. Auch wenn er oft aufgrund des "Nach-Hause-telefonierens" kritisiert wird. Welche Daten Chrome sendet und wie man sie abschaltet wird von Caschy auf seinem Blog beschrieben.

Info zu Google Chrome


Mittlerweile liegt Chrome in Version 4.0.249.78 vor. Basis ist Chromium, ein Open Source-Projekt, dass die Entwickler von Google erweitert und gebrandet haben.

Seit einiger Zeit gibt es die Möglichkeit Extensions zu installieren. Das sind kleine Erweiterungen, wie man sie vielleicht vom Firefox kennt.
Sowohl im privaten Bereich, als auch auf der Arbeit benutze ich im Firefox eine Vielzahl an Erweiterungen. Was sich nicht unbedingt positiv auf die Ladezeit und den Arbeitsspeicher auswirkt.
Google Chrome bringt mächtig PS auf die Strasse. Schneller Seitenaufbau und besonders JavaScript-lastige Seiten bauen sich im Chrome rasend schnell auf.

Dieses Wochenende habe ich mal einige Extensions ausprobiert und möchte Sie hier kurz vorstellen.

"Google Chrome und Extensions" vollständig lesen

Geschrieben von Funkmaster Flow

Tags für diesen Artikel: , , , , ,
Mär 1
Vielleicht haben es einige meiner Leser gemerkt.
Nach anfänglichen Problemen mit der Zeichenkodierung und der Performance habe mit Hilfe von Manuel eine Möglichkeit gefunden meinen Blog in Sachen Performance ein Stück nach Vorne zu bringen.

Manuel hat ein Skript geschrieben, dass das Caching-Verhalten von S9Y übernimmt und konfigurierbar macht.
Das Skript checkt, ob es die Seite bereits in einem Cache-Ordner gibt.
Wenn ja, dann liefert es eine statische HTML-Seite aus und jagt die Seite nicht mehr durch sämtliche Plugins.
Darüber hinaus ist das Skript in der Lage zu checken, ob es sich um das Backend oder einen Trackback handelt.
Das steigert nach einigen Tests um einiges die Performance.
Gibt es keine Cache-Files, so hat der erste Besucher die "Arschkarte", da er derjenige ist, der die Cache-Files generiert, danach rennt das Blog allerdings wie Bolle.
Zeiten von unter zwei Sekunden sind mit entsprechend schneller Internet-Verbindung kein Problem mehr.

Vielen Dank an dieser Stelle noch einmal an Manuel, der mir mit seinem Know-How einen großen Dienst erwiesen hat.

Einziges Manko ist, dass man mit diesem Skript nach einem neuen Blog-Eintrag den Cache-Ordner löschen muss.
Finde ich aber nicht so schlimm. Nach einem neuen Eintrag kann ich auch eben den Cache-Ordner löschen...

Geschrieben von Funkmaster Flow

Tags für diesen Artikel: , ,
Feb 24
Nachdem ich hier bereits über die Performance meines Blogs geschrieben habe, bekam ich diverse Rückmeldungen, die ich allerdings selber fühlen musste ;-)
Die angesprochenen 4 Sekunden kamen leider nur im Idealfall vor. Davon hatte ich während des Schreibens ein wenig blenden lassen.

Am Wochenende bin ich erfolgreich vor dem gemeinen Karneval geflohen und habe nochmal an einigen Schrauben gedreht.
Um das Ergebnis bereits vorweg zu nehmen: Mit mäßigem Erfolg.
Der Flaschenhals ist und bleibt mein Hoster. Ich habe hier nur ein etwas besseres Angebot gewählt, was meinen Geldbeutel nicht zu sehr belastet.
Also teile ich mir mit n Kunden ein und dieselbe Hardware.
Hätte ich einen root-Server, dann würde die Sache schon ein wenig anders aussehen.

Naja. Was habe ich getan, um doch noch ein wenig mehr aus dem Server zu kitzeln?

"Mehr Performance - Teil 2 [Update]" vollständig lesen

Geschrieben von Funkmaster Flow

Tags für diesen Artikel: , ,
Jan 27
Ich bin vor kurzem auf folgendes Problem gestossen:
Es existiert eine ganz normale HTML-Tabelle mit Daten.
Dort soll nun per jQuery das Ergebnis aus einem HTML-Fragment sozusagen injiziert werden.

Wir haben also folgende Beispiel-Tabelle:
<table width="50%" class="jquery_table">
<tr class="expand_region">
<td class="plus_minus">+</td>
<td> 01</td>
        <td> 02</td>
        <td> 03</td>
        <td> 04</td>
        <td> 05</td>                                        
    </tr>
    <tr>
        <td> 10</td>
        <td> 11</td>
        <td> 12</td>
        <td> 13</td>
        <td> 14</td>
        <td> 15</td>                                        
    </tr>    
  </table>  
 

Um diese mit dem Ergebnis aus dem Fragment zu befüllen (und zwar zwischen den beiden bestehenden TRs) kommt folgender kurzer Code zum Einsatz.
Als erstes das jQuery-Framework einbinden:
<script src="jquery-1.3.min.js" type="text/javascript"></script>

Hier ist der eigentliche Code:
$(document).ready(function() {
    $(".plus_minus").click(function() {
    if($(".plus_minus").text() == "+"){
        $(".plus_minus").text("-");
        $.get("append.html", "html", function(data){
        $(".expand_region").after(data);
        });    
    } else {
        $(".plus_minus").text("+");
        $(".dynamic").remove();
    }
    });
});
 

Was genau passiert hier?
Zunächst einmal wird gewartet, bis das komplette HTML-Document gerendert wurde.
Anschliessend wird dem Element mit der Klasse "plus_minus" ein click-Ereignis hinzugefügt.
Wenn der Text dieses Elements "+" lautet, dann wird der Text zunächst in ein "-" umgewandelt.
Per GET-Methode wird das HTML aus der Datei "append.html" geholt und die Callback-Methode mit den Daten aufgerufen.
Dem Element mit der Klasse "expand_region" (hier die erste TR) wird mit der Methode after() der Inhalt von "append.html" an die TR angehängt.

Ansonsten, wenn also die Daten bereits anhängen und aus dem "+" ein "-" wurde, dann wird das Element mit der Klasse "dynamic" (hier: die TR, die in append.html steht) mit der Methode remove() entfernt.
Hinweis: Wenn man das mit mehreren Fragmenten implementiert, so würden mit diesem Code alle injizierten Elemente entfernt.

Wenn man also nur ein bestimmtes injiziertes Fragment entfernen möchte, so müsste man auf IDs setzen oder entsprechende Klassen definieren. Je nach Zweck und belieben.

Um noch ein besseres gefühl für das hier beschriebene zu geben, noch 2 Links:
Online Demo
Beispiel im ZIP-Archiv

Geschrieben von Funkmaster Flow

Tags für diesen Artikel: , , ,
Dez 29
Meine Latein-Lehrerin hat mal gesagt: "Mann muss gewusst wo, muss man nicht immer haben".
Damit meinte sie natürlich: "Man muss nicht alles wissen. Man muss nur wissen wo es steht".

So geht es einem öfter im Leben.
Für mich als Software-Entwickler genauso. Man hat nicht ständig alle Funktionen einer Programmier-Sprache parat.
Dafür gibt es ja schließlich Cheat Sheets.

Cheat Sheets sind kurz gehaltene Funktions-Referenzen, die als Merkblatt fungieren.
Eine Tolle Sammlung an Cheat-Sheets für PHP, MySQL, Regular Expressions, HTML usw. gibt es auf der Seite: Added Bytes.

Ist auf jeden Fall mal einen Blick Wert.

Geschrieben von Funkmaster Flow

Tags für diesen Artikel: ,
Sep 30
Wenn man Software entwickelt, möchte man auch (je mehr Erfahrung man erlangt) das Prinzip der Versionierung nutzen.
Will man sich während der initialen Software-Erstellung ein SVN Repository anlegen und dabei auf die Integration in einen bestehenden Apache-Server verzichten, hat man unter Anderem folgende Möglichkeit:

Die Website XP Development Tools bietet einem 5 kostenfreie Repositories an.
Das ist sicherlich nicht der beste Weg um ein SVN Repository produktiv zu nutzen. Für die initiale Erstellung eines Projektes an mehr als einer Workstation, reicht es jedoch aus.

Für den produktiven Einsatz fehlen beispielsweise grundlegende Features wie z.B. Trunk und Branch...

Geschrieben von Funkmaster Flow

Tags für diesen Artikel: , ,