Mittwoch, 30. Juli 2008

Dreizehnte Woche

Guten Morgen @ all,

meine letzten beiden Wochen habe ich nun angebrochen und so langsam aber sicher geht mein Praktikum zu Ende. Echt schade …. Aber was solls ….

Dreizehnte Woche == Unglückszahl ??? Bei mir jedenfalls nicht. ;-) Diese Woche hatte es in sich gehabt. Eigentlich könnte ich dieser Woche eine Überschrift gegeben, die wie folgt lautet:

Crystal Report und Images (von einem MapServer)

Dies war meine Aufgabe. Ich sollte mich belesen, ob es nicht möglich wäre Bilder von einem MapServer in einem Report darstellen zu lassen. Gesagt, getan. Nein, so einfach war es auch wieder nicht. Ich habe mich erst mal damit befasst, wie man denn ein (statisches) Bild in einem Report Dokument anzeigen lassen kann. Im Internet habe ich dazu auch viele Beispiele gefunden, doch leider bezogen sich diese immer auf eine Datenbank (Access). Somit half mir das kein bisschen weiter. Nach etlichen Seiten, habe ich dann ein passendes Beispiel für mich gefunden. Doch dieses war so kompliziert beschrieben und setze ein Grundwissen voraus, dass ich das Dokument noch dreimal lesen musste, ehe ich es verstanden habe. Denn sie schrieben auch von DataTable und der gleichen. Und ich war immer der Meinung, dass sie ebenfalls eine Datenbank verwenden. Dies war aber falsch. Denn das Objekt Datatable wird für den Crystal Report verwendet und ist eine Art Tabelle. Auf alle fälle, habe ich das Beispiel hinbekommen und Crystal Report zeigt mir nun ein Bild an. Das wie folgt abläuft:

  1. Zuerst legt man sich ein neues DataTable an, was im Allgemeinen ein XSD-Dokument ist (wenn man es ohne DB machen will). In diesen beschreibt man, welche Daten im Crystal Report angezeigt werden sollen. Wichtig ist nur, wenn man ein Bild darstellen will, dass man System.Byte[] als Spaltendeklaration selektieren muss!
  2. Dann fügt man ein neues Report Dokument zu seinem Projekt hinzu und selektiert das XSD-Dokument als Datenquelle. Somit weiß Crystal Report, welche Spalten für das Dokument benötigt werden.
  3. Hinzufügen des Crystal Reports Viewer zu seinem Windows Form und wählt als Report Dokument, was man eben angelegt hat.

