Thomas Wölfers Baustatik-Blog

Thomas Wölfers Baustatik Blog

Wer schon immer mal einen Schreibtisch bei D.I.E. sehen wollte...


Hier mal etwas nachdem ich andauernd gefragt werde bisher tasächlich schon einmal gefragt wurde: Wie sieht wohl der Schreibtisch eines Programmieres bei D.I.E. aus?

So:

Mein Hauptrechner ist der Laptop, ein Acer TravelMate 800. Da hängt noch ein bisschen Peripherie dran, so die optische Maus, eine zusätzliche externe Festplatte, der DVD-Brenner ein paar Boxen und ein zweiter Monitor.

Der Laptop läuft mit 1400x1050 Pixeln Auflösung, der externe Monitor mit 1280x1024. Ich versuche mich aber schon seit geraumer Zeit dazu zu überreden einen größeren externen anzuschaffen... :-)

Wer nun selbst keine Software entwickelt dem ist vermutlich nicht klar wofür der ganze Bildschirmplatz benötigt wird. Das ist so:

Auf dem Laptop-Monitor läuft normalerweise die Entwicklungsumgebung - das ist das Programm mit dem der Quellcode für die Statik-Programme geschrieben wird, und mit dessen Hilfe auch die Fehlersuche in den Statikprogrammen stattfindet. Diese Umgebung hat so viele Fenster, Menüs und Toolbars das nicht viel Platz für den Editor bleiben würde wenn alle auf dem einen Monitor wären. Der Editor ist aber das wichtigste Werkzeug: Damit wird der Quelltext angezeigt.

Darum sind einige Fenster auf dem zweiten Monitor. Dazu gehört zum Beispiel die Projektverwaltung, die schon allein ein recht großes Fenster braucht: Im aktuellen Projekt befinden sich etwas über 6000 Dateien in rund 900 Ordnern - da kann man schon ein bisschen Übersicht gebrauchen :-).

Während der Fehlersuche muss das eigentlichen Programm natürlich auch noch irgendwo laufen - das passiert auch auf dem 2. Monitor. Auf dem Foto erkennt man (was man so erkennen nennt...) den Debugger auf dem Laptop und Xfalt auf dem zweiten Monitor.

Im Glas ist übrigens Apfelsaft...


Weblogs und Kommentare


Nachdem ich in letzter Zeit mehrfach Mails mit Fragen und Anregungen zum Blog erhalten habe würde ich ganz gern nochmal auf ein Feature des Blogs eingehen: Unter jedem Eintrag gibt es links einen Link mit der Beschriftung 'Kommentare'.

Wenn Sie da draufklicken können Sie direkt einen Kommentar oder eine Frage zum Eintrag hinterlassen. Dadurch ist dann Text und Kommentar beieinander... Ich kann von hier aus sehen wenn ein neuer Kommentar geschrieben wurde und beantworte die dann auch direkt: Die Antwort steht dann unter dem Kommentar. Auf diese Weise haben alle was davon, und ich muss die Antwort nicht mehrfach per Mail verteilen. :-)

 


DVD Brenner


Ich habe gerade einen externen DVD Brenner gekauft um einfacher Backups machen zu können: Die Gesamtmenge an zu sichernden Daten ist eben doch schon mehr als auf eine CD passt. Ich habe den Kauf eines DVD-Brenners aber schon seit Monaten vor mir hergeschoben weil ich dachte die Dinger kosten ein Arm und ein Bein. Stimmt aber gar nicht.

Interne DVD-Brenner gibts schon ab 80 (!) Euro, externe ab 150. Die Medien gibts für unter 1 Euro pro Stück. :-)

Erstaunlich.

Mein Backup-Problem ist damit auf lange Sicht geklärt.

[Update und Zusatz]

Die Art und Weise wie die Hersteller solcher Geräte mit Ihren Kunden umgehen ist aber ebenso erstaunlich. Das Gerät (ein Lite-On) kommt in einem Karton. Darin befindet sich der (unvermeidliche und nervige) Aku, der Brenner, eine Art Stütze für Leute die den Brenner auf der Seite stehend betreiben wollen, eine Betriebsanleitung und ein paar CDs.

