Tag Archives: WebUni

Mit Kanonen auf Smileys

Es ist schon ein paar Tage her, dass ich ein Iconset für Psi mit Smileys einer beliebten lokalen Internet-Community gebastelt und hier zum Download bereitgestellt habe. Unterdessen habe ich die eine oder andere Beschwerde von Leuten bekommen, die zwar die selbe Community aber andere Instant Messenger benutzen. Wenn diese beispielsweise einen Smiley der Form :puppy: empfangen, sehen die im dümmsten Fall einen Smiley, der die Zunge rausstreckt und danach uppy:. Egoistisch gesehen, hätte ich damit leben können, aber da mir ja speziell meine lieben Mitbewohner am Herzen liegen, schaute ich mal, ob ich nicht auch für andere Messenger als Psi so Icon-Themes, Smiley-Sets oder wie auch immer die bezeichnet werden, basteln könnte.

Ein Theme für Kopete hatte ich schnell zusammen und kündigte das in jener Community an. Die Begeisterung war groß, zumindest bei den beiden Nutzern von Kopete… Stimmen wurden laut, man hätte sowas auch gern für Pidgin, Adium, Miranda usw. Ich nutzte dann mal direkt das eingangs erwähnte Psi um mit Tux Kontakt aufzunehmen und wir sponnen ein paar Ideen zusammen. Das Ergebnis darf ich an dieser Stelle nun verkünden, doch zunächst noch ein kleiner Abstecher in die Welt der Smiley-Themes.

Wie sieht so ein Theme intern aus? Für den Fall der bereits erwähnten Psi, Kopete, Pidgin und Adium sieht das so aus, dass man einen Ordner hat mit den kleinen Grafik-Dateien, entweder im GIF-Format für animierte Viecher oder für unbegliche auch GIF oder besser PNG. Dazu kommt dann eine Textdatei zur Zuordnung von Textsequenzen zu diesen Dateien und dann wird das in ein Archiv gepackt und gut. Der interessante Punkt ist diese Beschreibungsdatei, die sieht nämlich für jeden Messenger anders aus. Mal ist das XML, in unterschiedlicher Struktur natürlich, mal ist es Plain-Text, angereichert mit unterschiedlich viel Meta-Information. Aber es sind überall die selben Grafiken und es sind alles Textdateien, die man rein theoretisch ja auch einfach von einem cleveren Programm generieren lassen kann, das einmal die richtige Zuordnung von Smileys zu Dateien kennt.

In diesem Fall war die Kanone meiner Wahl Perl Template Toolkit 2. Im Rahmen der Neugestaltung meiner privaten Homepage (nein, kein Link, ist schließlich noch nicht fertig :P ) hatte ich das schon benutzt und es erschien mir geeignet, was sich auch später bestätigt hat. Nach dem Erzeugen der Beschreibungsdateien erledigt das Verpacken ein simples Shell-Skript. Die Smiley-Themes für Kopete, Pidgin und Psi können wir damit schon erzeugen. Für die Unterstützung weiterer Messenger brauchen jetzt nur noch die passenden Templates geschrieben werden.

Eins fehlt natürlich noch: die fertigen Templates und die Skripte an sich für die Leute, die das nachspielen wollen. Eine kleine Dokumentation nebst Download-Links für bereits gebaute Iconsets gibt’s im Wiki von den Penguineering Tools. Wer selbst dran rumfummeln will, schaut am besten ins Subversion-Repository.

Smilies für Foren auf eigenem Webspace

Internetforen gibt es wie Sand am Meer und es gibt ebenso viele Seiten, wo man Smilies finden kann, die man über die Forencodes oder HTML einbinden kann. Diese Seiten tauchen auf und verschwinden wieder, einige fordern sogar direkt dazu auf, die Smilies runterzuladen und auf den eigenen Webspace zu packen. Das ist nicht weiter schlimm, aber da liegen sie nun in den Untiefen in irgendeinem Unterordner der eigenen Domain. Will man einen Smiley verwenden, wühlt man sich lange durch Verzeichnisse und schreibt die URL des Bildchens zusammen mit den Forencodes mühsam von Hand zusammen.