Dann musste man nur noch angeben, wo das Bild liegt und das wars. Ist nicht ganz richtig, denn das Bild musste als Byte-Stream umgewandelt werden. Aber das war dann keine so große Schwierigkeit.
Damit habe ich meine erste Teilaufgabe erledigt. Dadurch, habe ich das Prinzip verstanden, wie es nun möglich ist, ein Bild in Crystal Report zu bringen. Nun kommen wir zu eigentlichen Aufgabe; wie kann ich dieses mit dem MapServer machen. Nach kurzem studieren der Dokumentation, hatte ich schnell den dreh raus, wie man eine URL zu dem Bild erhält, was sich in einem temporären Ordner befindet. Dies erinnerte mich stark an die alten Zeit des UMN-MapServer. Jedenfalls hatte ich den Verweis zu meinem Bild und habe dieses, nach dem gleichen Prinzip wie oben, in meinem Crystal Report dargestellt. Was mich auch erfreute und viel Spass gemacht hatte.
Das Ergebnis meiner Arbeit habe ich meinem Arbeitskollegen gezeigt und er war mächtig beeindruckt, dass das auch geht. Denn er selber hatte auch keine Ahnung von Crystal. Aber das war noch nicht alles. Er hatte gemeint, dass ich versuchen solle, meinen eigenen ADO.NET Data Provider schreiben solle, der von dem MapServer her automatisch das Bild generieren solle. Im Endeffekt, soll damit die XSD-Datei wegfallen.
Okay, habe ich mir gedacht, warum nicht? Ich habe auch soviel Ahnung von C# und ADO.Net Data Providern. Ganz zu schweigen von Crystal Report. Also habe ich wieder ein bisschen gegoogelt und versucht zu verstehen, wie man seinen eigenen ADO.NET Data Provider programmieren kann. Diesmal half mir das Internet nicht und ich musste auf die MSDN-Hilfe zurückgreifen, die einen eigenen .NET Data Provider programmiert haben. So ganz geheuer war mir dies nicht, denn die haben mehrere Klassen geschrieben, die „nur“ Interface Klassen von anderen Klassen waren und mussten all die Methoden in ihrer Klasse überschreiben. Es waren mehr get- und set-Methoden enthalten als alles andere. Zum Glück hatten sie auch ein Beispiel Klasse gehabt, wie man die anderen Klassen aufgerufen kann. Doch dies Beispiel bezog sich wieder auf eine Datenbank, was mir nicht richtig weitergeholfen hatte. Somit habe ich dann ein bisschen herumexperimentiert und herausgefunden, dass ich die Methode IDataReader verwenden kann. Denn Crystal Report hatte diese Methode als ADO.Net-Schnittstelle erkannt. Komischerweise gingen die anderen Methoden nicht, sondern nur diese. Jedenfalls habe ich diese Methode so erweitert, dass ich mein eigenes DataTable erzeugt habe und darin dann all meine Tabellen, mit den zugehörigen Parametern gefüllt habe. Sprich, mit dem Ergebnis von dem MapServer. Diesmal brauchte ich das Bild nicht in ein Byte umwandeln, denn ich hatte in der Dokumentation gelesen, dass das auch der MapServer machen kann. Dadurch habe ich mir eine Methode gespart! ;-)
Das testen ist auch erfolgreich gelaufen und ich bin zufrieden und glücklich in mein verdientes Wochenende gestartet.

In diesem Sinne,
Hagen

Samstag, 26. Juli 2008

Zwölfte Woche

Guten Morgen @ all,

die zwölfte Woche war nicht gerade spannend! Eigentlich, macht es keinen Sinn, einen Eintrag zu schreiben. But anyway …

Ich habe die ganze Woche ein Word-Dokument, mit einem anderen verglichen und geschaut ob es irgendwelche Veränderungen vorgenommen wurden sind. War dies der Fall, dann musste ich es übernehmen. Wie aufregend ….
Somit hatte ich das Gefühl, dass die Woche nie zu Ende geht. Aber was solls. Ich bin damit fertig geworden und freue mich nun auf meine neue Aufgabe, für die nächste Woche.

Ich wünsche euch ein schönes Wochenende.

Bis denne,
Hagen

Sonntag, 20. Juli 2008

Sonntagsausflug

Hi @ all,

letztes Wochenende, hatte wir richtig schönes Wetter und somit bot sich die Gelegenheit einen kleinen Ausflug zu machen. Wurde auch langsam Zeit, dass ich mal wieder herauskomme und ein bisschen was von der Welt sehe. ;-)

Die Reise führte an die Westküste von Auckland und ich kann nur sagen, dass es mal wieder sehr schön war. Aber seht selber, Bilder sind unter Picasa zu finden.

Ich wünsche euch noch eine wunderschöne guten Nacht.

Bis denne,
Hagen

Samstag, 12. Juli 2008

Elfte Woche

Guten Morgen @ all,

vorweg, ich habe meine Verlängerung von zwei Wochen erhalten und kann euch somit noch weiter über meine Tätigkeiten berichten.

Diese Woche hatte es in sich gehabt. Ich habe sehr viel herumexperimentiert und versucht, den Fehler zu finden, warum das PDF-Dokument nicht ausgedruckt wird.
Wie im letzten Beitrag schon geschrieben, habe ich nun versucht die verschiedenen group-Tags zu löschen. Bevor ich dies machen konnte, musste ich die Pfade aus den

[group 1]
[group 2]
[path 1][/path 1]
...
[/group 2]
[/group 1]

