Ich habs aufgegeben

Seit Jahren baue ich diese Seite mit einem CMS, das ich mir selbst gebaut hatte. Hintergrund war, daß ich auf der alten Web-Präsenz keine Skripting-Fähigkeiten und Datenbank hatte. Daher lief die Datenbank bei mir zuhause. Bei einer Änderung wurden dann neue statische XML Seiten erzeugt, die auf den Server hochgeladen wurden. Das klappte auch soweit ganz gut, nur wollte ich irgendwann ein paar neue Features haben. Zum Beispiel:

  • RSS Unterstützung
  • Verbesserter Support für Bilder
  • Editieren auch von unterwegs. Also ohne DB. Meine Idee dabei war, einen Snapshot der DB in eine XML Datei zu packen und dann unterwegs (auf dem USB-Stick) dabeizuhaben. Zuhause dann einfach beide Datenquellen synchronisieren.

Das ganze ist in C# geschrieben.

Zunächst sah auch alles recht gut aus. Ich habe einen Teil des Frontends neu gebaut (mit verschlüsselten Config-Dateien und allem Schickimicki) und habe herausgefunden, wie man mit den DataSets und DataAdapters in NullKommaNix die gesamte Datenbank in eine Heavy-Weight C# Objekt abbildet.
Dann ging aber der Streß los. Die Daten in der DB sind bei mir als kodierte Byte-Streams abgelegt. Generiere ich nun aus dem DataSet mit der LoadXml() Methode ein XmlDocument, landet der Byte-Stream Base64 kodiert in der Xml-Datei. Kann ich ja noch akzeptieren, ich durchwühle einfach dieses Objekt und führe die Konvertierung durch. Das ging noch, führte aber immer beim letzten(!) Eintrag der Knotenliste zu einem Absturz. Ich debugierte hier ewig herum, überlegte dann - scheiße, was mach ich hier eigentlich - und installierte WordPress :-)
Also, das alte CMS ist vorerst offline. Ich habe auch einfach nicht mehr die Zeit, mich hier stundenlang (unbezahlt ;-) ) durch die Doku zu wühlen. Jetzt suche ich Freiwillige, die mir das Template portieren hrhr.

Grausamen Bug behoben

Den schreckliche No-Go Bug hier in meinem C# CMS habe ich endlich gefunden. Ich mache das nämlich mit dem vermeintlich prima simplen Data-Binding Mechanismus. Dagegen ist prinzipiell zwar nichts einzuwenden, aber durch die Komplexität dieser schwergewichtigen Objekte gibt es doch ein paar böse Fallstricke. So habe ich z.B. einen Handler, der den geschriebenen Text in ein Datenbank-freundliches Byte-Array konvertiert und vice versa. Etwa so:

private void b_Format(object sender, ConvertEventArgs e) {
      if(e.DesiredType != typeof(string)) return;
      if(e.Value == DBNull.Value) {       
        return;
      }
      byte[] bval = (byte[]) e.Value;            
      e.Value = System.Text.Encoding.Default.GetString(bval,0,bval.Length);
}

Der Witz liegt nun darin, daß man auch den DBNull Wert testet! Falls man das nicht macht, geht die Funktion schief und die Position des CurrencyManagers wird nie aktualisiert. Es gibt aber auch keine Exception, man hat also keinen Plan, was da hinter den Kulissen passiert. Das sind halt so die finsteren Ecken von .NET.

Douglas Coupland : Microserfs

Punkte: 12a Hach und ich dachte daß das Teil mindestens so schwer verdaulich ist wie der
Vorgänger (Gen. X). Stimmt aber gar nicht! Vielleicht liegt es auch nur daran,
daß ich demselben Beruf nachgehe wie die Hauptakteure. Hier wird von der
Innenseite erzählt (nicht planlos von der Außenseite, siehe Mankell eins drunter).
Wer sich überzeugen will daß Coder nun doch keine sozial behinderten
Brillenträger sind ist hier genau richtig. Interessant am Rande übrigens die
eher beiläufige Darstellung der Arbeitseinstellung. Ich habe dasselbe bei
meinem Besuch in Singapur festgestellt.

Henning Mankell : Die Brandmauer