Genauso ging es mir und daher hab ich mir ein Skript in PHP gebastelt, das mir nicht nur alle Smilies, die ich gesammelt habe, übersichtlich anzeigt, sondern auch gleich noch den Forencode mit der passenden URL dazu. Der brauch nur noch kopiert werden und schon hat man den eigenen besonders witzigen Smiley im Internetforum seiner Wahl eingefügt. Folgendes habe ich in ein Grundgerüst einer HTML-Seite eingefügt. Ich hab das einfach mal ein wenig getrennt hier, damit es sich leichter kommentieren lässt, später einfach wieder zusammenfügen…

<?php
$extcounter = 0;
function fileextension($filename)
{
    $pospunkt = strrpos($filename,".");
    return substr($filename, $pospunkt+1,
        strlen($filename) - $pospunkt);
}

function isimagefile($filename) {
    $extension = fileextension($filename);
    if( ($extension == "gif") OR
        ($extension == "jpg") OR
        ($extension == "jpeg") OR
        ($extension == "png") ) {
        return true;
    }
    else {
        return false;
    }
}

In den beiden Funktionen passiert erstmal nichts spannendes. Die erste gibt von einem Dateinamen die Erweiterung, also den Teil nach dem letzten Punkt zurück. Die zweite Funktion bekommt so ein Ergebnis vorgesetzt und gibt wahr oder falsch zurück, je nachdem ob es die Erweiterung einer Bilddatei ist oder nicht.

function echodir($path = ".")
{
    $counter = 1;
    global $extcounter;
    $dir = dir($path);
    while(false !== ($file = $dir->read())) {
        if(("." == $file) OR (".." == $file))
            continue;
        if(is_dir($path."/".$file)) {
            echo "<h2>$file</h2>n";
            echo "<p>n";
            echo "<table>n";
            echodir($path."/".$file);
            echo "</table>n";
            echo "</p>n";
        }
        else {
            if(isimagefile($file)) {
                if($counter%2) {
                    echo "<tr>n";
                }
                echo "<td><img src="".$path."/".$file.""/></td>";
                echo "<td>[img]http://www.lespocky.de/smilies/" .
                    substr($path,2,strlen($path)-2) .
                    "/".$file."[/img]</td>n";
                if(($counter+1)%2) {
                    echo "</tr>n";
                }
                $counter++;
                $extcounter++;
            }
        }
    }
    $dir->close();
}

Hier passiert das spannende. Vorweg sei gesagt, wie die Dateien organisiert sind. In dem Ordner, wo das Skript liegt, befinden sich keine Grafikdateien, sondern nur Ordner. In diesen Ordnern liegen dann direkt die Smilies. Tiefere Ordnerebenen gibt es nicht.

echodir() ist eine rekursiv aufgerufene Funktion. Wird kein Argument übergeben, so ist das aktuelle Verzeichnis zu durchsuchen. Da wird dann in der while-Schleife jeder Eintrag durchgegangen. Bei “.” und “..” passiert nix weiter, es geht zum nächsten Schleifendurchlauf. Dann passiert eine Unterscheidung, ob der Eintrag eine Datei oder ein weiteres Verzeichnis ist. Bei einem Verzeichnis wird eine neue Überschrift geschrieben und eine Tabelle begonnen. Die Smilies sollen in zwei Spalten angezeigt werden, damit nicht so viel Platz verschwendet wird. Nach Beginn der Tabelle, wird echodir selbst rekursiv aufgerufen.

In diesem Aufruf wird die Funktion wegen der oben erwähnten Organisation der Dateien, dann auch Dateien finden und diese dann zweispaltig eintragen. Um die Spalten zu erkennen und an den korrekten Stellen die tr-Tags zu öffnen und zu schließen, werden die Smilies in $counter mitgezählt und über den Modulo-Operator jeweils in linke oder rechte Spalte geschrieben. Ausgegeben wird nicht nur der Smilie selbst zum Angucken, sondern auch das fertige Foren-Tag zum Markieren und Kopieren.

Irgendwann gibt es dann keine Verzeichnisse und Dateien mehr zum lesen, alles Smilies sind ausgegeben und … ach ja, die Funktion ist ja erst definiert und erklärt, aufgerufen muss sie noch werden:

echodir();

echo "<hr /><p>Das waren ".$extcounter." Smilies..</p>n";

?>

Die letzte Zeile ist noch ein bisschen Spielerei als Abschluss. Da die ganze Auflistung von dem PHP-Skript übernommen werden, brauchen neue Smilies nur auf den Webspace kopiert werden, fertig.

happy

WebUni Iconset für Psi

