Schriften finden mit Opcion

Screenshot Opcion Das Java Programm Opcion listet alle auf dem Rechner installierten Schriften übersichtlich mit einer Schriftprobe auf. So finden man schnell eine passende Schrift. Den Anzeigetext, sowie Größe und Format der Vorschau können beliebig eingestellt werden.

JasperReports und iReport Designer

Screenshot iReportDas Projekt TrafficAnalysis wurde um eine Report-Funktion erweitert, die das Ergebnis der Berechnung automatisch in eine Html- oder PDF-Datei wandelt. Das Zielformat und die Gestaltung des Ergebnisses sollten vom Projekt unabhängig festgelegt werden können. Zum Einsatz kam JasperReports und iReport Designer (ein freies und leistungsfähiges Werkzeug zur Definition der Reports). Die JasperReports-Bibliotheken beinhalten einen umfangreichen XML-Dialekt zur Beschreibungen von Berichten (mit einfachen Berechnungen und Bedingungen). Es stehen fertige Klassen zur Verfügung mit denen die Vorlagen mit Daten befüllt werden können (SQL, CSV usw.). Es werden viele populäre Formate für die Ausgabe unterstützt (z.B. PDF, Text und HTML).

Installation

Die Suche nach den benötigten Bibliotheken gestaltete sich ungewöhlich schwierig, da eine Menge Projekte eingebunden werden und diese in verschiedenen Abhängigkeiten zu finden sind. Für die Integration in die eigenen Projekte hat sich der Weg über den iReport Designer bewährt, dessen Einrichtung – dank des Installers – denkbar einfach ist. Die folgenden Jar-Archive liegen alle im lib Verzeichnis unterhalb des iReport-Programmverzeichnisses.

jasperreports-1.2.8.jar
commons-digester-1.7.jar
commons-collections-2.1.jar
commons-beanutils-1.5.jar
commons-logging-1.0.2.jar
commons-javaflow-20060411.jar
itext-1.3.1.jar
poi-2.0-final-20040126.jar
jdt-compiler-3.1.1.jar
jfreechart-1.0.0.jar
jcommon-1.0.0.jar

Je nach Anforderung müssen noch weitere Archve eingebunden werden. So liegt dem iReport auch eine Bibliothek bei, welche die Verarbeitung von Microsoft Excel Dateien ermöglicht.

Grundlagen

Ein Report ist die tabellarische und grafische Darstellung einer Datenmenge. Jedem Report liegt eine Defiition zu Grunde. Diese wird bei der Vorbereitung mit den ermittelten Daten gefüllt und in das eigentliche Ergebnis (z.B. eine PDF-Datei) überführt.

Ablauf JasperReports

In unserem Beispiel (Code Ausschnitt) übersetzen wir die (mit iReport) erstellte Definition, legen eine HashMap mit Parametern an und lassen eine DataSource auf die zuvor erzeugte CSV-Datei zeigen. In der letzten Zeile wird alles zusammen gebracht und in ein PDF-File geschrieben.

[code lang=“java“]JasperReport jasperReport;
JasperPrint jasperPrint;

String d = „c:\\temp\\report.jrxml“;
jasperReport = JasperCompileManager.compileReport(d);

// Parameter

HashMap map = new HashMap();

map.put(„TA_REPORT_TITLE“, title);
map.put(„TA_MAX_ROWS“, new Integer(maxRows));

// Daten

JRCsvDataSource dataSource = new JRCsvDataSource(
new FileReader(„c:\\temp\\report.csv“));

dataSource.setColumnNames(
new String[]{„datum“,“ip“,“rich“,“proto“,“port“,“ges“,“emp“});
dataSource.setFieldDelimiter(‚;‘);
dataSource.setDateFormat(new SimpleDateFormat(„yyyy-MM-dd“));
dataSource.setUseFirstRowAsHeader(true);

// Report

jasperPrint = JasperFillManager.fillReport(jasperReport, map, dataSource);

String p = „c:\\temp\\report.pdf“;
JasperExportManager.exportReportToPdfFile(jasperPrint, p);[/code]

Unified Modeling Language

Die Projekte werden größer und die Abläufe komplexer. Um da den Überblick zu bewahren und neue Entwicklungen gezielt umsetzen zu können, hilft die Unified Modeling Language (UML).

Dieser Beitrag betrachtet deren Integration in die von uns eingesetzten Werkzeuge und versucht eine Empfehlung für den praktischen Einsatz zu finden.

