Jara kommt!

Nachdem nun das Tierheim Ludwigsburg und alle Nachbarn* zugestimmt haben, steht es nun fest: Jara kommt!

Und zwar am Freitag, 11.07.2008, also in 3 Tagen. Übrigens der gleiche Tag an dem ich auch das neue iPhone 3G bekomme. Hammer!

Weil ich mich sehr freue (so müssen sich wohl werdende Eltern fühlen!?!), hier mal wahllos ein paar Hunde-Impressionen:

Mein herzlicher Dank für die grandiose Unterstützung geht an Ivy, Stefie, Michael, Lena, Mario, und die netten Nachbarn.

Letzteren verspreche ich, dass Euch der Hund vermutlich gar nie auffallen wird, weil er so ruhig und sauber sein wird.

Ich freu mich!

* bis auf einen der mehrere Monate in Urlaub ist und deshalb nicht erreichbar ist. Aber der hat selbst einen; was sollte der dagegen haben können?!?

Fehlermeldung bei Verwendung eines UpdatePanel in einem WizardControl

Szenario

Ein ASP.NET-Ajax-UpdatePanel wird innerhalb eines ASP.NET-Wizard-Steuerelements verwendet. Genauer gesagt innerhalb eines WizardStep-Tags.

Fehlermeldung

Es trat beim Aufruf einer ASPX-Seite mit dieser Konstellation folgende Fehlermeldung auf:

Cannot unregister UpdatePanel with ID ‚myUpdatePanel‘ since it was not registered with the ScriptManager. This might occur if the UpdatePanel was removed from the control tree and later added again, which is not supported.

Parametername: updatePanel

Ursache

Wie ich nach langem Hin-und-her herausgefunden habe war folgender Code die Ursache (ja, Visual Basic.NET, shame on me, der Kunde will das so):

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
MyWizard.DisplaySideBar = False
End Sub

Ich hatte also im Load-Ereignis der Seite, die das Wizard-Steuerelement enthalten hat die DisplaySideBar-Eigenschaft geändert.

Dies hat unmittelbar zu der oben beschriebenen Fehlermeldung geführt. Andere Eigenschaften, wie z.B. ActiveStepIndex, hatten nicht zu dem Fehler geführt und korrekt funktioniert.

Lösung

Eine Lösung die sich für mich als benutzbar erwiesen hat war, dass ich die DisplaySideBar-Eigenschaft deklarativ gesetzt habe. Also direkt im ASPX-Markup.

Das war aber für mich ungeeignet, da ich die Eigenschaft im Design-Modus auf True haben wollte und nur zur Laufzeit auf False.

Deshalb habe ich nach etwas längerem Ausprobieren herausgefunden, dass wenn ich die DisplaySideBar-Eigenschaft zu einem „früheren“ Zeitpunkt setze, diese korrekt funktioniert, ohne einen Fehler zu produzieren.

Und zwar im PreRender-Ereignis des Wizard-Steuerelements selbst:

Protected Sub MyWizard_PreRender(ByVal sender As Object, ByVal e As System.EventArgs)
    MyWizard.DisplaySideBar = False
End Sub

Damit hat alles wie gewünscht funktioniert.

Anekdoten – Das Geburtstagsgeschenk

Damals waren wir wohl so 10 oder 11 Jahre. Mein Nachbar und Kumpel Markus und ich. Wir haben viel zusammen gemacht, was Jungs in dem Alter halt so machen.

Markus hatte nur einen Fehler, und der kam immer dann zum Vorschein, wenn der Kalender sich auf meinen Geburtstag im März zubewegte:

Jedes Mal, wirklich jedes Mal, hat er sich so gefreut, dass er zu meiner Geburtstagsfeier eingeladen war, dass er mir unbedingt erzählen musste, was er mir schenkt.

Für mich als den Beschenkten war das natürlich doof. Ich wollte ein verpacktes Geschenk haben und eben nicht wissen, was wohl drin ist. Sonst ist ja die ganze Vorfreude weg.

Nichts zu machen, Markus war da zuverlässig. Jedes Mal im Vorfeld alles ausplaudern.

Als es sich eines Jahres wieder auf meinen Geburtstag zuging, sagte ich Markus, dass er dieses Mal, sollte er mir wieder erzählen was ich bekomme, die Geburtstagseinladung entzogen bekäme.

Und wie kam’s? Natürlich entfuhr es im wieder „Du bekommst ein Modellflugzeug-Bausatz„.