Ich plane, über kurz oder lang ICQ Lebewohl zu sagen und auf Jabber umzusteigen. Gründe dafür gibt’s genug und wer will, kann da sehr viel im Netz finden. Jabber-Clients gibt’s mittlerweile einige und auch die verbreiteten und beliebten Multi-Protokoll-Clients Miranda und Trillian können damit umgehen. Ich persönlich bin ein Fan von Psi. Der unterstützt das Protokoll und viele Erweiterungen, GnuPG-Verschlüsselung ist eingebaut und er sieht sowohl unter Windows als auch unter Linux schick aus – schlicht, aber schick.

Aus Neugier habe ich letztens geschaut, wie die Iconsets dort eingebunden sind. In einem Ordner liegt jedes Icon in Form einer PNG-Datei und dann gibt es eine Datei icondef.xml, die selbsterklärend ist, ein tolles Beispiel für die sinnvolle Anwendung von XML.

Naja genau genommen habe ich nicht nur aus reiner Neugier geschaut. In meinem Freundeskreis gibt es einige Leute, die bei der Online-Community WebUni aktiv sind. Mit der Zeit verinnerlicht man die Abkürzungen für die dort gebräuchlichen Smilies und dann benutzt man die irgendwann auch außerhalb von WebUni – beispielsweise im Instant Messenger. Was liegt näher, als dort auch die gleichen Icons anzeigen zu lassen. Da es, wie oben beschrieben, recht einfach ist, für Psi ein Iconset zu bauen, habe ich mich mal kurz hingesetzt und das gemacht.

Das größte Problem bestand darin, dass Psi keine animierten GIF-Icons anzeigt und ich aus den animierten noch je ein charakteristisches Einzelbild extrahieren musste. Der Rest ging sehr flott von der Hand und daher gibt es jetzt als Weltpremiere und exklusiv bei antiblau: das Psi Iconset »WebUni«. Einfach an geeigneter Stelle entpacken, in Psi auswählen und freuen. Als kleiner Vorgeschmack dann hier noch ein Screenshot:

Screenshot Psi Iconset »WebUni«

antiblau shirt shop

Vorgestern bin ich beim Surfen auf WebUni auf einen Tagebucheintrag von neo gestoßen. Er verlinkt dort ein Comic von kopozky.net und ich konnte nicht widerstehen und hab mich dort mal durch die Strips geklickt – eine sehr vergnügliche Angelegenheit. Dabei ist mir aufgefallen, dass der Admin der Firma Kopozky lustige Sprüche auf seinen T-Shirts trägt. Da ich schon für andere Zwecke gerne mal das eine oder andere Shirt gedruckt hätte, habe ich mir heute einen Shop bei spreadshirt.net eingerichtet. Das tolle daran: es gibt ein Plugin für WordPress um den eigenen Shop einzubinden. Kurz und gut: ich habe den Comic »All my Valentines« als Inspiration genommen und ein entsprechendes Shirt gebastelt. Die Shirts sind dann ab sofort auch hier im antiblau Blog zu finden und zwar unter Wams!

Warum wir IMPULS brauchen?

Vor einiger Zeit haben wir die Idee gehabt, dass ein Programm super wäre, das den Umgang mit den History-Daten von Instant Messengern wesentlich vereinfacht. Nicht nur dass die eingebauten Suchfunktionen der Clients oft miserabel sind, bei fortgeschrittenen Nutzer wie uns fällt die History nicht nur an einer Stelle an sondern gleich mal auf drei Rechnern von drei verschiedenen Clients. Die Idee: Zusammenführen der ganzen einzelnen Nachrichten in einem zentralen Archiv und ein leistungsfähiges Frontend zum Anzeigen, Durchsuchen und meinetwegen auch Statistiken generieren. Die Idee zu IMPULS (Instant Messenger Personal User Log Storage) war geboren. Geplant ist eine zentrale Datenbank und Anbindung an unterschiedlichste Clients wie mICQ, Licq, Miranda, Kopete, Adium usw. aber auch an Nachrichtensysteme von Browser-basierten Communities wie phpBB oder WebUni.

Gerade eben habe ich mir wieder gewünscht, IMPULS wäre bereits fertig. Ich konnte mich dunkel erinnern, dass mir ein Freund bei WebUni mal seine postalische Anschrift übermittelt hatte. WebUni speichert private Nachrichten, die der Nutzer nicht selbständig gesondert archiviert genau 30 Tage. Den Aufprall von meinem Kopf auf dem Schreibtisch hat man wohl in der ganzen Wohnung gehört…