Dazu habe ich mich mit den Methoden AppendChild(), insertAfter() und insertBefore() beschäftigt, wie diese funktionieren. Nach dem ich das Prinzip verstanden habe, habe ich versucht, dieses in dem Source-Code zu implementieren. Was natürlich nicht auf Anhieb klappte. Denn ich erhielt immer die Fehlermeldung, dass das nicht funktioniert, denn die Iterationsliste hat sich geändert. Ist auch logisch. Auf jeden Fall, habe ich es so gelöst, dass ich einfach zweimal die Methode insertAfter aufgerufen habe, um die Pfade aus dem group-Tag herauszubekommen. Komischerweise, hatte er es verstanden und ich erhielt keine Fehlermeldung mehr.
Nun musste ich nur noch die leeren group-Tags löschen. Dank google.de, habe ich auch ein paar Hinweise bekommen, wie man so etwas machen kann. Nach etlichen Stunden, habe ich das auch hinbekommen und konnte somit das Ergebnis testen. Und siehe da, nichts hat sich geändert! Frustrierend.
Immer, wenn ich das Dokument an den Drucker senden wollte, dann wollte dieses „Flattening“. Was ich als erstes übersetzen musste. Denn ich kannte nur das Wort flat. Im Endeffekt wollte er das Dokument ebenen. Was ich nun gar nicht verstand. Denn dies würde bedeuten, dass er versucht, die ganzen einzelnen Layer zu einem großen Layer macht. Ich fand das sehr kurios. Also habe ich mir gedacht, dass ich einfach ein paar Informationen herausnehme und mit diesen arbeiten werde. Aber ich erhielt den gleichen Fehler.
Nun blieb mir nichts anderes übrig, als die Transformationsparameter herauszunehmen und jede Koordinate mit dem offset-Wert zu addieren. Als ich dies implementiert hatte, habe ich festgestellt, dass das Programm sehr lange benötigt, um das PDF zu generieren. Was aber selbstverständlich ist. Denn es sind in der Zwischenzeit mehrere for-Schleifen, Bedingungen und Berechnungen hinzugekommen. Was den Source Code sehr aufblähte. Mit dem Resultat, dass sich nichts geändert hat.
Mit dem Arbeitskollegen habe ich darüber beratschlagt, wie wir nun weiter vorgehen sollen. Er hatte mir nur gesagt, dass wir noch einen Versuch starten könnten; in dem wir die Transparenz herausnehmen. Aber er hatte mir versichert, dass er das schon versucht hatte und dies keinen Erfolgt brachte. In diesem Moment war ich zu allem bereit, denn ich wollte die Aufgabe lösen. Bevor ich mich dieser Idee widmete, habe ich mich im Internet belesen, was das „Flattening“ genau macht. Grunde genommen, nimmt der Acrobat Reader jeden einzelnen Layer und schaut, welcher Objekte sich überschneiden. Ist dies der Fall, dann zerstückelt er diese und fügt es dann wieder zusammen. Hauptsächlich macht er dieses bei Objekten die Transparenz sind. Im Internet habe ich ein paar Informationen gefunden, wie man dieses mit Javascript lösen kann. Ich habe mir dazu ein Javascriptdatei erstellt und diese im Acrobat Reader-Pfad gespeichert. Sie beinhaltete folgende Funktion, this.flattenPages();. Damit wollte ich erreichen, dass ich das Dokument schon vorher Flatten wollte. Aber dies funktionierte auch nicht, da die Funktion nicht im Acrobat Reader unterstützt wird. Dennoch, gingen mir die Ideen nicht aus. Ich hatte mir gedacht, warum sollte man das Dokument nicht einfach als Bild ausdrucken? Und dies hatte auch wunderbar geklappt und habe das meinem Arbeitskollegen gesagt. Er meinte aber, dass wir das nicht nehmen können, denn dies sei nicht Nutzfreundlich. Auch meine Javascriptidee hatte ihm nicht gefallen, die vorweg schon die checkbox PrintAsImage selektiert hatte.
Nun blieb mir nichts anderes übrig, als die Transparenz aus dem Originaldokument herauszulöschen und dieses dann auszuprobieren. Das erzeugte PDF-Dokument stimmte mit dem Original überein und ich musste erstmal nichts an dem Source Code ändern. Als ich das PDF-Dokument anschliessen ausdrucken wollte, hatte es wunderbar geklappt! Denn er braucht das Dokument nicht mehr zu ebnen, was mich sehr gewundert hat. Also lag es an der Transparenz! Stolz, habe ich ihm das gesagt und er meinte nur, dass er das auch ausprobiert hatte und das es bei ihm nicht funktioniert hatte.
Nun habe ich meine ganzen Implementierungen herausgenommen, umzuschauen ob es an der Transformation oder den ganzen group-Tags lag. Aber dem war nicht so, es lag einfach nur an der Transparenz! Herrlich, die ganze Woche, für umsonst programmiert. So schlimm ist es auch nicht, ich habe viel über XML kennen gelernt, wie man zum Beispiel Node ändert, usw.
Nun habe ich den originalen Source Code genommen und eine rekursive Methode implementiert, die die Transparenz herausnimmt und wenn es zu einem Node noch weitere ChildNodes gibt, dann ruft sich die Methode selber wieder auf. Im Endeffekt, hatte mich die Implementierung nur 10 Minuten gedauert! Wenn man sich aber überlegt, wie lange ich gebraucht habe um dahinzugelangen …. Ohne Worte.
Auf jeden Fall, werden wir es am Montag testen, ob es auf seinem Rechner auch läuft. Wenn alles passt, dann wird es dem Kunden gegeben.
Das war die letzte Woche. Nun bin mal gespannt was ich für eine andere Aufgabe erhalten werde.

