# Wednesday, May 23, 2007

IsolatedStorage funktioniert bei mir unter Vista x64 nicht wie erwartet. Ich arbeite als Administrator mit ausgeschaltetem UAC. Ich kann in der IsolatedStorage Dateien erzeugen und anschließend wieder lesen. Was ich nicht kann, ist die abgelegten Dateien auslesen oder löschen.

Zuerst habe ich erfolgreich eine Datei LoginTicket.xml angelegt. Eine Datei Test.xml existiert nicht. Bei folgendem Beispiel Code passiert dann etwas seltsames:

IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null);
// liefert keine Einträge:
string[] test = isoStore.GetFileNames("*");
// liefert den richtigen Stream:
IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("LoginTicket.xml", FileMode.Open);
// Wirft wie zu erwarten eine FileNotFoundException:
IsolatedStorageFileStream isoStream2 = new IsolatedStorageFileStream("Test.xml", FileMode.Open);

Bei isoStore.GetFileNames("*") sollte eigentlich auch die Datei LoginTicket.xml im Ergebnis dabei sein. Ist sie aber nicht.

Danach kann ich problemlos die Datei öffnen. Der Inhalt würde auch stimmen. Natürlich kann ich keine nicht vorhandene Datei Test.xml öffnen. An der Stelle bin ich dann schon verzweifelt :).

Was geht da schief?

Wednesday, May 23, 2007 3:49:16 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [1]  | 
# Tuesday, May 22, 2007

Jeff Atwood hat ein paar Zahlen zusammengetragen, die ich nachempfinden kann: Productivity Tip: Upgrade Your Pentium 4

Das Ergebnis einiger Compilation Benchmarks: Weg mit dem P4.

Die aktuellen Core 2 Duo CPUs lassen die letzte Generation der P4 Dual Core Prozessoren wirklich alt aussehen. Subjektiv merke ich das auch deutlich. In der Arbeit werkelt ein Pentium D 950 (oder 940?). Der Heimarbeitsplatz hat schon einen Core 2 Duo E6600. In dem WorldBench - Mozilla 1.4 Benchmark ergibt sich 470 (D950) zu 259 (E6600). Oder ein Faktor von 1,8.

In Kombination mit der WD Raptor HD die zu Hause flitzt, ist es fast schon eine Strafe in die Arbeit zu gehen. Rein hardwaremäßig natürlich :)

Tuesday, May 22, 2007 1:58:13 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Monday, May 21, 2007

Jetzt ist es ja doch schon einige Tage her. Eine vernünftige Entschuldigung für die Verzögerung gibt es ohnehin nicht :)

Am 3.3.2007 bin ich mit meiner Frau Renate vor den Altar getreten!

Die Fotos wurden auch alle am gleichen Tag gemacht. Nur bis wirklich die Zeit gefunden ist, alle Bilder zusammenzutragen. Ähem...

Hochzeit von Renate und Christian

Nix Flickr oder Zooomr. Ganz einfach HTML 4.irgendwas aus IrfanView exportiert.

Monday, May 21, 2007 3:11:31 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Saturday, May 19, 2007

Visual Studio Edition Team Edition for Database Professionals ist (noch) kein Werkzeug zur Datenbank Modellierung. Das Tool spricht eigentlich nur reines T-SQL. Wobei hilft es dann dem Datenbank Entwickler?

Die Datenbank oder genauer das Datenbank Schema wird sehr weitgehend in die Entwicklungsumgebung integriert. Am wichtigsten ist dabei die gelungene Integration in die Versionsverwaltung. Wie der restliche Source Code auch, steckt das Datenbank Schema im Source Control.

Das ging vorher auch schon ansatzweise. Über den Server Explorer konnte man sich alle Objekte aus der Datenbank in ein SQL Server Projekt als Skript importieren lassen. Dabei hat man ein paar Nachteile:

  • Aus den Skripten kann man nicht direkt die Datenbank erzeugen.
  • Die Daten aus der Datenbank stehen nicht zur Verfügung.
  • Die erzeugten T-SQL Skripte enthalten meist mehrere Datenbank Objekte.
  • Änderungen sind schwer nachzuvollziehen.
  • Man hatte keinerlei Unterstützung bezüglich des Inhalts der Skripte.
  • Es ist nicht sichergestellt, dass die Schema Version zum restlichen Code passt.

