Thomas Wölfers Baustatik-Blog

Thomas Wölfers Baustatik Blog

FEM Plattenprogramm: Netzgenerierung und DXF


Im FEM Plattenprogramm XPLA kann man die Grundrissdaten entweder selbst mit den graphischen Werkzeugen eingeben, oder man importiert diese Daten aus einer DXF-Datei.

Beim Import von DXF-Daten gibt es aber ein Problem: Solche Daten stammen meist aus Zeichnungen und liegen daher gerne in merkwürdigen Koordinatensystemen, sind falsch skaliert - oder sind mit übereinander gezeichneten Linien überfüllt. Als Resultat erhält man dann nach dem Import jede Menge Linien die sich schneiden und überlappen, und noch mehr Punkte die 'fast' auf solchen Linien liegen - aber eben nur 'fast'.

Am Bildschirm kann man das leider überhaupt nicht sehen - zumindest nicht, wenn man keine sehr starke Vergrößerung wählt. Klickt man die importierten Linien und Punkte dann einfach an, so bekommt man ein statisches System in dem logischerweise die gleichen - oder stark verwandte - Fehler vorliegen. Das rächt sich etwas später, wenn man versucht ein FEM Netz zu generieren: Der Generator bemängelt dann nämlich das System und erzeugt eben kein Netz.

Hier gibt es nur zwei Mögliche Auswege: Entweder man stellt sicher, das die eingelesenen DXF-Dateien sinnvoll sind (das ist oft nur schwer möglich) - oder aber, man erzeugt den Grundriss nur Schritt für Schritt - und stellt nach jedem Schritt sicher, das sich das FEM-Netz noch erzeugen lässt. Ist das nämlich nicht der Fall, so untersucht man seinen Grundriss besser auf 'merkwürdige' Stellen.


Speicherlecks und Allocation Numbers


So nett das alles ist mit dem Managed Code - letzten Endes gibt es noch jede Menge unmanaged Code der gewartet und verwendet werden will. In Fall unseres aktuellen Projektes - das eigentlich ein managed Code Projekt ist - gibt es zum Beispiel einige Megabyte an nativem Win32 C++ Code. Dabei handelt es sich um Libraries die Ihren Dienst tun, und bei denen es schlicht keinen Sinn macht, sie zur CLR zur portieren.

Das bedeutet auch, das man sich eben auch weiterhin mit Speicherlecks in normalen Win32 Code auseinandersetzen muss. Dazu gibt es den extrem hilfreichen Debug-Heap und im Fall von MFC Code die zugehörigen Wrapper wie zum Beispiel das CMemoryState Objekt. Mit einem CMemoryState kann man zum Beispiel die momentan allozierten Objekte anzeigen lassen, oder man kann eine Statistik der Allokationen erhalten. ( Um die seit einem gegebenen Zeitpunkt allozierten Speicherbereiche zu finden, muss man zunächst einen Checkpoint() durchführen, und vom zugehörigen Objekt dann DumpAllObjectsSince() aufrufen.)

Dabei zeigt einem die CRT dann neben den Allocationen (wenn möglich mit Dateiname und Zeilennummer) auch eine 'Allocation Number' an. Dabei handelt es sich um die Nummer der Allocation im laufenden Programm. Diese Nummern sind ganz interessant - das Problem ist aber: Wie findet man nun heraus, welcher Vorgang eine gegebene Allokation ausgelöst hat.

Das geht am einfachsten mit _CrtSetBreakAlloc(). Man übergibt der Funktion die Nummer der Allocation aus dem Dump - und startet den Debugger. Der bleibt dann bei dieser Allokation stehen - und man kann einfach per Call-Stack herausfinden, was den Vorgang ausgelöst hat.


Eigenes Page Rank wieder gestiegen


Nachdem mein Blog ein paar Monate in Googles PageRank von Stufe 5 auf 4 gefallen war - steht es seit kurzem wieder auf '5'. Was immer das fürs Blog bedeutet ... :-)

Mailserver-Update: Hashcash und Domain Keys


Unser Mailserver (mail.die.de) ist ja schon bereits seit geraumer Zeit mit SPF ausgestattet. Sinn der Sache: Vermeidung von Spam. Ab sofort läuft ein Update der Server-Software, die auch mit Hashcash und Domain Keys klarkommt. Den aktiven Support dafür kann ich momentan gerade leider nicht anwerfen: Spätestens im Mai wird es aber soweit sein - Werkzeuge gegen Spam kann man ja gar nicht genug haben.


Visual Studio 2005 Beta 2 verfügbar


Wer es noch nicht mitbekommen hat: VS 2005 Beta 2 ist ab sofort verfügbar. Diesmal gibts sogar eine Lizenz, mit der man Programme, die mit dem Beta gebaut wurden, ausliefern darf. Das Beta gibts in verschiedenen Geschmacksrichtungen zwischen 'Hobby-Version' und 'Version-für-Riesenteams'. Mehr Informationen wie immer bei MSDN.

Fliegen: Immer billiger


Der heutige Flug München -> Düsseldorf hat gerade noch 25 Euro gekostet (plus etwa 34 Euro Flughafengebühr): Ich frage mich langsam, von was die dba eigentlich lebt. Für diese Summer kommt man aus der Stadt nicht mal zum Münchner Flughafen... Ansonsten war alles wie immer: Ich mag die dba. :-)

Blogs lesen mit Outlook: 1. Versuch


Es gibt verschiedene Produkte die versprechen, man könne damit Blogs innerhalb von Outlook lesen. Eins davon habe ich mir übers Wochenende angesehen: intraVNews.

Grad habe ichs wieder runtergeworfen: Die Darstellung der Blog-Inhalte war alles andere als brauchbar und absolut nicht mit Sharpreader oder RSSBandit zu vergleichen. Funktionen wie 'alles als gelesen markieren' oder 'jetzt updaten' gingen überhaupt nicht. Auch wenn es nett war die Feeds in Outlook zu haben - das ganze war insgesamt im Vergleich zu Sharpreader einfach viel zu schlecht.

Wenn ich das nächste mal die Ruhe dazu habe, schaue ich mir NewsGator an. Von IntraVNews kann ich jedenfalls nur abraten.


.Net programmierung und C++ - was man schnell vergisst


Kaum programmiert man ein paar Jahre mit managed Code, schon hat man sich an die immer brav verfügbare BCL gewöhnt. Da bin ich dann heute beim testen auf einem fremden Rechner prompt drüber gestolpert: Mein Programm wollte erst gar nicht starten.

Nach einiger Zeit kamen dann die Erinnerungen an 'früher'.... da war doch mal was mit Abhängigkeiten von DLLs... und dann ging dankbarerweise ein Licht auf: Wenn man im Projekt auch nativen Code mit VC++ hat das muss man natürlich auch die entsprechende RTL installieren. Ist auch noch MFC/ATL drin, dann braucht es das natürlich auch. Dito was die Redist von DirectX angeht - und so weiter und so fort.

In der Theorie also ein schönes 'Xcopy deployment' - in der Praxis ist das Projekt mitlerweile einfach zu umfangreich, als das man tatsächlich nur ein paar Dateien kopieren kann.

Bei der Gelegenheit, weil man es gerne vergisst: Das SDK (auch der Teil, der bei VS Dabei ist) enthält ein Prima Tool namens 'Depends'. Damit kann man ganz wunderbar herausfinden, von welchen DLLs eine DLL abhängig ist.