Ich wünsche euch ein schönes Wochenende,
der glückliche und zufriedene Hagen

Mittwoch, 9. Juli 2008

Zehnte Woche

Hi @ all,

damit ihr nicht solange warten müsste, will euch heute über meine vergangene Woche berichten.

Nach dem ich nun die kleinen Toolchen fertig geschrieben hatte und zum testen freigegeben hatte, wartete ich vergebens auf eine Resonanz. Aber das liegt wahrscheinlich daran, dass es erst ende der nächsten Woche implementiert werden soll. Nichts desto trotzt, hatte ich ein weitere Aufgaben erhalten. Es handelte sich diesmal um C# und SVGT.

Ich möchte das System kurz beschreiben, was ich damit meine, bzw. was die Aufgabe beinhaltet. Der Kunde, hat die Möglichkeit, seine generierte Karte, die er mittels GeoMedia WebMap erstellt, in ein PDF-Dokument umzuwandeln, was er anschliessen ausdrucken kann. Leider funktioniert das Drucken nicht richtig, denn wenn das Dokument an den Druck gesendet wird, dann bricht der Acrobat Reader nach 5 % ab.

Wie wird das PDF-Dokument erstellt? Der WebMap-Server generiert eine SVG-Datei, die in eine SVGT-Datei umgewandelt wird (mit C#). Mittels dieser neu erzeugten Datei wird daraus ein PDF erstellt. Dies geschieht mit der Software abcPDF (ist kommerziell :-(). Der Praktikant soll das Programm so optimieren, dass der Acrobat Reader nicht mehr abschmiert. Bevor es an den Source Code ging, habe ich mich erstmal mit SVGT beschäftigt. Im Grunde genommen, ist es das gleiche wie SVG, nur eine schlankere Version. Es wird hauptsächlich für Handys eingesetzt, denn das T steht für Tiny.

Nach einem kurzen Crash-Kurs in SVGT, habe ich mich daran gemacht und versucht das C# zu verstehen. Was auf den ersten Blick sehr chaotisch aussah, denn das Dokument wurde in meinen Augen zu oft iteriert und dies machte in meine Augen keinen sinn. Deshalb, habe ich die Vorzüge des Debugger genutzt und mir angeschaut, wohin er überall springt und was er alles verändern will. Im Endeffekt, hatte sich herausgestellt, dass er, von den 7 for- und foreach-Schleifen, nur 3 benötigt um das ganze Dokument zu durchlaufen! Irgendwie, kam mir das alles spanisch vor und ich habe mir erstmal die Changelog angeschaut und war sehr erstaunt, dass 10 unterschiedliche Personen diesen Source Code modifiziert haben, und jeder hatte seine eigene Schleife dazugepackt. War irgendwie komisch. Jedenfalls, behob das nicht das Problem mit dem Drucken.

Nach dem ich den Source Code „gesäubert“ hatte, habe ich mir die unterschiedlichen Dokumente angeschaut, um zu sehen, was er eigentlich alles verändert. Eigentlich fast gar nichts, nur das der svg-Tag einen anderen Eintrag erhalten hatte und das wars. Denn das Problem ist, dass das SVGT keine viewBox versteht und dies wurde mit einer Transformation ersetzt, die sehr kurios berechnet wurde. Nun kamen auch langsam die Vorzüge, eines Geoinformatikers zum Vorscheinen und ich habe die Transformation neu geschrieben. Interessanterweise, kam ich auf das gleiche Ergebnis, wie im Source Code nur das meine ein bisschen übersichtlicher war.

Nun ging das Gespiele los oder besser das numerische Herumprobiere. In einem sehr großen Group-Tag, worin die Transformation beschrieben worden war, enthielt mehrere kleine Group-Tags, die wiederum Pfade enthalten. Diese Pfade dienten zur Darstellung von Linien und der gleichen. Kurz gesagt, es wurde jede Koordinate durch die Transformationsparameter temporär, neu geschrieben, wenn das Dokument ausgedruckt wird. Somit war dies meine erste Vermutung, dass es vielleicht daran lag, dass der Acrobat Reader abschmiert. Also habe ich mich darangemacht und versucht die Koordinaten mit Massstab zu multiplizieren. Dies war aber nicht so einfach, denn es mussten nicht nur die Koordinaten multipliziert werden, sondern auch die Schriftgröße und der gleichen. Das war schon sehr haarig um herauszufinden, wo sich überall ein Tag befindet, der multipliziert werden sollte. Ich hatte sehr viel mit der Methode Replace gearbeitet.

Mitte der Woche, war ich damit auch fertig und ich konnte einen Testdruck starten. Und siehe da, der Acrobat Reader hängte sich nicht mehr auf. Komischerweise, wurde aus dem 180 KB großen Dokument ein 100 MB Dokumente, was an den Drucker gesendet wird. Natürlich, musste ich 30 Minuten warten, bis er mir endlich das Dokument ausgedruckt hat. So richtig befriedigt hat mich das noch nicht. Deshalb hieß es wieder zurück ans Werk.

Bevor ich jede Koordinate mit dem offset-Wert von der Transformation versehe, versuche ich nun gerade die Group-Tags zulöschen. Denn ich habe das Gefühl, dass der Acrobat Reader jeden einzelnen Group-Tag als neuen Layer interpretiert und deshalb das Dokument so „aufbläht“. Jedenfalls, bin ich gerade dabei die ganzen Group-Tags zu löschen. Leider fehlt mir ein bisschen die Erfahrung, mit dem Umgang mit C# und XML (SVG). Insbesondere, wenn ich einen Child-Node löschen will oder wie in meine Fall, aus dem Group-Tag herausnehmen und dann diesen Group-Tag löschen. Jedenfalls, breche ich mir gerade die Finger.

Aber dazu nächste Woche mehr!!!! ;-)