Die Betriebsanleitung besteht aus einem Stück Papier auf dem in diversen Sprachen beschrieben ist wo man die einzelnen Kabel reinstecken muss. Das ist zugegebenermassen bei USB relativ einfach.

Damit ist die Betriebsanleitung aber auch beendet. Stellt sich die Frage: Wie brennt man denn nun? Naja - vermutlich ist da Software auf den CDs. Folgende CDs liegen drin - ohne jeden Kommentar oder irgend eine Erläuterung:

- Eine CD mit der Beschriftung: 'PowerDVD' sowie ein paar Erklärungen. Was ein Power-DVD Programm tut steht aber nicht drauf. Soll man wohl ausprobieren.

- Eine CD mit der Beschriftung 'MyDVD'. Ausser dieser Beschriftung steht noch drauf das man irgendwelche Intel-Treiber entfernen soll bevor man die CD installiert. Warum man die CD installieren sollte - bzw. was ein 'MyDVD' überhaupt ist - steht nicht drauf.

- Eine CD mit der Beschriftung 'LiteOn'. Sonst steht nichts drauf. (Weil es auch ein LiteOn Brenner war hielt ich das für die Treiber-CD. Irrtum: Es war nur ein leeres DVD Medium.) :-)

- Eine CD ohne jegliche Beschriftung.

Ich find das unglaublich. Hat dann auch eine Stunde gedauert bis ich herausgefunden hatte was man nun eigentlich installieren muss um DVDs zu brennen. (Auflösung: MyDVD).

Gebrannt habe ich übrigens ein Windows Longhorn Preview. Das werde ich dann am Abend ode übers Wochenende mal installieren...

 


Richtiges werfen von Exceptions


Vorweg: Beim nächsten mal wird es hier wieder etwas Bauingenieurs-lastiger werden; zumindest etwas weniger aus der Programmier-Ecke. Aber eben erst beim nächsten mal. :-)

Wenn Sie einen RSS-Reader verwenden, und sich für den Programmier-Kram nicht interessieren: Abonnieren Sie einfach nicht den kompletten Feed, sondern nur die Kategorien die Sie interessieren. (Die RSS-URLs der Kategorien dazu stehen rechts am Rand.)

Zu den Exceptions:

ICommand cmd = CommandManager.GetCommand( idCommand);

try
{
   UndoManager.BeginCollection("FooBarCommand");

   cmd.Execute( context);

}
catch( Exception ex)
{
   UndoManager.ForgetCollection();
   throw ex;
}
UndoManager.EndCollection();

Dieser Code - es geht im Wesentlichen um das 'throw ex' - ist eigentlich immer falsch.

Der Punkt dabei ist der: Durch das 'throw ex' landet der eigene Stack-Trace im Exception-Object, die Original-Information geht verloren. Eigentlich muss man statt dessen einen von zwei anderen Wegen gehen.

1. Es ist wichtig das man selbst im Stack-Trace der Exception auftaucht. M.a.w.: Man ist ein relevanter Teil der Exception-Chain.

In diesem Fall sollte man die Exception in eine eigene Exception verpacken und die Original-Exception in der InnerException der neuen Exception aufbewahren. Dadurch wird die Exception spezieller und gleichzeitig bleibt die Origial-Information (in der InnerException) erhalten:

catch( Exception ex)
{
   throw new MySpecialException( ex);
}

2. Man hat die Exception nur gefangen um aufräumen zu können, man ist aber kein wichtiger Teil der Exception-Chain. (So wie im Beispiel am Anfang.)

In diesem Fall sollte man eben aufräumen was es aufzuräumen gibt, und dann die unverönderte Exception - mit ihrem Original-Stacktrace - erneut werfen:

catch( Exception)
{
   UndoManager.ForgetCollection();
   throw;  // <- kein 'ex' !
}

Dank an Brad Wilson


Interessante Bauwerke und Strukturen