Natürlich ist es trotzdem wichtig, dass die Datenbank unter Versionskontrolle kommt. Aber bisher war das eher eine Einbahnstraße. Die T-SQL Skripte sind zwar gesichert und versioniert. Man kann mit einiger Handarbeit daraus auch wieder die gewünschte Datenbank erzeugen. Eine echte Integration ist das aber nicht.

Falls man die erzeugenden Skripte einer Datenbank hat, kann man diese einfach mit einem Wizard importieren:

Bei dem Import wird die Information in möglichst kleine Einheiten aufgeteilt, die einzeln als SQL Skripte gespeichert werden.

Eine Testtabelle wird dann wie hier automatisch in unterschiedliche Skripte zerlegt abgespeichert. Dadurch lassen sich Änderungen später leichter nachvollziehen. Der Vergleich mit älteren Versionen im Source Control fällt leichter und ist sinnvoller.

Falls man anschließend an der originalen Datenbank weiter arbeitet, dann ist es nicht praktisch, jedesmal das Schema über diesen Import Wizard zu laden. Dazu gibt es ein sehr mächtiges Tool, den Schema Compare.

Update: Hier geht es weiter: VSTS Database Professional (3)

Saturday, May 19, 2007 7:43:07 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Friday, May 11, 2007

Ursprünglich gab es für die Visual Studio Team System 3 Editionen:

  • Team Edition for Software Architects
  • Team Edition for Software Develepers
  • Team Edition for Software Testers

Mittlerweile hat Microsoft eine weitere Edition nachgereicht, die Team Edition for Database Professionals.

Ich bin kein Database Administrator (DBA) und erst recht kein Database Professional. Dennoch ist die meiste Zeit das SQL Server Management Studio offen, denn das Datenbank Design kann ich leider nicht delegieren. Somit ist jede Tool-Unterstützung willkommen, insbesondere in Form einer integrierten Team Edition.

Der Einstieg in die Team Edition begann mit einer Enttäuschung. Ich habe eine neues Database Projekt angelegt und Add New Table gewählt:

Ups, kein Table-Designer? T-SQL ist nicht meine Muttersprache. Die üblichen Selects und Joins kriege ich schon hin. Meine Tabellen möchte ich aber mit mehr Unterstützung entwerfen. Wir werden später noch erfahren, dass hier ein anderes Konzept verfolgt wird. Hinter vorgehaltener Hand erfährt man auch, dass für spätere Versionen eventuell mehr Unterstützung geplant ist. Im Moment sollten man seine Schema Objekte anders erzeugen.

Wenn auch ohne Designer kriegt man aber bezüglich Schema Visualisierung und Validierung schon einiges geboten:

Schema View

Im Schema View sieht man alle Schema Objekte, die in vielen einzelnen sql-Dateien definiert werden, übersichtlich angeordnet. Änderungen am Schema werden direkt validiert und man erhält entsprechende Warnungen.

Man kann auch die Eigenschaften der Objekte sich im Property Grid darstellen lassen:

Properties

Es hat einige Zeit gedauert, aber irgendwann habe ich aufgegeben dieser Eigenschaften Anzeige das graue Mäntelchen auszuziehen. Es ist nur eine Anzeige. Ändern kann man nichts.

An der Stelle sollte man aber nicht aufgeben. Wie bei vielen Tools, muss man erst die Philosophie verstehen. Dann arbeitet man nicht mehr gegen das Tool, sondern damit. In Kürze werde ich mehr dazu schreiben, wie ich mittlerweile den Datenbank Profi einsetze. (Update: VSTS Database Professional (2))

Friday, May 11, 2007 11:34:29 AM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Thursday, May 10, 2007

Wieso nur müssen Programme ungefragt überall rumtrampeln? Wenn der kleine Programmierer mal nicht alle Nebenwirkungen seiner Installation im Griff hat, dann ist das nicht schön, aber verständlich. Adobe sollte aber mal dazu lernen. Bloatware die langsam startet und sich an versteckte Sektoren der Festplatte krallt.

In der CS3 Suite ist auch der Acrobat 8 dabei. Der hat es in der im Mai ausgelieferten Version noch nicht geschafft, unter Vista x64 zu laufen. Die Installation fragt nach einer dll von der Vista CD und funktioniert dann nicht. Shame on you! Ein guter Vorwand, sich mit XPS anzufreunden :)