Ich wünsche euch einen schönen Tag,

der Hagen

Samstag, 5. Juli 2008

Das Wochenende und der Van

Hi @ all,

nach dem nun 3 mal mein Rechner abschmiert ist, versuche ich mein Glück an Jorges Rechner. Hoffe, dass ich da nicht solche Probleme habe.

Am vergangenen Wochenende ist nicht soviel passiert, außer das ich nach ein paar Angeboten für einen Backpacker Van geschaut habe.
Dazu habe ich mich mit einem Arbeitskollegen getroffen. Ich habe mir dadurch erhofft, dass er mir noch ein paar Hinweise und Ratschläge geben kann. Die er mir auch gab.
Wir haben dann alle Autovermietungen in Auckland City abgeklappert und uns die verschiedensten Angebote eingeholt. Leider mussten wir erfahren, dass die meisten am Flughafen ansässig sind. Aber dorthin, wollten wir nicht fahren und somit, habe ich die dann per Mail kontaktiert und warte noch bis heute auf eine Antwort. Entweder, haben die eine sehr schlechte Internetanbindung oder sie verstehen nicht, was ich geschrieben habe. Egal.
Okay, warum haben wir uns fuer einen Van entschieden? Ganz einfach, man ist unabhängiger! Denn dieser Van ist zu vergleichen, mit einer kleinen Wohnung auf 4 Rädern. Sprich, wir haben eine kleine Küche, Platz zum Essen, zum Schlafen, ein kleines Waschbecken und einen kleinen Kühlschrank. Alles, was man zum überleben braucht. Somit können wir ganz unabhängig entscheiden, wo wir übernächtigen wollen. Das wird bestimmt lustig. ;-) Damit ihr euch ein Bild machen könnt, wie das Auto aussieht, besucht mal auf folgenden Link: Press ME --> Campervan --> Queenie
(http://www.exploremore.co.nz/new-zealand-campervan-rental.aspx)
Im Endeffekt, ähneln sich die Autos. Nur das die einen die Küche hinten haben und die anderen vorne. Aber das Prinzip ist immer das gleiche.
Nun treten auch die ersten Probleme auf. Denn zu einem Auto, gibt es immer eine Standardversicherung, mit verschiedenen Optionen erweiterbar. Nun bin ich dabei, mich in diesen Gesetzestexten durchzuwühlen und zu schauen, welche Versicherung wir brauchen. Dies wird mich wahrscheinlich die nächste Woche beschäftigen. Dazu muss ich dann immer Rücksprache mit Stefanie halten, was sie davon hält. Aber sie hat mich erstmal aufmerksam gemacht, dass es unterschiedliche Versicherungsangebote gibt.
Des Weiteren, bietet der eine Anbieter, nur Autos an mit Diesel, der andere nur mit Benzin. Wenn man hier ein Auto mit Diesel fährt, dann muss man pro 100 Kilometer 3.70 NZD bezahlen (so eine Art Steuer). Nun muss man aber dazu sagen, dass Diesel um einiges günstiger ist als Benzin, nicht wie in Deutschland! ;-)
Deshalb machen wir nun die verschiedensten Rechnungen, welches Auto das günstigere für uns ist. Aber zum Glück, kann ich sehr günstig nach Deutschland telefonieren und schnell die Sache klären, bzw. absprechen.