Haben Sie mit unseren Statikprogrammen in letzter Zeit interessante Berechnungen angestellt? Eine Diplomarbeit geschrieben? Vielleicht auch einfach nur sehr umfangreiche Platten- oder Rahmentragwerke berechnet? - Ich möchte gern von Ihnen hören! Letztlich würde ich gerne eine kleine Sammlung interessanter Bauwerke aufstellen - mit einem Bild, und ein paar weiteren Angaben: So auch natürlich die des Ingenieurs oder Büros.

Bitte melden Sie sich einfach kurz bei mir per Mail oder einfach hier im Log per Kommentar.

Achso - und eh ich das vergesse: Würden Sie gern im Auszug aus unserer Referenz-Liste stehen? Bitte einfach per Mail melden... :-)


Wahre Geschichten: Die Programmierung der Kfz-Steuer


Ich hatte gestern abend ein interessantes Gespräch mit einer Dame die als Programmiererin für das Finanzamt arbeitet. Sie arbeitet in einem Team von 7 Personen die für die Programmierung der Kfz-Steuer zuständig ist.

Man stellt sich ganz unweigerlich die Frage: Was zum Henker gibts bei der Kfz-Steuer zu programmieren? Und genau das habe ich gestern abend auch gefragt. Die Antwort stellt zumindest eines klar: Der Verschwendung von Steuergeldern ist offenbar wirklich nichts entgegenzusetzen.

Die Sache ist: Die Kfz-Steuer ist eigentlich eine ganz einfache Sache. Wird das Auto angemeldet werden die Daten einmal erhoben - und damit hat sich die Sache eigentlich. Die Berechnung der Steuer ändert sich zwar hin- und wieder aufgrund verschiedener Parameter, und auch das Formular auf dem die zu zahlende Steuer ausgewiesen wird ändert sich hin- und wieder leicht, aber diese Aenderungen sind nur marginal. Nichts, was ein einzelner Programmierer mit 'C' oder C++ nicht auch an einem Nachmittag erledigen könnte. Letzten Endes sind das ja nur zwei Zettel.

Um genau zu sein: Die Gestaltung und Formatierung des Ausdruckes würde kein normaler Mensch 'programmieren' sondern eben einfach mit irgend einem Layout-Programm zusammenbasteln oder im schlimmsten Fall von Hand in HTML entwerfen. Aufwand: 10 Minuten.

Nur ist es eben so das beim Finanzamt eben alles anders ist: Statt die Dinge in einer Hochsprache oder mit einem Layout-Programm zu erledingen wird alles von Hand in Assembler (!) programmiert. Um den Ausdruck zu ändern wird kein Layout verändert, sondern es wird ein neuer Druckertreiber programmiert. Das ist ungefähr so, als würden Sie eine FEM-Berechnung mit 25.000 Elementen unter Verwendung von Papier und Bleistift durchführen.

Und so kommt es dann das da 7 Leute das ganze Jahr an einer Aufgabe arbeiten, die auch mit einer großzügigen Auslegung einfach nicht mehr als einen Mann-Monat in Anspruch nehmen sollte.

Es geht aber noch weiter: Diese Leute machen die Kfz-Steuer 'programmierung' für ganz Deutschland. Außer für NRW und Schleswig-Holstein. Da sitzen dann nochmal andere Leute, die genau das gleiche machen - nur ein bisschen anders. Es gibt natürlich keinen sinnvollen Grund dafür, weshalb zwei Bundesländer die Kfz-Steuer unbedingt gesondert abrechnen müssen - aber so ist es nunmal.

Das ist, ganz nebenbei bemerkt, auch der Grund dafür, weshalb die Kfz-Steuer in NRW und Bayern für das genau gleiche Fahrzeug gerne einmal unterschiedlich ausfällt: NRW und Bayern rechnen und runden ein wenig anders. Darum kommt am Ende eine leicht unterschiedliche Summe raus, beim Kfz-Steuer programmieren.


Ein paar interessante Zahlen von unserem Mailserver


Anzahl versendeter Mails seit Beginn der Messung: etwas über 4.000.000
Anteil von erkannter und gefilterter Spam bei eingehender Mail: etwa 12 %
Anzahl eingehender und unschädlich gemachter Viren pro Stunde: knapp 5
Anzahl bekannter Viren im Antiviruspaket: knapp 86.000

