# Tuesday, November 28, 2006

Um die Zusammenhänge in meinem vorherigen Eintrag verständlicher zu machen, hilft vielleicht ein kleines Diagramm:

So wird vielleicht klarer, wie die verschiedenen Komponenten zusammenarbeiten.

Tuesday, November 28, 2006 10:33:00 AM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [0]  | 
# Monday, November 27, 2006

Unseren elektronischen Ersatzteilkatalog gibt es als Visual FoxPro Desktop Applikation (SPCat) und einer dazugehörigen Web Applikation (SQLCat). Die Daten von SPCat können in den SQLCat importiert und dort angezeigt werden. Es werden also grundsätzlich die gleichen Daten und Bilder in beiden Applikationen dargestellt. Als vor einiger Zeit der Wunsch nach einem stufenlosen Zoom der Übersichtszeichnungen aufkam, war das SVG Format eine sehr attraktive Option. Insbesondere, da der Adobe SVG Viewer (ASV) auch Bitmap Grafiken sehr schön darstellen konnte.

Unsere Desktop Applikation hatte bereits den Internet Explorer eingebunden. Darin wiederum kann der SVG Viewer als Plugin laufen. Das gleiche Plugin verwendet auch unsere Web Applikation. Dadurch konnten wir die SVG Programmierung in beiden Applikationen sehr ähnlich gestalten.

In SPCat wird für eine zoombare Bitmap Grafik zur Laufzeit eine SVG Datei erzeugt. In dieser Datei steckt als Objekt das eigentlich Bild und zusätzlicher Markup für den Birds Eye View und Javascript für die Interaktivität. Zusätzlich wird eine Html Datei erzeugt, die wiederum die SVG Datei einbindet und per Javascript die variablen, zusätzlichen Elemente in das DOM der SVG Grafik einbaut. Zur Darstellung navigiert der eingebunden IE auf diese Html Datei.

Zusätzlich kann eine Benutzeraktion in anderen Teilen von SPCat eine Veränderung in der dargestellten SVG Grafik bewirken. Über den DOM des IE ist der kann dort eine Javascript Funktion gestartet werden. Die wiederum auf den DOM der SVG Grafik einwirkt und dort die Darstellung ändert.

Also so haben wir einen Adobe SVG Viewer, der dem Internet Explorer gehorcht, der wiederum dem SPCat unterstellt ist. Mit COM Aufrufen, Javascript von IE, Javascript von Adobe und zugehörigen DOMs werden stufenlose Bitmaps auf den Bildschirm gebracht und gesteuert.

Juhu! Das Ganze hat sogar funktioniert!

Mittlerweile hat Adobe offiziell die Entwicklung und Unterstützung für den Adobe SVG Viewer eingestellt. Microsoft hat vor kurzem den Internet Explorer 7 veröffentlicht. Und siehe da! Die ganze Konstruktion funktioniert nicht mehr. Aus den Tiefen des Systems kommt bei der zweiten darzustellenden Grafik einer der erschütternden C0000005 Fehler. Irgendein Pointer zeigt ins Leere. Nix geht mehr.

Auch längeres Suchen nach einer Lösung hat nichts gebracht. Die Zusammenarbeit wurde wohl eingestellt.

Für den SPCat haben wir uns aber schon etwas Neues überlegt. Dazu in Kürze mehr!

Monday, November 27, 2006 8:22:26 PM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [0]  | 
# Thursday, November 23, 2006

Wir erzeugen die Druckausgabe in unserem elektronischen Ersatzteilkatalog SPCat mit Hilfe von Word. Dabei wird über COM-Automatisierung vom Katalog Word ferngesteuert. Bilder und Stücklisten werden druckfertig eingebaut.

Angefangen von Word 97 (Version 8) bis zu Word 2003 hat diese Ausgabe immer geklappt. Ein paar Routinen sind zwar versionspezifisch, aber das meiste funktioniert unabhängig von der Word Version.

Natürlich muss der Katalog auch mit Word 2007 funktionieren. Und was ist? Es funktioniert einfach!

Ohne irgendeine Code-Änderung wird das Word Dokument automatisch erzeugt. Sehr schön und nicht selbstverständlich. Tolle Leistung von Microsoft.

Word scheint aber zu erkennen, dass irgenetwas anders ist. Es schaltet in einen "Compatibility Mode". Vielleicht liegt das an der Formatvorlage?

Thursday, November 23, 2006 4:38:39 PM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [0]  | 
# Wednesday, November 22, 2006

Weitere Fortschritte mit Vista...

Unseren Ersatzteilkatalog kann man auf CD brennen. Auf dieser CD ist ein kleines Einstiegsprogramm intro.exe. Dabei kann man auswählen, ob man den Katalog von CD starten oder ihn lieber auf die lokale Platte installieren möchte. Das intro.exe führt dann den Setup durch.

Wenn man das Programm zum erstenmal startet, frägt Vista, ob man diesem bösen Programm vertraut. Natürlich vertraue ich meiner eigenen Software! Danach gehen aber diese beiden Funktionen immer noch nicht. Die stehen erst zu Verfügung, wenn ich intro.exe als Administrator starte:

