HttpWebResponse.GetRequestStream hängt sich auf

Bei der gestern vorgestellten Twitter-Bibliothek bemerkte ich nach einigem Testen ein Problem. Folgender Quellcode:

var twitter=new TinyTwitter.TinyTwitter(oauth);
twitter.UpdateStatus(".");
twitter.UpdateStatus("..");
twitter.UpdateStatus("..");
twitter.UpdateStatus("....");
twitter.UpdateStatus(".....");

funktionierte nicht wie gewünscht. Anstatt auf Twitter diese fünf Tweets angezeigt zu bekommen, schaffen es nur die ersten zwei Tweets durch die API. Das Problem ergab sich hierbei daraus das sich die .NET Framework-Methode HttpWebResponse.GetRequestStream einfach aufhängte bzw. nicht mehr reagierte. Problematisch daran ist, das man als Entwickler keine Rückmeldung bekommt, warum das ganze schief läuft. Nach einiger Recherche stellte ich dann fest, das HttpWebResponse.GetRequestStream nur dann erneut aufgerufen werden darf, wenn der vorherige Aufruf der Methode abgeschlossen ist. Im Falle der TinyTwitter Bibliothek, habe ich das Problem durch Aufruf der Methode Abort (nachdem die angefragten Informationen angekommen sind) im HttpWebResponse-Objekt gelöst.

Leichtgewichtige Twitter-API-Bibliothek für C#

Die meisten Bibliotheken welche Zugang zur Twitter-API in C# (.NET/Mono) bereitstellen haben ein Problem. Sie sind schlicht zu groß. Meist bestehen sie aus einem dutzend Bibliotheken und werden mit der Zeit immer unhandlicher. So war auf der Suche nach einer leichtgewichtigen Bibliothek für den Zugriff auf das Twitter-API. Fündig wurde ich mit TinyTwitter.

TinyTwitter auf GitHub

TinyTwitter auf GitHub

Diese Bibliothek besteht im Kern aus einer Datei und lässt sich einfach verwenden. Um einen Tweet zu senden, recht folgender Code:

var oauth = new OAuthInfo
{
    AccessToken = "YOUR ACCESS TOKEN",
    AccessSecret = "YOUR ACCES SECRET",
    ConsumerKey = "YOUR CONSUMER KEY",
    ConsumerSecret = "YOUR CONSUMER SECRET"
};

var twitter = new TinyTwitter(oauth);

twitter.UpdateStatus("I'm tweeting.");

Zu finden ist die Bibliothek auf GitHub. Lizenziert ist TinyTwitter unter der Apache Lizenz und damit freie Software.

HexGL

In einem modernen Browser findet man mittlerweile Techniken wie HTML5 und WebGL welche die Möglichkeiten der Webprogrammierung erheblich erweitern. So findet man nicht nur einfach gestrickte Webapplikationen im Netz, sondern auch anspruchsvolle Spiele, welche von Möglichkeiten von WebGL und Co. Gebrauch machen.

HexGL in Aktion

HexGL in Aktion

Eines dieser Spiele ist HexGL. Es handelt sich dabei um ein futuristisches Rennspiel, welches von F-Zero und Wipeout inspiriert ist. Der Quelltext für das Spiel ist dabei auf GitHub zu finden. Aktuell ist er unter der Creative Commons Lizenz BY-NC lizenziert und damit eher Freeware als freie Software. Allerdings hat der Autor eine späteren Lizenzwechsel zur MIT-Lizenz in Aussicht gestellt. Ausprobiert werden kann das Spiel auf der offiziellen Seite.

Dynamische Favicons

Normalerweise sind Favicons statische Gebilde. Allerdings wurde schon Tetris für das Favicon umgesetzt. Wer also etwas Bewegung in sein Favicon bringen möchte, sollte sich die Javascript Bibliothek favico.js anschauen. Mit der Bibliothek ist es möglich sein Favicon zu animieren oder gleich komplette Videos in diesem abzuspielen. Auch der Zugriff auf die Webcam und die anschließende Darstellung im Favicon sind möglich.

lab.ejci.net/favico.js/

lab.ejci.net/favico.js/

Der Quelltext der Bibliothek ist auf GitHub zu finden. Lizenziert ist das ganze unter der MIT-Lizenz und der GPL und damit freie Software.

Kreativer Sortieralgorithmus

Es gibt viele Sortieralgorithmen und einige davon wie Bogosort sind Musterbeispiele für schlechte Algorithmen. Auf 4Chan wurde vor einiger Zeit ein sehr kreativer Algorithmus zum Sortieren vorgestellt:

#!/bin/bash

function f() {
    sleep "$1"
    echo "$1"
}

while [ -n "$1" ]
do
    f "$1" &
    shift
done

wait

Dieser in Form einenes Shellskriptes implementierte Algorithmus nutzt, dabei die Sleep-Funktion zur Sortierung der eingegebenen Zahlen. Das bedeutet um so größer die Zahl um so länger wartet der Sleepbefehl. Damit werden alle Zahlen in ihre richtige Reihenfolge gebracht. Das bedeutet natürlich auch, um so höher die Zahlen um so länger dauert das ganze.