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.

Zertifikate für ejabberd erzeugen

Von Zeit zu Zeit laufen Zertifikate ab. So auch in meinem Fall, als sich mein XMPP Client beschwerte, das dass Server-Zertifikat nicht mehr gültig ist. Um für ejabberd neue Zertifikate zu erzeugen, sollte man sich auf seinem Server einloggen und dort folgenden Zeilen eingeben:

openssl req -newkey rsa:2048 -keyout ejabberd.pem -nodes -x509 -days 365 -out ejabberd.cer
cat ejabberd.cer >> ejabberd.pem
cp ejabberd.pem /etc/ejabberd/ejabberd.pem

Anschließend kann der Dienst mittels:

service ejabberd restart

neugestartet werden. Das neue Zertifikat ist damit aktiv und der Dienst kann wieder genutzt werden.

Publish Confirm

Der Veröffentlichen-Button im WordPress-Editor ist groß und auffällig gestaltet. Manchmal führt dies dazu, das man den Button drückt obwohl der Artikel noch nicht veröffentlicht werden soll. Falls dies öfter geschieht, kann das Problem mit dem Plugin Publish Confirm aus der Welt geschafft werden.

Publish Confirm in Aktion

Publish Confirm in Aktion

Publish Confirm schaltet vor die Veröffentlichung noch einen Dialog, der beim Nutzer fragt ob diese Aktion wirklich beabsichtigt war. Das Plugin kann direkt über die WordPress Plugin Verwaltung installiert werden oder über das WordPress Plugin Repository bezogen werden. Der unter der GPL lizenzierte Quelltext ist auf GitHub zu finden.

Die Brot und Butter Karte

In den letzten Wochen gab es bei Zeit Online eine Artikelserie über Bäckereien und die Frage was gutes Brot ausmacht. Passend dazu wurde basierend auf Open Street Map eine Karte mit empfehlenswerten Bäckereien angelegt.

Die Bäckerei-Karte auf Zeit Online

Die Bäckerei-Karte auf Zeit Online

Der Nachteil der Karte ist allerdings, das man sich nun nicht mehr beteiligen kann, sprich die Karte ist im Moment statisch. So gibt es im Bereich Neubrandenburg nur eine empfehlenswerte Bäckerei – was die Wirklichkeit nicht gut abbildet. Zu finden ist die Karte auf Zeit Online.