Er hat mir wohl nicht geglaubt gehabt. Ich weiß auch nicht mehr genau wie und warum, aber ich habe es tatsächlich geschafft, dass er wieder ausgeladen wurde. „Diesmal bist Du nicht eingeladen“ oder so ähnlich sagte ich ihm.

Ich glaube er war traurig.

Wir feierten dann, wie Kinder halt so Kindergeburtstag feiern, allerdings ohne Markus. Nach einiger Zeit klingelte das Telefon. Es war die Mutter von Markus, die fragte ob er doch noch kommen dürfe. Hehe.

Schlussendlich war Markus dann doch noch auf meiner Geburtstagsfeier dabei, ich packte ein Geschenk von ihm aus („Oh, ein Modellflugzeug-Bausatz, das ist ja eine Überraschung“), und es war bestimmt noch ein schöner Nachmittag, dieser 9. März Anfang der 1980er-Jahre.

Ich mag keinen Urlaub

So lange ich denken kann (ja, ja…), bin ich gerne da wo ich bin. Ich fühle mich wohl in meiner vertrauten Umgebung. Keine Sehnsucht nach Ferne, fremde Länder, und dergleichen. Nix.

Ich mag keinen Urlaub

Jeder den ich sonst so kenne ist da anders; jeder geht gerne in den Urlaub. Ja länger je besser, ferne Länder, lange Urlaube, am Besten mehrmals im Jahr.

Bei mir ist das nicht so. Mir reicht schon aus, z.B. ein mal im Jahr für drei bis vier Tage zum Klettern ins Frankenjura zu fahren. Bin ich länger weg, zieht’s mich gedanklich schon wieder heim. In meine Umgebung, zu meiner Arbeit, zu meinem gewohnten Umfeld.

Bisher kenne ich niemand, dem es auch so geht.

Wenn wir jetzt mal definieren, dass „normal“ das ist, was die Mehrheit der Leute macht, dann bin ich glaube ich „unnormal“. Und daran sind auch schon ein paar für mich wichtige Beziehungen kaputt gegangen. Ich frage mich dann oft „bin ich wirklich unnormal? Und sollte ich was daran ändern?“.

Aber andererseits, warum sollte ich etwas machen (bzw. lernen etwas zu mögen), was mir wenig Spaß macht?

Ich fürchte, wenn ich mal in 20 Jahren zurückschaue, ärgere ich mich ggf. wenig Urlaub gemacht zu haben und ggf. viel verpasst zu haben. Andererseits sagte mir eine Bekannte gestern „Verpassen tust eh immer was, egal was Du machst. Und wenn Du Dich wohl fühlst bei dem was Du machst, dann ist das OK.“.

Epilog

Soweit meine sonntäglichen Gedanken zum Wochenanfang.

Wie sieht das bei Euch aus? Gibt’s tatsächlich Leute die ähnlich denken wie ich, oder bin ich eine Ausnahme?

Strange

Meine (sehr liebe!) Nachbarin hat heute das Fass zum Überlaufen gebracht. Und zwar bezüglich der Taste auf der Tastatur deren Aufdruck meist „Strg“ lautet.

Ich habe ja schon viele kranke Bezeichnungen gehört, aber ihre hat den Vogel abgeschossen. Deshalb mal hier die Abwandlungen die ich schon gehört hab, der letzte Eintrag in der Liste ist von ihr:

  1. „Steuerung“ – Korrekt.
  2. „String“
  3. „Strong“
  4. „Strange“

Ohne Scheiß – Sie hat „Strange“ gesagt. Strange. Aaaaaaaaah. Dabei kann sie gar kein Englisch.

„Ich habe Strange, Alt und Entf gedrückt. Dann ging’s wieder“

Kennt Ihr, geschätzte Leserinnen und Leser noch weitere solch toller Bezeichnungen?

Anekdoten – Frische Milch

Während der Semesterferien, nach dem ersten Semester meines Studiums an der Hochschule Esslingen („Mikroelektronik“ hieß der Studiengang), so ca. 1994, habe ich in den Ferien gearbeitet. Logisch.

Ich war in Eschenbach bei so einem Satelliten-Schüssel-Vertrieb.

Einer meiner Arbeitskollegen, ein ehemaliger Schulkollege zufälligerweise, hat sich zum Mittagessen oft was im Edeka um die Ecke gekauft. Frische Milch war’s an diesem Tag, natürlich die gute von Landliebe aus der Glasflasche.

Als ich nachmittags an seinem Platz vorbei lief hatte er den Liter Milch zu 3/4 ausgetrunken. Aber irgendwas war komisch…