Punkte: 10b Hier hat er wieder alles richtig gemacht, so daß frau zufrieden ist.
Der Komissar ist zwar scharfsinnig, hat aber nach wie vor ein deppertes
Privatleben, in Schweden ist das Wetter schlecht und die Polizisten haben
immer noch kein Nahkampftraining.
Da lacht die Zielgruppe. Ein verirrter männlicher Leser (ich) lacht auch,
und zwar über die heiteren globalen Verwicklungen, in denen die Handlung
wieder einmal drinsteckt. Master Wallander muß ja nie irgendwelche
einfachen Kriminalfälle lösen, nein, eine mittelprächtige internationale
Verschwörung gehört mindestens genauso hinein. Diesmal geht es also
um das Netz der Netze, daß durch die Schurken zu Fall gebracht werden soll.
Das alles um einen globalen Finanzcrash herbeizuführen, der wiederum.. hmm..
egal, jedenfalls böse böse und wir müssen sie stoppen. Die Idee mit dem
Bankautomaten ist im Gegensatz zu dem restlichen Unfug nicht so weit
hergeholt. Ein paar Leute vom CCC (Ulm?) haben es vor einiger Zeit geschafft,
Bankautomaten gegeneinander Schach spielen zu lassen. Oder sowas in der Art.
Wie dem auch sei, leicht vedauliche Kost, professionell präsentiert.

Sven Regener : Herr Lehmann

Punkte: 14A Oh Gott! Ich bin völlig begeistert. Kurioserweise weiß ich nicht so genau, weshalb.
Man sitzt in der Bahn und wundert sich warum ist das eigentlich alles so still und .. wo sind denn alle? Achso, wir stehen schon seit 5 Minuten an der Endstation. Jetzt schnell mal aussteigen bevor ich wieder zurück nach Harburg gefahren werde. So erging es mir bei der Lektüre. Ich bin völlig eingetaucht, war ganz weit weg. Das passiert nur bei ganz wenig Büchern und die sind dann auch entsprechend. Erheiternd kommt noch dazu, daß ich einige der Schauplätze des Buches in Kreuzberg auch kenne, da meine Kusine dort wohnt. Ach was erzähl ich, das ist einfach umwerfend.

ärger mit DVI?

Muß nicht sein! Ich hatte ein merkwürdiges Problem: Mit Verwendung des DVI Anschlusses ging der TFT manchmal nicht an. Kein Signal, LED auf Standby. Klemmte ich den CRT an, oder mit D-SUB am TFT ging es. Ein paarmal hin und herschalten in den Bildschirmeinstellungen, umstöpseln auf DVI, dann klappte es irgendwann. Rechner aus, neuer Tag, dasselbe Problem von vorne. Ich dachte ich werd bald wahnsinnig. Dann hatte ich auf einmal die zündende Idee, ein anderes DVI-Kabel auszuprobieren. Husch, weg war das Problem. Gottseidank bin ich kein Hardware-Debugger, der Job wär zu mystisch für mich.

Ouch!

Kaum ist der Anleger in Teufelsbrück wieder heil, kommt so ein Kerl angefahren und nagelt den Blankeneser über den Haufen. Wenn die Naturgewalten so zuschlagen, bleibt eben kein Auge trocken. Natürlich besonders pikant, wenn es gleich wieder ein Tanker ist.
Nachtrag: Hier sind ein paar Fotos davon.

1xLustig u. 1xKonstruktion

Selten so gelacht: AngryAlien. Bunnys spielen berühmte Filma nach: in 30 Sekunden!

Blitzartiger Entwurf für eine neue Konstruktion. Die alte ist verschlissen :-). Nein - ich habe einfach den Fehler gemacht, unbehandeltes Holz zu verarbeiten. Das hat nämlich über die Jahre die Eigenschaft, auszustrocknen und sich in dem Zusammenhang zusammenzuziehen. Bis die darin enthaltenen Schrauben irgendwann im Trockenen hängen und ihre stabilitätsgebende Funktion immer mehr vernachlässigen. Ein weiteres wichtiges Konstruktionsmerkmal: Der Kastenbau. Unbedingt notwendig, um die unerwünschten Belastungs-Verformungen der tragenden Bauelemente zu reduzieren.

Aufforderung zur Begehung von Straftaten

Im Ernst: jetzt habe ich Post im Briefkasten von meinem Internet-Provider, der mir mitteilt, daß sich meine Bandbreite ohne mein monetäres zutun von 3 auf 5MBit down und von 192 auf 500kBit upstream erhöht. Ja was soll ich denn damit?! Die spackigen Spiegel-Online Seiten noch schneller laden? Bleibt doch nur Dinge zu laden, die groß, schwer und irgendwie nicht so richtig erlaubt sind. Pfui, pfui, pfui!!