Sie haben doch hoffentlich einen Mailserver mit Antivirus-Filter? Oder zumindest ein Antivurs-Programm dessen Viren-Informationen regelmäßig erneuert werden?

Kostenlose Antiviren-Programme:


D.I.E. und die Downloads der Baustatik-Programme - welche Teile braucht man ?


Im Download-Bereich von www.die.de finden Sie ja immer die aktuellen Versionen aller unserer Statikprogramme zum download. Ich stelle aber hin und wieder fest, das die Art und Weise in der wir die Downloads da anbieten zu ein wenig Verwirrung führt. Ich will mal versuchen für ein wenig Entwirrung zu sorgen...

Im wesentlichen gibt es zwei unterschiedliche Arten von Downloads: Die Software als Einzelprogramme und das CD-Image, mit dem alle Statik-Programme auf einen Schlag heruntergeladen werden können. Mein Empfehlung vorweg ist die: Laden Sie immer nur das CD-Image herunter und sonst gar nichts.

Jetzt zur etwas ausführlicheren Erklärung. Im Download-Bereich finden sich Download-Möglichkeiten für alle Einzelprogramme der Statiksoftware, jedes Programm kann dabei einzeln heruntergeladen werden. Baustatik-Software Stück für Stück, sozuagen. Das ist ganz praktisch wenn man mit nur einem einzelnen Programm arbeitet, denn diese Downloads sind entsprechend klein. Dafür ist die Sache aber auch ein bisschen kompliziert, denn es gibt auch noch Komponenten die von mehreren Programmen verwendet werden. Und davon gibts außerdem noch zwei Sorten. Diese gemeinsam genutzten Komponenten aller Baustatik-Programme befinden sich in den Downloads 'Systempaket' und 'Basispaket'. Das Systempaket enthält gemeinsam genutzte Komponenten die von Microsoft stammen (und sich praktisch nie ändern), das Basis-Paket enthält gemeinsam benutzte Komponenten von uns - und die ändern sich hin und wieder einmal.

Um also ein einzelnes Programm zu installieren braucht man das 'Systempaket', das 'Basispaket' und eben das Programm. Gibt es ein Update, dann muss man hin- und wieder das Systempaket neu herunterladen - und eben das Programm.

Dummerweise ist es eben so, das diese 'gemeinsam' genutzten Komponenten eben genau das sind: Gemeinsam genutzt. Sie werden also von mehreren Programmen verwendet. Das hat eine gemeine Auswirkung: Wenn Sie ein Update von einem Programm installieren und in diesem Zuge auch das Systempaket aktualisieren, dann kann es passieren das ein anderes Programm - eins das sie nicht upgedatet haben - mit dem aktualisieren Systempaket nicht mehr läuft: Sie müssen dann also auch dieses andere Programm updaten, obwohl sich daran gar nichts geändert hat.

Und dann gibt es noch kleinere Patches die wir hin und wieder in Form von .ZIP-Dateien zur Verfügung stellen. Die muss man einzeln von Hand extrahieren und ins richtige Verzeichnis kopieren... :(

Wer sich also ganz sicher ist das er weiss was er tut, der kann natürlich das Update mit Einzelprogrammen, Basispaketen, Patches und allen Quer- und Zwischenbeziehungen durchführen.

Wer sich aber lieber mit interessanteren Dingen beschäftigt als mit dem Aufspüren irgendwelcher obskurer Fehler die aus einem Update hervorgehen, der verwendet einfach das CD-Image.

Im CD-Image (cd-rom.exe) befinden sich alle Programme, die Inhalte vom System- und Basispaket und alle Einzelpatches - und zwar in den richtigen, zusammen passenden Versionen. Das ist also die gerade aktzuellste Zusammenfassung der Software: Genau das, was Sie bei einem Update herunterladen und installieren sollten.

Und wo ich gerade beim Thema Updates bin: Es gibt einen separaten RSS-Feed für Ihren RSS-Reader mit dem Sie immer auf dem aktuellen Stand zum Thema Updates der Statikprogramme bleiben. :-) Den finden Sie hier rechts auf der Seiten bei den Kategorien.