Mit den Angeboten, habe ich dann meinen Arbeitskollegen gefragt, ob wir uns nicht mal zusammensetzen könnten und er mir ein paar Insider-Tipps gegeben könnte. Er hatte mich nur gefragt, hast du heute noch was vor und ich meinte, eigentlich nicht. Also hat er mich mit zu seiner Wohnung genommen und er hatte mir dann gezeigt, was man unbedingt sehen sollte und was man eigentlich bleiben lassen kann. Natürlich hat er betont, dass jeder einen unterschiedlichen Geschmack und es schwierig sei, zu entscheiden, was man sehen soll und was nicht. Erschwerend kommt noch hinzu, dass gerade Winter ist. Aber wie sagt man so schön, es gibt kein schlechtes Wetter, nur schlechte Kleidung.
Nach 2 Stunden, hatten wir dann eine Route, wohin wir fahren können. Natürlich müssen wir dann gemeinsam entscheiden, was wir machen wollten. Aber dies ist noch ein bisschen hin.
Danach, sind wir in einen Pub gegangen und haben den Abend gemütlich ausklingen lassen.

Ich werde jetzt weiter Gesetzestexte auf Englisch lesen.
Bis die Tag,
Der Hagen

Mittwoch, 2. Juli 2008

Neunte Woche

Oh es schleift,… (von meiner Seite aus)

Hi @ all,