Ich habe auch Dreamweaver CS3 mitinstalliert. Eigentlich brauche ich akut nur den Illustrator CS3. Den möchte ich per .NET automatisieren. Also direkt nach der Installation Visual Studio gestartet und das Projekt geladen. Meine Applikation braucht eine Lizenz-Datei. Ist die auch beim Exe gelandet? Doch im Explorer ist Frühling! Alles ist grün. Mit einem kleinen Dw drinnen. Dreamweaver? Für *.cs Dateien? Für *.config Dateien? Für *.apsx Dateien?

ARGH! Die Dateien waren alle schön für Visual Studio registriert. Damit programmiert man. Nicht mit Dreamweaver! Eine Unverschämtheit sich ungefragt so einzunisten.

In den Visual Studio Optionen kann das wieder heile machen. Puh.

Den rote Kringel hat übrigens Photoshop CS3 malen dürfen :)

Thursday, May 10, 2007 11:11:23 AM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Friday, May 04, 2007

Eine der Nebenwirkungen der Softwareentwicklung sind die entstehenden Anwendungen. Es kommt tatsächlich vor, dass die eigene Software verwendet wird. Das erfreut zunächst den Entwickler auch. Für jedes abgeschlossene Projekt gibt es als Bonus oft auch eine neue, spannende Herausforderung.

Doch hin und wieder passiert es: Alte Applikationen müssen erweitert oder angepasst werden. Am Namen erkennt man das Projekt meist noch. Das war doch noch in dieser älteren Version der Entwicklungsumgebung geschrieben? Funktioniert das überhaupt noch? Verstehe ich die Applikation noch? Brrrr.

Wie soll man reagieren?

Den Job hinwerfen? Neuer Arbeitgeber, neue Projekte?

Geht im Moment nicht.

Alles leugnen? Das war doch der andere Programmierer!

Geht nicht, ich war schnell als Übeltäter Urheber identifiziert.

Ausflüchte? Der Source Code ist verloren gegangen!

Glaubt mir keiner. Dafür bin ich zu sehr mit Backups beschäftigt.

Wichtigere Projekte vorschieben?

Das funktioniert sogar. Öfters stimmt das auch. Hilft aber nicht immer.

Gestern hatte ich noch Glück. Die Applikation war nur 2 Jahre alt. Darunter lagen aber noch Teile eines 3 Jahre alten eigenen Frameworks, dass auf dem damaligen Mere Mortals .NET Framework (MM .NET) basiert. Natürlich alles in C# mit dem .NET 1.1 Framework entwickelt.

Visual Studio 2003 läuft nicht mehr unter Vista und MM.NET war für mich eine Sackgasse. Das Framework war zu nahe an seiner Wurzel, dem guten alten Visual Foxpro, und hatte zu wenig Verständnis für .NET selbst. Also habe ich alles nach .NET 2.0 und Visual Studio 2005 portiert und die Abhängigkeiten zu Altlasten minimiert.

Jetzt habe ich einen Tag später die gleiche Funktionalität wie vorher und kann mit den Anpassungen anfangen. Bei der nächsten gewünschten Änderungen an gereifter Software werde ich meine List der möglichen Ausweichstrategien überdenken! :)

Friday, May 04, 2007 10:31:07 AM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Tuesday, May 01, 2007

Früher hieß die Seite "The Daily WTF". Inzwischen ist sie bei Worse Then Failure gelandet. Es geht um die Tragödien die rund um die Software Entwicklung passieren können. Schlechter Code, schlechte Manager oder dubiose Applikationen.

Eine willkommene Abwechslung zu den ernsthaften Blogs. Die Seite war sogar im Blogroll dieser Seite.

*Plonk*

Schluss damit. Inzwischen überfliege ich die typischerweise 3 Beiträge pro Tag nur noch. Wirklich lustig oder lehrreich sind die Beispiele nicht mehr. Der Begleittext wird immer dramatischer, der Inhalt immer öder.

Ich glaube: WTF has jumped the shark.

Ein RSS Feed weniger im Reader :)

Tuesday, May 01, 2007 3:46:35 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Tuesday, April 24, 2007

Ich sichere jetzt seit 2 Wochen meine Daten zu Hause über den Online Backup Dienst Mozy Free. Bis jetzt bin ich sehr zufrieden.

