Teures Wochenende

Katrin und ich waren am Wochenende gut shoppen. Wir haben nun alle Teppiche zusammen und auch die restliche Tapeten. Wir hatten leider die Decken vergessen mit ein zurechnen. Das würde ziemlich doof aussehen. Erst hat sich Katrin ziemlich geärgert, da ein bereits ausgesuchter Teppich nun im Laden vergriffen war. Zum Glück hatten sie ihn noch bei OBI, zwar nur 60% teurer, aber was macht man nicht alles um die Freundin glücklich zu machen :)
Ach und dann haben wir unsere Umzugskartons bei Ebay bestellt (auf Empfehlung von Bernhard und Nicole, wir haben aber gleich doch 50 Stück bei Ebay gekauft ;) . Ich denke ja es sind zu viele aber alle anderen denken nicht mal, dass die 50 reichen. Na wir werden ja sehen.
Leider gab es immer noch kein grünes Licht vom Vermieter. Langsam gehts mir echt auf den Wecker, da wir ja echt noch einiges machen müssen. Sehr ärgerlich!

File Transfer Planer – FTP

Aktuell arbeite ich an eine kleinen Applikation, welche ich „File Transfer Planer“ getauft habe. Mit dieser wird es möglich sein, zeitgesteuert Dateien auf einen FTP zu schieben oder eben herunter zu laden.
Das Backend steht zum Teil, einen Teil der GUI ebenfalls, daher mal ein paar Screenshots.

Die GUI ist nicht mehr ganz so aktuell. Aktuell bin ich mir noch nicht so sicher, wie ich die Daten speicher, momentan tendiere ich dazu, die Daten als XML-Datei auf der Platte zu speichern.

Meine T-Mobile Kündigung – Teil 2

Eigentlich gibt es nicht viel zu erzählen. Heute kam ein Brief, meine Kündigung wäre zum 10.04.2010 wirksam. Früher als erwartet aber ich will mich ja nun nicht beschweren 🙂

Update: Eben kam eine SMS, dass meine Übernahme zum 10.04.2010 00:00:00 Uhr geschaltet wird. Ick freu mir!

Fehlerhafte Links in der Sidebar bei WordPress

Vorhin ist mir aufgefallen, dass die Links zu den letzten Kommentaren in der Sidebar fehlerhaft waren. Sie zeigten sogar in ein falschen Blog. Ich dachte, es läge an der WordPress MU Installation. Also spielte ich mit den Einstellungen herum und verschlimmbesserte nur noch alles. Also ging ich einen anderen Weg und versuchte dem Fehler auf die Schliche zu kommen, in dem ich die Funktionen testete. Das ist aber recht schwierig, da das WordPress Backend mittlerweile riesig ist und wenn man nicht Up-To-Date ist, hat man absolut keine Chance. Also den Königsweg gegangen und nach und nach alle Plugins deaktiviert und schon hatte ich den schuldigen gefunden: FeedWordpress

Das Plugin sorgt dafür, dass der RSS Feed anderer Blogs ausgelesen werden und hier als eigene Einträge erscheinen. Damit der Fehler reproduzierbar ist, müssen folgende Voraussetzungen erfüllt sein:
– Bei FeedWordpress muss unter Einstellungen -> „Posts & Links“ -> Permalink auf „point to the copy on the original website“ stehen
– der letzte Eintrag der Seite muss ein per Feed importierter Eintrag sein
– Das Widget „Recent_Comments“ oder jede andere Funktion, dass einen Permalink per „get_permalink()“ zu holen versucht, muss „nach“ diesem bestimmten Beitrag ausgeführt werden

Um den Fehler zu verstehen, schauen wir kurz in die „feedwordpress.php“ im Pluginverzeichnis.
Dort steht folgendes:

function syndication_permalink ($permalink = '') {
	if (get_option('feedwordpress_munge_permalink') != 'no'):
		$uri = get_syndication_permalink();
		return ((strlen($uri) > 0) ? $uri : $permalink);
	else:
		return $permalink;
	endif;
} // function syndication_permalink ()

In unserem Fall ruft er also die Funktion „get_syndication_permalink()“ ohne Parameter auf:

function get_syndication_permalink ($id = NULL) {
	list($u) = get_post_custom_values('syndication_permalink', $id); return $u;
}

Als Defaultwert ist NULL angegeben. Ein Blick in den WordPress-Codex verrät, dass er das Benutzerdefinierte Feld des aktuellen Eintrags laden versucht. Das ist logischerweise noch der aus dem Feed importierte Eintrag und daher lädt er eine falsche URL.

Um das Problem zu beheben, einfach den Code oben durch folgenden ersetzen:

function syndication_permalink ($permalink = '') {
	$id = url_to_postid($permalink);
	if (get_option('feedwordpress_munge_permalink') != 'no'):
		$uri = get_syndication_permalink($id);
		return ((strlen($uri) > 0) ? $uri : $permalink);
	else:
		return $permalink;
	endif;
} // function syndication_permalink ()

Die „url_to_postid()“ ist eine WordPress-eigene Funktion. Nun funktioniert es wieder. Darauf muss man erstmal kommen!

C# – PrintDialog.ShowDialog() funktioniert nicht

Bin gerade auf ein sehr merkwürdiges Problem gestoßen, dass doch locker eine Stunde wertvolle Lebenszeit gekostet hat.
Folgender Code:

PrintDialog pd = new PrintDialog();
if (pd.ShowDialog() == DialogResult.OK)
{
    // do nothing

}

Nichts großes, sollte einfach nur so ein Druckerfenster öffnen, wo der Drucker ausgewählt wird etc. Leider öffnete sich der erhoffte Dialog nicht. Der Debugger läuft dahin, aber er führt den ShowDialog() einfach nicht aus.

Wenn ich die Eigenschaft „UseEXDialog“ auf „true“ setze, funktioniert es.
Jedoch wollte ich nicht den XP-Dialog, sondern den anderen. Auch im Netz fand ich keine wirkliche Lösung.
Da diese Codezeilen aus einem bestehenden Projekt stammen, habe ich kurzerhand neue Projekte in den Frameworks 2.0, 3.5 und 4.0 angelegt. Jeweils mit dem Codeschnippsel oben. Und siehe da, es funktioniert problemlos, in jeder Frameworkversion. Nun die Unterschiede gesucht.

Fündig wurde ich den Projekteigenschaften unter „Build“ bzw. „Erstellen“.
Ich muss dazu sagen, dass die Applikation vorher auf einem anderen Rechner mit einem 32-bit Windows entwickelt wurde. So stand hier unter dem Punkt „Platform target:“ (auf Deutsch vermutlich Zielplattform) „Any CPU“.
Stellt die Anwendung hier auf 32-bit (x86) und der PrintDialog() wird hervorragend funktionieren. x64 oder Any CPU funktioniert nicht.
Auf so etwas muss man erstmal kommen, warum das so ist, keine Ahnung.

So habe ich noch mal in der MSDN nachgeschlagen:

This class may not work on AMD64 microprocessors unless you set the UseEXDialog property to true.

Ich bin zwar nun nicht der technisch versierte Mensch, aber für mich hört sich das nach einem Problem mit einem AMD Prozessor an, ich habe jedoch einen Intel (ich lasse es mir aber dennoch gerne erklären).