sorry, für die verspäteten Einträge. Aber ich hatte noch keine Zeit gefunden, was zu schreiben.
Ich hoffe, ihr habt die Niederlage verkraftet oder haben ich da wieder Wunden aufgerissen? ;-)
Was ist letzte Woche passiert? Ich habe verschiedene, kleinere Projekte abgeschlossen, die sich jetzt in der Testphase befinde. Aber ich bin guter Dinge, dass sie diesen Test bestehen werden.
Am Anfang der Woche, hatte ich noch immer mit dem Problem zu kämpfen, dass ich die Software auf meinem lokalen Rechner nicht zum laufen bekommen habe. Auch ein Arbeitskollege konnte mir nicht helfen und wir haben verschiedene Szenarien durchgespielt und den Fehler einfach nicht gefunden. Im Endeffekt hat sicher herausgestellt, dass ich die falsche ODBC-Verbindung ausgewählt hatte. Statt System-DNS, hatte ich User-DNS selektiert. Was so ein kleiner Fehler ausrichten kann. Egal, nun lief alles und ich konnte mich daran machen und meine erste Aufgabe lösen.
Diese bestand darin, dass der Nutzer, der einen Bug über das Internet einträgt, sein Password ändern kann. Ich habe mir gedacht, dass das Password, in der Datenbank, als MD5 oder einer anderen Verschlüsselungsart gespeichert ist. Aber dem war nicht so. Es wurden nur Zahlen in die Datenbank geschrieben. Somit habe ich mich im Internet erkundigt, welche Arten von Verschlüsselungen es gibt und es gibt einige. Jedenfalls, vermute ich, dass sie einen asynchronen Schlüssel verwendet haben und somit war es mir nicht möglich den Algorithmus zu entschlüsseln.
Zufälligerweise habe ich eine *.dll gefunden, welche es ermöglicht das Password neu in die Datenbank zu schreiben (ohne Vorüberprüfung). Nun hatte ich mir gedacht, ob ich da nicht die Methode extrahieren könnte und mir den Algorithmus anschauen könnte, wie sie das Password verschlüsseln. Leider vergeblich!
Wozu brauchte ich das? Ganz einfach, ich wollte, dass der User als erstes sein altes Password eingibt, um zu überprüfen, ob es auch tatsächlich der gleiche User am Rechner sitzt und dann wollte ich das neue Password in die Datenbank schreiben. Dadurch, dass ich keinen Weg gefunden, wie sie das Password in die Datenbank geschrieben haben, blieb mir nichts anderes übrig, als eine simultan Anmeldung zu machen, um zu überprüfen ob es der User auch ist. Wenn diese geklappt hat, dann wird das Password mit der gefunden *.dll in die Datenbank geschrieben. Nach dem ich nun den Lösungsweg gefunden hatte, ging die Implementierung wie von selbst. Natürlich, musste ich dies mit ASP machen.
Die zweite Teilaufgabe bestand darin, dass sich der User die verschiedenen Fehlermeldungen, die er gesendet hat, sich sortiert ausgeben lassen kann. Diese war keine so spannende Aufgabe, wie die mit dem Password. Ich musste nur schauen, auf welche Tabellen er zugreift und das SQL-Statement mit desc order by… oder asc order by … erweitern. Die Anfragen, auf die Datenbank gingen ohne größere Probleme. Nur musste ich mich Javascript herumschlagen, damit die Interaktionen auch richtig ausgeführt werden. Wie ich Javascript liebe.
Das Ergebnis sieht so aus, dass in einer Tabelle alle Werte aufgelistet werden. Neben den Tabellenüberschriften, befinden sich Buttons (Grafiken), mit denen es möglich ist die Daten sortiert auszugeben zu lassen. Natürlich, könnte man dies noch verbessern. In dem man nur eine Anfrage an die Datenbank sendet und das Ergebnis in einem Array speichert und dann dieses sortieren lässt. Damit würde man die verschiedenen Anfragen an die Server sparen und Javascript läuft sowieso auf dem Client. Ich hoffe nur, dass kein Arbeitskollege auf die Idee kommt! ;-)
Die letzte Aufgabe bestand darin, dass die offnen Anfragen vom User zu schließen. Zur Zeit läuft es so ab. Wenn der User einen Bug findet, dann trägt er diesen in das Websystem ein. Diese Anfrage wird an einen Mitarbeit gesendet und dieser versucht eine Lösung zu finden und sendet diese zurück an den User. Ist nun eine Lösung gefunden wurden, dann kann es unter Umständen passieren, dass man keine Resonanz vom User erhält und die Fehlermeldung bleibt im System als OPEN stehen. Ich sollte es nun so machen, dass es dem User ermöglicht, seine eigenen gesendeten Bugs zu schließen (im Websystem).
Als erstes habe ich mir angeschaut, wie das alles abläuft. Sprich, ich habe angeschaut, in welche Tabellen, werden welche Werte rein geschrieben, wenn ein Bug gesendet wird. Diesen waren nicht allzu viele Tabellen, um genau zu sein zwei. Dann habe ich mir angeschaut, was passiert, wenn eine Anfrage von OPEN auf CLOSED gesetzt wird. Dies waren ebenfalls nur zwei Tabellen. Nun musste ich es nur noch implementieren und meine insert-Anweisungen ausführen und das war’s. Die Implementierung ging auch schnell von statten.
Nach dem ich nun diese Aufgaben abgearbeitet hatte, habe ich eine Rundmail geschrieben und gesagt, dass alle, die Zeit und Lust haben, die neue Implementierung auf meinen Rechner ausprobieren sollen und falls Änderungen oder Probleme entstanden sind, dann sind diese herzlich Willkommen. Ende der nächste Woche, werden dann die Änderungen übernommen.