Screenshot JudeDie Jude Community Edition ist unsere aktuelles Werkzeug bei der Arbeit mit der UML. Die sich auf das grafische Design neuer Programmteile und den Export von Diagrammen (für die Dokumentation) beschränkt. Das kostenlose Programm kennt kennt alle wichtigen Diagrammtypen und besitzt unter anderem die Möglichkeit Java-Code zu generieren. Der Import (Reverse Engineer) kommt leider noch nicht mit Java 1.5 klar.

Screenshot NetbeansDie Netbeans IDE ist seit vielen Jahren die Basis unserer Java-Entwicklungen. Um so erfreulicher sind die Fortschritte der letzten Monate. Die aktuelle Version Netbeans 5.5 hat alle Erwartungen übertroffen. Nach der Installation des Enterprise Pack, kann die UML Unterstützung über das Beta Update Center nach installiert werden. Folgende drei neue Projekttypen stehen dann zur Verfügung:

  • Platform-Independent Model: Dieser UML-Projekttyp wird fÜr reine Modellierungsprojekte ohne Sourcecode-Generierung genutzt.
  • Java Platform Model: Über die Auswahl dieses Projekttyps können optional UML-Modellierungsprojekte mit separaten NetBeans-Java-Projekten assoziiert werden. Damit kann dann eine bidirektionale Synchronisierung zwischen UML-Modell und Java-Sourcecode erfolgen.
  • Java-Platform Model by Reverse Engineering: Wenn bereits umfangreicher Sourcecode in bestehenden Java-Projekten existiert, dann kann dieser auch über Reverse Engineering des Projektes in das UML-Projekt importiert werden.

Als Diagrammtypen stehen Klassen-, Aktivitäts-, Zustandsdiagramme, Deployment-, Sequenz-, Komponenten-, Kollaborations- und Use-Case-Diagramme zur Verfügung (in denen auch UML2-Konstrukte verwendet werden können).

Aus einem UML-Projekt lassen sich komplette HTML-Dokumentationen der Modellelemente und Diagramme erzeugen. Wahlweise können einzelne Diagramme als Grafik exportiert werden.

Screenshot EclipseEclipse ist sicher mehr als ein universeller Editor. Jedoch kommt es in unseren Projekte genau in diesem Zusammenhang zum Einsatz. Die UML Integration ist mit verschiedenen Plug-In’s nachzurüsten. Wir haben uns für EclipseUML von Omondo entschieden. Das Tool beherrscht verschiedene Diagrammtypen und kann in der Free Edition begrenzt Code generieren und automatisch Modelldaten importieren.

Unser Fazit

Der bisherige Ansatz, UML ausschließlich zum Entwurf und zur Dokumentation einzusetzen, wird den aktuellen Programmöglichkeiten nicht mehr gerecht. Die Integration von UML in Netbeans fordert eine stärkere Integration in den Entwicklungsprozess.

Netzüberwachung mit MRTG

mrtg.png Die Auslastung eines Netzwerks messen und die Ergebnisse grafisch aufbereiten, das ist das Spezialgebiet von MRTG. Die Software ist in Perl (sowie etwas C) geschrieben und wird mit der GNU GPL verteilt. Der Multi Router Traffic Grapher kann auch beliebige andere SNMP-Variablen abfragen. Die Firma SOMIX betreibt das MRTG Templates Archive in dem sich an die 200 Abfragebeispiele für die verschiedensten Hersteller finden lassen. Unter http://www.linux-magazin.de findet sich ein deutschsprachiger Artikel, der die Installation und den Einsatz des MRTG beschreibt.

Linux Minis

Mailprogramm mutt

Der Befehl mutt -f Mailbox-Dateiname öffnet eine Mailbox. Mit b wird die aktuelle Email weitergeleitet. Mit T kann man mehrere Emails markieren (z.B. mit dem Regex „.*“). Mit ; leitet man einen Befehl für mehrere markierte Emails ein. Die Folgende Befehlsfolge versendet alle Emails einer geöffneten Mailbox: T + .* + ; + b

gelöschte Dateien retten

Unter dem ext2-Dateisystem kann man mit debugfs gelöschte Dateien wiederherstellen.

# umount /home
# debugfs /dev/sdd3
debugfs: lsdel
4711 0 93678 6/ 6 Sat Jul 6 17:23:29 2002
239 1000 20 1/ 1 Sat Jul 6 15:27:15 2002
184 1000 4377 1/ 1 Mon Jul 1 23:22:57 2002
debugfs: dump <239> /tmp/saved
debugfs: quit
# mount /home

Die Tabelle von lsdel zeigt in Spalte 1 die Inode-Nummer, in Spalte 2 die User-ID (vom löschenden User), in Spalte 4 die Dateigrösse und in Spalte 6 das Datum des Löschens.