Dann klappt auch die komplette Installation. Gestolpert bin ich aber darüber, dass beim nächsten Start diesem Programm vertraut wird, es aber nicht mehr als Administrator läuft. Der Setup startet zwar, scheitert aber unmittelbar. Also intro.exe immer als Administrator starten!

Klar ist mein Account lokaler Administrator, aber Dank UAC werde ich vor mir selbst beschützt.

UAC = User Account Control : Understanding and Configuring User Account Control in Windows Vista

Wednesday, November 22, 2006 10:52:54 AM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [0]  | 
# Tuesday, November 21, 2006

Hurra! Auch wenn das noch kein kompletter Test ist. SPCat funktioniert unter Windows Vista RTM!

Ich habe natürlich gleichmal die x64 Variante installiert. Damit das Ganze anspruchsvoller wird.

So grundsätzlich funktioniert mal der Ersatzteilkatalog. Das Setup meldet noch einen Fehler bei der Installation. Sicher wird auch an anderen Stellen noch die eine oder andere Tücke lauern.

Spannend wird die Print-Ausgabe über Office 2007. Ob "CreateWord" diese Hürde nehmen kann?

Tuesday, November 21, 2006 6:44:53 PM (W. Europe Standard Time, UTC+01:00)  #
  Disclaimer  |  Comments [0]  | 
# Friday, September 29, 2006

Hurra, es geht für 2 Wochen nach Griechenland!

Damit in der Zeit nicht die komplette Pharmaindustrie in den Kommentaren und Trackbacks steht, sind diese Funktionen in dieser Zeit deaktiviert.

Und tschüss...

Friday, September 29, 2006 4:41:04 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 

Für administrative Arbeiten ist es recht praktisch, auch mal von zu Hause einen Blick auf die Server werfen zu können. Zugriff auf die Unternehmens E-Mail ist auch praktisch. Am Besten sollte auch noch unsere Projekt- und Zeiterfassungssoftware mitlaufen. Also muss ein VPN Zugriff auf das CPTec Intranet her.

Sowohl die Intranet Server, als auch unsere Desktops laufen unter Windows. Eine reine Microsoft Lösung wäre denkbar. Was kommt in Frage?

  • PPTP
  • IPsec tunnel
  • L2TP over IPsec
  • OpenVPN

Unser äußerer Firewall läuft unter ISA Server 2004. Da geht grundsätzlich alles :). Danach müssen die Daten noch über einen Linux Firewall. Da geht auch grundsätzlich alles. Wir haben auch schon Regeln um von unserem Intranet über IPSec auf die Server eines Kunden zugreifen zu können. Diese Lösung wäre deshalb auch für uns nahe liegend. Trotzdem haben wir uns für OpenVPN entschieden.

Wieso? Die Konfiguration sah einfacher aus. Und der gesamte verschlüsselt VPN Traffic läuft über einen UDP Port. Nur diesen einen Port auf den Firewalls zu publizieren fand ich sehr sympathisch.

Das ganze war auch schnell eingerichtet und man konnte über beide Firewalls vom Internet aus auf unser Intranet zugreifen. Man muss sich aber darüber im Klaren sein, dass für diese Verbindung der Schutz der Firewall aufgehoben ist. Natürlich hüten wir den privaten Authentifizierungsschlüssel der Klienten. Aber auch ein Trojaner wandert von dem Klienten problemlos authentifiziert und verschlüsselt in unser Intranet. Die Anbindung an unser inneres Netz ist auch für diese kleinen Bösewichte transparent.

Wie schützt man sich vor infizierten externen Rechnern? Dazu gibt es diverse Szenarien: Man kann die VPN Klienten in Quarantäne stecken und zuerst deren Status überprüfen. Man gewährt nur Zugriff auch bestimmte Ressourcen oder man ist einfach nur vorsichtig :).

Das ist alles aufwendig und hilft auch nicht notwendig. Deshalb habe ich als Klient nur einen speziell vorbereiteten virtuellen PC vorgesehen. Der läuft unter XP mit allen nötigen Tools, wie Outlook und putty. Mit dem PC wird nicht im Internet gesurft oder neue Software darauf installiert. Nach jeder VPN Session wird die Maschine auf den vorigen Stand zurückgesetzt. Damit sollte sich nichts einnisten können.

Im Moment bin ich mit der Lösung sehr zufrieden. An meinem DSL Anschluss zu Hause hängt ein WLAN Access Router mit NAT. Über das WLAN geht die Verbindung zum zweiten Router und noch mal über NAT zu meinem Heim PC. Auf diesem PC wiederum läuft der virtuelle PC. Hier bei CPTec muss der Tunnel in die andere Richtung noch über 2 Firewalls um schließlich bei dem Server mit OpenVPN Dienst zu landen. Wenn die VPN Verbindung hergestellt ist, kann ich mich dann z.B: per Remote Desktop Connection auf einem unserer Web Server anmelden. Diese Verbindung wiederum geht über den inneren Firewall in unsere DMZ. Auf dem Remote Desktop kann ich insgesamt dennoch relativ zügig arbeiten. Wenn man sich vorstellt, welche Umwege meine Handbewegung macht, bis sich der Mauscursor auf dem Bildschirm bewegt und z.B. ein Fenster bewegt. Wahnsinn! Aber es geht. Irrsinnig "virtuell", mit einigen Adressumsetzungen, sicher und trotzdem zügig!