Am Freitag haben wir unseren Country Manager verabschiedet. Denn er geht nach Hong Kong und eröffnet dort ein neues Büro und wird die neuen Mitarbeiter dort einlernen. Deshalb hieß es, zum Mittag, auf ins Resturant! Wir haben wieder, bei dem Chinesen gegessen. Leider musste ich diesmal wieder cheaten. Denn ich bekomme es einfach nicht auf die Reihe, mit den Stäbchen zu essen. Obwohl ich mir vorher ein paar Nachhilfestunden geholt hatte. Wir haben hier, in dem Haus, eine junge Frau aus Hong Kong und ich hatte sie mal gefragt, ob sie mir nicht mal zeigen könne, wie man mit Stäbchen isst. Sie hat mir auch verschiedene Griffe gezeigt und ich habe dann geübt. Aber nach 5 Minuten, habe ich eine Krampf in meiner Hand bekommen und aufgeben. Egal, ich musste jedenfalls wieder cheaten. Aber das Essen, hat mal wieder, wunderbar geschmeckt.
Abends haben wir uns dann in einem thailändischen Restaurant getroffen. Ich hatte erstmal meine Sorge, was für Sachen ziehe ich an. Eher feierlich oder normal. Ich entschied mich für das zweiter und lag damit genau richtig. Es war interessant zu sehen, wie die Arbeitskollegen mit normalen Sachen aussehen und was sie anziehen. Zum Beispiel, ist mein Vorgesetzter mit einer Schlaghose, Dolce und Gabbana Turnschuhe und einem normalen T-Shirt zum Restaurant gekommen. Normalerweise, kenne ich ihn nur mit Anzugshose, schwarzen Schuhen und einem Hemd. War schon sehr interessant.
Das Restaurant war ein B.Y.O- Restaurant. Sprich, wir mussten unsere eigenen alkoholischen Getränke mitbringen. Mein Vorgesetzter, hatte verschiedene Weinflaschen mitgebracht und ich konnte nun, zum ersten Mal, neuseeländischen Wein kosten. Als erstes hatte ich einen Weiß-Wein, der mir auch sehr gut geschmeckt hatte. Ich als nicht Weinkenner, versuche mal den Geschmack zu beschreiben. Er war sehr süßlich und hat geprickelt im Mund. Keine Ahnung, wie ich es besser beschreiben soll. Dann hatte ich einen Rot-Wein. Sowas habe ich noch nie getrunken. Dieser Rot-Wein kam von der Südinsel und war sehr trocken. Nach dem man den schluck in den Magen verabschiedet hatte, hatte mein einen sehr eigenen Geschmack auf der Zunge gehabt. Diesen kann ich leider nicht beschreiben und stark war. Danach, hat es mich erstmal so richtig geschüttelt. Das thailändische Essen hat auch sehr gut geschmeckt. Aber leider war es viel zu scharf, für mich jedenfalls. Denn die Kiwis lieben scharfes.

Das war die vergangene Woche. Abwechselungsreich und mit vielen Eindrücken und Geschmäckern.
Bis die Tage,
der Hagen

P.S.: Ich glaube, dass war der längste Eintrag!!!