Netzwerkdurchsatz messen

Für einfache Messungen ohne Installationsaufwand eignet sich hervorragend Netio. Von den beiden an der Messung beteiligten Rechner übernimmt einer die Rolle des Servers (er wartet auf Anfragen) und der jeweils andere die des Clienten (er fragt den Server). Wenn das Netio-Paket geladen und entpackt ist, wechselt man für einen Serverstart einfach in das bin-Verzeichnis und startet: win32-i386.exe -s -t

Netio Server

Der Parameter -s besagt, das der Server gestartet werden soll. -t veranlasst eine Messung per Tcp (-u wurde UDP messen und beide Optionen weggelassen würde per NetBIOS testen). Der im Screenshot gelb markierte Teil entsteht erst bei der Messung. Der Server meldet den Verbindungsaufbeu des Clienten und die Größe der aktuell getesteten Pakete.

Netio Client

Der Client wird mit dem Befehl win32-i386.exe -t Server-IP gestartet. Auch er bekommt mit dem zusätzlichen Parameter -t die Anweisung per TCP zu messen (siehe oben). Das Ergebnis wird Zeile für Zeile für die gesendeten und empfangenen Pakete angezeigt.

Wer den Komfort einer grafischen Oberfläche nutzen möchte, kann Jperf einsetzen. Es verwendet das Tool iperf. Iperf kann auch ohne die Installation von Jperf analog Netio eingesetzt werden. Den Server startet man mit iperf -s und den Clienten mit iperf -c Server-IP. Mit der Option -t 60 kann man die Zeit (wie lange der Test läuft) von Standard 10s auf 60 Sekunden erhöhen.

Jperf Sreenshot

Die Installation der grafischen Oberfläche Jperf ist denkbar einfach. Es wird eine Java 1.4 (oder höher) Umgebung vorausgesetzt. Das Archiv entpackt man an einen Ort seiner Wahl. In diesen legt man eine neue Datei mit dem Namen jperf.bat an und editiert den Inhalt wie folgt:

[code lang=“dos“]REM — Konfiguration ———————————–

SET JAVA_BIN=C:\Programme\Java\jre1.5.0_08\bin\java.exe

SET JPERF_DIR=C:\Programme\jperf-1.0

SET IPERF_DIR=C:\Programme\iperf-1.7.0

REM — Skript ——————————————

SET PATH=%PATH%;%IPERF_DIR%

SET JPERF_JAR=%JPERF_DIR%\jfreechart-0.9.6.jar
SET JPERF_JAR=%JPERF_JAR%;%JPERF_DIR%\jcommon-0.7.2.jar
SET JPERF_JAR=%JPERF_JAR%;%JPERF_DIR%\jperf.jar

%JAVA_BIN% -classpath „%JPERF_JAR%“ Jperf[/code]

Im Bereich Konfiguration müssen die Pfade an die eigenen Ordner angepasst werden.

Das Skript startet die Jperf-Oberfläche und ermöglicht die komfortable eingabe aller Iperf-Parameter. Einen Server startet man im einfachsten Fall durch die Auswahl Type gleich „Server“ und einen Klick auf die Run-Schaltfläche. Für den Klienten (Standard-Typ der Oberfläche) gibt man im Eingabefeld Server dessen Ip an und klickt ebenfalls auf Run.

Zusätzlich zur Iperf-Ausgabe (Tab Output) wird das Ergebnis grafisch dargestellt.

Jperf Result Screenshot

In der Praxis wird man das Iperf-Archiv auf den „anderen Rechner“ kopieren und einen Server starten. Die Qualität der Jperf-Auswertung rechtfertigt den Installationsaufwand. Die gefundenen Ergebnisse sind sowohl bei netio als auch bei iperf immer nur ein aktueller Bild der Netzwerkperformance. Sie eignet sich auf keinen Fall zur Berwertung der verwendeten Rechner. Lediglich einzelne Komponenten lassen sich bei gleichen Rahmenbedingungen bewerten. So kann man durchaus eine Aussage über die Qualität der aktualisierten Firmaware (beispielsweise des Funktrouters) treffen, wenn alle anderen Bedingungen gleich geblieben sind.

Weitere Informationen finden sich auf den folgenden Links. So beschreibt zum Beipiel der Artikel DT Performance Messung, wie man die Festplatten-Performance in seine Tests mit einbeziehen kann. Das die Ergebnisse wesentlich besser geignet sind, um einen Fileserver zu bewerten versteht sich von selbst.

http://www.nwlab.net/art/netio/netio.html
http://www.exchange2000faq.de