Nachdem ich mir die Milch genauer angeschaut habe, sprach ich ihn an: „Du Frank“ (er hieß Frank). „Du Frank, sag mal, warum trinkst Du eigentlich fast einen ganzen Liter Sahne auf einmal?“

Seine Antwort?: „Oh, und ich hab mich schon gewundert, dass die Milch so schön süffig ist“.

Der Kerl hatte tatsächlich Sahne gekauft und für Milch gehalten und fast komplett ausgetrunken, ohne zu wissen, dass es Sahne war. Auch nachdem ich es ihm gesagt hatte, schien es ihn nicht groß zu wundern. War ein seltsamer, ferngesteuerter Mensch gewesen. Nett, aber nicht von dieser Welt.

Fehlermeldung „Der Name components wird bereits von einem anderen Objekt verwendet“ im Windows Forms Designer

Verhalten

Beim Öffnen des Windows Forms Designers kommt eine Fehlermeldung

„Der Name components wird bereits von einem anderen Objekt verwendet“

Ursache

Der Designer hat wohl was zerschossen. Genaue Ursache unbekannt.

Lösung

Auf dieser Seite schreibt Microsoft selbst:

So beheben Sie diesen Fehler:
Notieren Sie sich den genauen Wortlaut der Fehlermeldung, und wenden Sie sich an den Microsoft-Produktsupport.

Das ist natürlich Quatsch. In meinem Fall habe ich festgestellt dass in der Designer-Codedatei Folgendes drin stand:

private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.components = new System.ComponentModel.Container();

Also zwei Mal die selbe Zeile.

Nachdem ich eine davon gelöscht habe und das Projekt neu kompilierte, ging’s wieder.

DynDNS

…da war da noch, so 2000/2001, dass ich mit H. zusammen saß und er mit einer Idee aufkam:

Hey, ich hab da ne Idee für ein cooles Programm!

Und Harald erzählte mir die Idee; es ging um Server, IP-Adressen, dynamische Client-IP-Adressen, Internet, usw. Am Ende war ich auch ganz begeistert.

Wir fingen an, konkret Pläne zu machen wann wer war entwickeln könnten, wo wir den Dienst hosten. Und ganz am Ende überlegten wir uns noch einen Namen.

Der Name klang cool.

Zur Sicherheit recherchierten wir noch nach dem Namen bei Google.

Und, o Schreck, es gab den Namen schon 🙁

Nicht nur dass, die Firma mit dem Namen hat exakt die Idee umgesetzt, die wir selbst hatten. Und, noch schlimmer, es gab schon dutzende Nachahmer.

Das war ein echter Schock, denn, wir hatten DynDNS erfunden!

Was waren wir entsetzt! Die gleiche Idee, genau so umgesetzt wie wir es wollten und sogar der gleiche Name. Am Ende haben wir dann ziemlich gelacht. Wenn Ihr also mal DynDNS benutzt, denkt an uns; wir hätten es erfunden, wäre es noch nicht da gewesen…

HOWTO: Bedingte Seriendruckfelder in Microsoft-Office-Word 2007

Aufgabenstellung

In Microsoft-Office-Word 2007 (und früheren Versionen) soll beim Seriendruck von Serienbriefen abhängig von einer Bedingung jeweils ein anderes Seriendruckfeld ausgegeben werden.

Dabei soll die Bedingung selbst auch aus einem Seriendruckfeld gebildet werden.

Lösung

Wie hier angedeutet ist die Syntax folgende:

{IF { MERGEFIELD meinfeld1 } > 0 "{ MERGEFIELD meinfeld2 }" "{ MERGEFIELD meinfeld3 }" }

(Der gesamte Ausdruck ist einzeilig, doppelte Hochkomma sind über UMSCHALT+2 einzugeben)

Folgende Elemente haben jeweils folgende Bedeutung:

  • { MERGEFIELD meinfeld1 } > 0 ist die Bedingung, in dem Fall wird geprüft ob das Seriendruckfeld „meinfeld1“ einen Wert enthält der größer Null ist. Hier sind natürlich beliebige Vergleiche möglich.
  • { MERGEFIELD meinfeld2 } ist das Feld, dessen Wert ausgegeben wird, wenn die Bedingung zutrifft.
  • { MERGEFIELD meinfeld3 } ist das Feld, dessen Wert ausgegeben wird, wenn die Bedingung nicht zutrifft.

Ich hoffe der Tipp hilft mir und anderen in der Zukunft etwas.