Monatsarchiv für Mai 2009

Seit einiger Zeit habe ich (mal wieder) ein neues Firefox Plugin, das Google Preview Plugin fügt eine Vorschau auf die jeweilige Webseite in die Google Ergebnisse ein. Das macht natürlich nur für grafische Seiten wirklich Sinn, aber es hilft mir die Qualität der Suchergebnisse besser beurteilen zu können.

Suchergebnis mit Plugin

In meinen letzten Projekten hab ich eine Menge neue Erfahrungen über eine ganz alte Maschine gemacht. Während ich bisher im wesentlichen mit PC basierten Systemen (Windows, Solaris, Unix) zu tun hatte, setzen meine derzeitigen Kunden die IBM AS/400 als zentralen Datenbankserver ein (das System hat in der Zwischenzeit einige Namensänderungen hinter sich, der Begriff AS/400 ist aber nach wie vor am weitesten verbreitet). Die Maschine stammt auf den 80er und wurde als integrierter Server mit für die Datenverwaltung in mittelständischen Betrieben konzipiert. Dabei wurde Software und Hardware als Bundle geschnürt und der Kunde hatte praktisch eine Komplettlösung für seine Unternehmssoftware. Der Zugriff erfolgte dann über Terminals. Software war textbasiert und wurde oft in COBOL oder RPG geschrieben.

Da dieser Systeme oft den Kern der betrieblichen Anwendungen bilden, haben sie bei vielen mittelständischen Kunden überlebt. Zwar kommen heute keine Terminals mehr zum Einsatz, sondern Windows basierte Emulationen, dere Text basierte Zugriff scheint aber in vielen Unternehmen nach wie vor gang und gebe zu sein.

Nun hatte ich die Aufgabe auf die Daten in einem solchen  System mit Java zuzugreifen. Von großem Vorteil ist es das IBM das AS/400 Toolbox Projekt massiv unterstützt, es bietet mit dem Treiber com.ibm.as400.access.AS400JDBCDriver einen vollwertigen JDBC Treiber liefert mit dem man auf die Datenbank zugreifen kann.

Wie so oft liegt der Teufel aber hier im Detail,  so dass einige Besonderheiten zu beachten sind:

  • auf der AS/400 spricht man nicht von SQL Schema sondern von Bibliotheken, technisch ist das das selbe aber man redet gerne aneinander vorbei. Erschwerend kommt hinzu, dass auf der Plattform das Trennzeichen zwischen Schemaname und Tabellenname konfigurierbar ist, default ist der Slash (‘/’) nicht wie bei JDBC SQL der Punkt (‘.’):
  • der AS/400 Treiber fragt bei einem falschen Kennwort/Benutzernamen in der Regel interaktiv (sprich mit einer Swing GUI) nach dem korrekten Benutzernamen, möchte man dieses Verhalten (z.B. bei einer Webanwendung) nicht haben muss man explizit prompt=false bei der Connection URL mitgeben
  • die AS/400 unterstützt keine in Memory Transaktionen, spricht man kann i.d.R. nicht so einfach Daten via SQL schreiben. Um Daten in eine AS/400 Tabelle schreiben zu können muss diese journalisiert sein. Dazu muss mit einem Verwaltungstool für die entsprechende Tabelle ein Journalreceiver erstellt und die Journalisierung explizit gestartet werden. Mach man das nicht bekommt man nur kryptische Fehlermeldungen.
  • auf der AS/400 können pro Tabellenspalte unterschiedliche Zeichensätze verwendet werden. Per default sind die Tabellen i.d.R. nicht UNICODE fähig so dass man oft Probleme mit Internationalen Zeichen bekommt.  Wenn man die Möglichkeit hat ein eigenes Datenmodell zu erstellen, ist es empfehlenswert Texte in einer Spalte vom Typ VARGRAPHIC (eine Spezielle VARCHAR Variante) mit einer CCSID von 13488 zu erstellen. Ist die Tabellendefinition dagegen vorgegeben wird das ganze etwas komplizierter.
  • stammen die Daten aus einer Legacy Anwendung werden häufig Tabellenspalten mit fixen Breiten verwendet, sprich man erhält eine Sting der jeweils mit Leerzeichen aufgefüllt ist. Für die Anwendung in Webanwendung muss man dann in der Regel jeweils explzit ein .trim() aufrufen.

Seit einigen Jahren ist Eclipse meine bevorzugte IDE. Auch wenn Netbeans mitlererweile in meinen Augen gleichgezogen hat und teilweise sicherlich auch besser ist, reicht es noch nicht um mich zum Umstieg zu bewegen.
context_menu
Trotzem gibt es Dinge die ich manchmal lieber von der Kommandozeile oder mit anderen Werkzeugen mache (Grafiken editieren, Binärdateien bearbeiten….).  Da das Suchen der entsprechenden Datei immer etwas aufwändig ist, habe ich dieses nützliche Plugin gefunden, das die Optionen Open in Command Prompt und Open in Windows Explorer ins Context Menü integriert.

Keine große Sache aber immer wieder sehr nützlich, schade eigentlich dass es das nicht im Standard gibt.