xkcd Widget für Mac OS X

Was ich auf meinem OS X Gerät im Gegensatz zu KDE vermisst habe, ist ein xkcd Widget, welches einem den aktuellen Comicstrip von http://xkcd.com/ anzeigt. Zum Glück muss man nicht lange suchen, suchen bis man ein solches für Mac OS X findet. Unter http://www.midwinter-dg.com/downloads.html#mac-dashboard-widgets gibt es das entsprechende Widget. Im Gegensatz zu anderen xkcd Widgets zeigt es leider nicht die Texte an, welche erscheinen wenn man den Mauszeiger ein paar Sekunden über dem Comic lässt. Diese geben dem Comic meist einen interessanten Subkontext, welcher hier natürlich weg fällt.

Webseiten per wget herunterladen

Manchmal möchte man eine Webseite oder mehrere Verzeichnisse einer solchen herunterladen. Dank „wget“ geht das sehr unproblematisch:

wget -r --random-wait --timestamping <URL>

Möchte man das ganze nur relativ zur Start-URL downloaden so gibt man noch den Parameter -L an:

wget -r -L --random-wait --timestamping <URL>

Aussehen könnte das ganze dabei zum Beispiel so:

wget -r --random-wait --timestamping http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/

In diesem Fall werden die SRTM Daten der NASA heruntergeladen. Dank des Attributes „–timestamping“ kann ein unterbrochener Download später auch wieder aufgenommen werden. Der Parameter „–random-wait“ sorgt dafür das die Zeit zwischen den Downloads variiert und somit das Problem minimiert wird das bestimmte Server den Downloadvorgang unterbrechen.

Swusch unter Mac OS X abstellen

Unter Mac OS X tritt unter Umständen ab und an ein „Schwusch“-Ton auf. Dieser tritt dabei einzeln als auch gehäuft auf. Auf Dauer zehrt das natürlich an den Nerven. Der Verursacher dieser akustischen Meldungen ist dabei „Messages“.

Um die nervigen Störenfriede zu deaktivieren, geht es in die Einstellungenund dort sollte man den Ton für die Events „Freund ist jetzt anwesend“ und „Freund ist nicht mehr anwesend“ deaktivieren.

Hier muss der Ton deaktiviert werden

Nachdem man diese beiden Events ruhig gestellt hat, ist das Geräusch verschwunden, welches natürlich um so häufiger vorkam, um so häufiger sich jemand in „Messages“ an- und abgemeldet hat.

MooTools und benutzerdefinierte Events

Bei MooTools handelt es sich um ein Framework mit welchem man sehr schön Klassen basierte Strukturen in JavaScript abbilden kann. Bei der Definition von benutzerdefinierten Events ist die Dokumentation leider etwas dünn, so das ich dort etwas probieren musste, bis ich zum richtigen Ergebnis gekommen bin.

Gegeben sei dabei ein Projekt mit einer „index.html“ Datei sowie der JavaScript Datei „explosive.js“ welche die Klasse „Explosive“ enthält. Die Klasse sieht dabei im Quelltext so aus:

var Explosive = new Class({
       Implements: [Events],

       tntequivalent: 0,

       //Constructor
       initialize: function(equivalent) {
         this.tntequivalent = equivalent;
       },

       //Methods
       detonate: function(){
         this.fireEvent('explode');
       },

       detonateWithInfo: function(){
         this.fireEvent('explode', this.tntequivalent);
       }
});

In dieser Klasse gibt es die Eigenschaft „tntequivalent“ welche die Sprengkraft unser Bombe definiert und im Konstruktor gesetzt wird. Die Funktionen „detonate“ und „detonateWithInfo“ zünden die Bombe und senden das Event „explode“ wahlweise mit der Informationen über die Sprengkraft.

Die dazu passende „index.html“ sieht dabei so aus:

<!DOCTYPE html>
<html>
  <head>
    <title>Mootools Event Test</title>
    <meta charset="utf-8" />
    <script type="text/javascript" src="mootools-core-1.4.5-full-nocompat.js"></script>
    <script type="text/javascript" src="explosive.js"></script>
  </head>
  <body>
    <script type="text/javascript">
      function onExplode(object)
      {
        if(object==null)
        {
          alert("Bomb is exploded.");
        }
        else
        {
          alert("Bomb is exploded, with " + object + " tons of TNT equivalent.");
        }
      }

      var bomb = new Explosive(100);
      bomb.addEvent('explode', onExplode);
    </script>

    <form>
      <input type="button" value="Detonate bomb" onClick="bomb.detonate();">
      <input type="button" value="Detonate bomb with info" onClick="bomb.detonateWithInfo();">
    </form>
  </body>
</html>

Hier wird im JavaScript-Bereich der Klasse eine Funktion „onExplode“ angelegt, welche das Event am Ende entgegennehmen soll. Darunter wird eine Instanz der Klasse „Explosive“ mit dem Namen „bomb“ angelegt. Dieser Instanz sagen wir das dass Event „explode“ an die Funktion „onExplode“ weitergereicht werden soll.

Nun werden noch zwei Buttons definiert, welche die auslösenden Funktionen aufrufen. Einmal wird die Funktion „onExplode“ mit einem Parameter und einmal ohne aufgerufen. In diesem Parameter steckt in diesem Fall die Sprengkraft der Bombe, so das diese mit ausgegeben werden kann. Und schon ist man mit seinem ersten Event fertig.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/MooTools