Hier bei CPTec haben wir eine funktionierende Backup-Strategie. Alle wichtigen Daten liegen auf einem File Server mit zwei Raid 1 Arrays. Deren Inhalt wird stündlich mit Robocopy auf einen anderen Server gespiegelt. Zusätzlich sichert CPTec-Backup täglich und wöchentlich auf verschiedene Platten. Unter anderem auch externe USB Platten, die dann ausser Haus gelagert werden. Wir glauben, dass unsere Daten damit sehr sicher gespeichert sind. Zusätzlich können wir auf verschiedene Versionen zurückgreifen.

An meinem Heimarbeitsplatz möchte ich diesen Aufwand aber nicht treiben. Trotzdem sollen wichtige Daten zuverlässig und bequem gesichert werden. Wichtig ist dabei auch, dass die Daten auch wirklich außer Haus gesichert werden. Ein Blitzschlag könnte alle laufenden Festplatten zerstören. Oder es brennt.

Also brauche ich eine Datensicherung über das Internet. Wenn man die maximale Upload Geschwindigkeit einer typischen DSL Leitung mit der Größe heutiger Festplatten vergleicht, kommt man schnell zu dem Schluss, dass man nicht alle Daten auf diese Art sichern kann. Die komplette Medienbibliothek scheidet aus. Auch die Office Installation lässt sich über die Original DVD schneller restaurieren. Aber meine Outlook Postfach, meine Dokumente oder aktuelle Software Projekte können gut über die Leitung rutschen.

Die MP3 Sammlung ändert sich nicht rasant. Die kann man regelmäßig auf eine USB Platte sichern. Meine eigenen Dokumente will ich aber automatisiert gesichert haben.

Bei Mozy installiert man sich einen Backup Agenten, der regelmäßig oder auf Befehl alle veränderten Daten zu den Mozy Servern überträgt. Man definiert die Verzeichnisse, die überwacht werden sollen und achtet darauf, dass man das 2 GB Limit der kostenlosen Version nicht überschreitet. Fertig.

Die genauen Features kann man auf der Mozy Seite leicht nachlesen. Was mich besonders überzeugt hat:

  • 30 Tage Versionsarchiv
  • Zugriff auf das Archiv über das Web
  • kostenlos

Ich kann mir hier in der Arbeit die benötigten Dateien im Browser zusammenstellen. Mozy erzeugt daraus Rar Archiv das ich einfach herunterladen kann.

Mozy Restore

Falls sich jemand für Mozy interessiert. Mit diesem Referral Code 67F8A2 oder diesem Referral Link gibt es gleich 256MB Backup Platz zusätzlich. Für den Neukunden und für mich :). Aber erst nach dem ersten erfolgreichen Backup.

Also los, Daten sichern!

Tuesday, April 24, 2007 4:00:25 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Wednesday, April 18, 2007

Es gibt viele Möglichkeiten, die Felder einer Eingabemaske zu beschriften. Die Labels darüber oder daneben? Fette Schrift oder normal? Rechts- oder linksbündig.

Geschmacksfrage? Sicher auch! Nur nach wessen Geschmack?

James Avery hat ein paar Artikel zu dem Thema in The Art of Label Placement zusammengetragen. Unter anderem wurde untersucht, wie die Augen der Anwender über den Bildschirm gleiten und wie lange sie zur Erfassung der Informationen brauchen. Sein Ergebnis: Nicht fette Beschriftung über dem Eingabefeld.

In den Artikeln steckt aber noch mehr Interessantes. Selber lesen schadet nicht :)

Und wie der Zufall so will, habe ich gerade berichtet, wie toll man jetzt mit ASP.NET seine Controls komplett mit CSS gestalten kann. Also habe ich den die Stylesheets kurz bearbeitet und die Labels umpositioniert. Das war eine Sache von wenigen Minuten. Schon sind in der Applikation alle ASP.NET DetailsViews verbessert.

Vorher:

Nachher:

Ich gebe zu, als ich gerade dabei war, habe ich auch ein wenig an den Farben gedreht. Mehr möchte ich dann aber mit CSS gar nicht machen. Die Idee sollte ja sein, dass ein Designer mit mehr ästhetischem Empfinden diese Aufgabe übernimmt. Nur habe ich gerade keinen Designer zur Hand gehabt :).

Wednesday, April 18, 2007 9:15:21 AM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  |