Das einzig Peinliche ist, dass ich einige Zeit die VPN Verbindung über die OpenVPN Gui nach dem Login gestartet habe. Hat mir nicht gefallen, aber ich nahm diese Einschränkung hin. Irgendwann hat sich dann die Domänen-Anmeldung verhakt. Google wollte mir nicht verraten, wie ich die Verbindung nach dem Booten und vor dem Login aufbauen kann. Der OpenVPN Service hatte für mich ganz klar nur mit einem OpenVPN Server zu tun. Denkste! Einfach den Dienst auf automatisch gestellt und schon steht die Verbindung automatisch und vor der Anmeldung. Puh.

Friday, September 29, 2006 4:36:37 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Friday, September 22, 2006

Gerade habe ich das Blog auf dasBlog 1.9 upgedated. Unter anderem unterstützt die Software jetzt den Windows Live Writer.

Auch wenn der Texteditor von dasBlog schon ganz gut ist, finde ich eine klassische Windows Applikation einfach angenehmer und robuster. So viel schreibe ich jetzt ja auch nicht in diese Blog, trotzdem ist mir schon ein paar Mal einiger Text verloren gegangen. Irgendwie waren der Browser und der Webserver zusammen der Meinung, dass so eine leere Textbox auch was Schönes ist. Weiß auch nicht, was die gegen mich hatten.

Ha! Gerade hatte das Tool einen "Unexpected error". Das Gif Bild, dass ich testweise einbinden wollte hat ihm nicht gepasst. Puh. Es gab aber einen Continue Button. Nix passiert. Sehr schön :).

Wie war das mit dem "robust". Tja, ist auch nur die "Windows Live Writer (Beta)".

Friday, September 22, 2006 10:21:52 AM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Thursday, September 07, 2006
Es war leider abzusehen. Adobe stellt die Unterstützung für den SVG-Viewer ein: Adobe to Discontinue Adobe SVG Viewer
Im März hatte ich bereits den Zustand dieses Viewers in Stirb langsam - Adobe SVG Viewer als "Eher mausetot!" bezeichnet. Jetzt ist es tatsächlich soweit.

Bei meinen Überlegungen, wie man jetzt am sinnvollsten interaktiv zoombare Grafiken mit dem Webbrowser darstellen soll, fällt mir immer wieder Flash ein. Nur dann hängt man ja wieder am Tropf von Adobe. Mir gefällt schon deren Umgang mit dem PDF Format und deren PDF Viewer Adobe Acrobat Reader nicht.  Da ist mir Microsoft irgendwie lieber. Die haben inzwischen zu einer relativ großen Transparenz gefunden. Da kriegt man mit, wohin die Reise geht. Auch wenn sich der Kurs mal ändert, passiert das nicht heimlich.
Jetzt sitzen wir mit einem nicht mehr unterstützten Viewer da. Natürlich funktioniert der Zoom in unserem Ersatzteilkatalog SPCat weiter mit diesem Viewer. Es wäre nur schön gewesen von Verbesserung profitieren zu können.

Wer möchte einen Tipp abgeben, wann eine ähnliche Meldung zum Adobe Framemaker zu lesen ist?

Thursday, September 07, 2006 7:55:44 AM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Wednesday, August 30, 2006
Gestern hatte ich bei Dustin Campbell einen interessanten Artikel gelesen: Getting a little more graceful with generics.
Im wesentlich ging es darum, dass der C# Compiler beim Aufruf einer generischen Methode selbst schließt welchen Typ er verwenden soll. Er sieht sich einfach die Parameter beim Aufruf an.

Fast exakt dieses Beispiel hatte ich in meinem aktuellen Projekt bereits verwandt. Nur habe ich eine Warnung von der Code Analyse bekommen, dass ich mit meinem Code diesen Rückschluss verhindern würde (CA1004 Microsoft.Design Warning GenericMethodsShouldProvideTypeParameter). Stimmt aber nicht. Es funktioniert wunderbar.

Die Methode

public static void GenerischeMethode<T>(List<T> arg);

kann immer so aufgerufen werden:

GenerischeMethode<string>(new List<string>);
GenerischeMethode<int>(new List<int>);

Aber der Compiler kann durch Inference auch den Typ selbst ermitteln und diese Aufrufe funktionieren auch:

GenerischeMethode(new List<string>);
GenerischeMethode(new List<int>);

Die Warnung CA1004 geht davon aus, dass der generische Typ direkt als Parameter verwendet werden soll und nicht wie in diesem Fall indirekt über List<T>.

Dustin Campbell hat dieses Verhalten in Microsoft bug? You decide! nach meinem Kommentar ausführlicher dargelegt.

Wednesday, August 30, 2006 3:00:34 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  |