Datatools-Plugin für Eclipse

Freundlicherweise liefert Eclipse Europa directement schon das DTP-Plugin mit. Versucht man, das Ding zu bedienen, wachsen einem aber massig graue Haare. Hier mal ein Schnelleinstieg.

– Perspective Database Development öffnen

– Im Datasource Explorer ein neuen Connection Profile anlegen (geht eigentlich recht einfach)

So, nun das erste Select…

Der Knopf für einen Abfrage-Editor ist bestens versteckt: Er befindet sich (wenn man in der DB-Perspektive ist) oben in der Toolbar links der run/debug Knöpfe und ist mit “open scrapbook to edit…” betitelt. Erstmal muß man nun die Connection auswählen und kann dann seine Statements schreiben, um dann – wen wundert’s- wieder rumzusuchen. Es gibt nämlich nicht einfach einen Startknopf oder ähnliches. Der Befehl zum Ausführen versteckt sich im Kontextmenü (“execute all”) oder kann über das Tastenkürzel Strg+Alt+X angesprochen werden.

Erster Eindruck: Ziemlich umständlich das Ding, aber für ein Umsonst-DB-Tool aushaltbar.

Wohnung am Start

Liebe Leserinnen und Leser!

Leh und ich haben heute endlich einen Mietvertrag unterschrieben. Ab November werden wir eine wunderschöne Maisonette-Wohnung in Poll unser (temporäres) Eigen nennen können. Die Wohnung verfügt über einen großen Südwest-Balkon, zwei Bäder (einmal mit Badewanne, einmal mit Dusche), ein großes helles Wohnzimmer mit offener Küche und einen Speicherraum, in dem Gäste untergebracht werden können. Der Boden ist mit Eichenparkett geedelt, die Küche mit schönen Terracotta-Fliesen. Die Wohnung ist super ruhig gelegen und trotzdem fährt man nur 12 Minuten zum Neumarkt.

Jetzt gehen die nächsten Suchen los. Vor allem suchen wir ab Dezember eine Mitbewohnerin. Voraussetzungen: Nett und Nicht-Informatikerin. Wer also jemanden kennt, der Interesse haben könnte, der möge sich bei mir melden. Unser Gecaste wird losgehen, sobald wir richtig eingezogen sind.

Desweiteren suchen wir noch ein paar lebensnotwendige Geräte. Konkret:

– Spülmaschine

– Trockner

– Kühlschrank

– Herd

– Waschmaschine

– Kicker

Wer also in dieser Richtung etwas los werden will oder jemanden kennt, für den das gilt, der schreibe ebenfalls eine Mail an mich.

Und nun noch als Teaser ein paar Bilder (mit freundlicher Genehmigung unseres Vermieters):


Noch für kurze Zeit dürfte unter der Scout-Id 42865085 bei Immobilienscout24.de noch etwas mehr zu sehen sein (inkl. kleinem Video).

PDFs konkateniert als HttpResponse zurückgeben

Um irgendwas mit PDF zu machen, bietet sich die Bibliothek iText an. Die API finde ich persönlich nicht sonderlich schön, aber man hat ja keine Wahl…

Hier ein Snippet, wie man ganze PDF-Dokumente konkateniert und dann als ein PDF ausgibt. Es gibt sicherlich schönere Lösungen. Comments sind immer willkommen. Nachteilig ist hier vor allem die Benutzung von byte[]. Je nach konkretem Anwendungsfall sollte man besser auf Streams umsteigen.

public doGet(HttpServleRequest request, HttpServletResponse response){

byte[][] files = ...;

String fileName = "myfile.pdf";

response.setHeader("Pragma", "public");
response.setHeader("Cache-control", "must-revalidate");
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "filename=" + fileName);

Document document = new Document();

PdfCopy copy = new PdfCopy(document, response.getOutputStream());
document.open();
for (int i = 0; i < files.length; i++) {
PdfReader reader = new PdfReader(files[i]);
int pageNum = reader.getNumberOfPages();
for (int j = 1; j <= pageNum; j++) {
copy.addPage(copy.getImportedPage(reader, j));
}
}
document.close();

}

Arbeiten im Bett

Gerade habe ich meinen Bettarbeitsplatz komplettiert, indem ich mir eine Funktastatur gekauft habe. Vor einigen Wochen schon habe ich einen Widescreen-TFT erworben und an Schnüren von der Decke über das Bett gehängt. Da baumelt das Ding jetzt leicht schräg in etwa einem Meter Höhe über dem Kopfende. Endlich nie wieder das blöde Kopfkissen türmen, um mühsam zu zweit Filme auf dem Laptop zu kucken. Fotos folgen.

Checkliste Java-Projekte

1. …

12. JRE-Kompatibilität

Kommen beim Kompilieren Warnings? Ist dies der Fall, ist zu überprüfen, ob als “deprecated” gesetzte Klassen oder Methoden verwendet wurden. Es gibt einen ganzen Haufen Anwendungen, die mit JDK 1.5 einfach nicht mehr funktionieren, da verwendete Klassen oder Methoden nicht mehr von java.lang (oder anderen APIs) unterstützt werden. Fallen in einer Version Elemente weg, so sind diese in älteren Versionen schon als deprecated gekennzeichnet.

1.6 Projektplanung

In jedem Projektplan ist Zeit zum Refactoren und zur Verbesserung der Performance einzuplanen. Nichts ist schlimmer, als in einem – natürlich auch wieder enorm zeitkritischen – Projekt in den erodierten Sourcen rumwühlen zu müssen und nach und nach immer unwartbareren Code zu pflegen.

14. Testing
14.56 Zufallsgeneratoren überprüfen
Zu testen:
verschiedene Seeds in hintereinander generierten Random-Objekten? Initialisiert man mehrere Random-Objekte hintereinander, z.B in einer Schleife, tut es ein einfaches new Randon(System.currentTimeMillis()) nicht mehr. Auf schnellen Rechnern führt das zu einem gleichen Verhalten der Randoms. Eine Lösung ist die Verwendung eines zusätzlichen Randoms zur Initialisierung.

23. Systemintegration

23.5 Speicherbedarf untersuchen

..

23.6 Garbage-Collection untersuchen

Bei der Systemintegration im Produktiv-, wie auch im Testsystem ist das Verhalten des Garbage-Collectors zu untersuchen.

Die JVM kann dazu mit den Parametern -gc:verbose und -XX:+PrintGCDetails gestartet werden.

Eine weitere interessante Perspektive gibt die Auswertung von jstat:

jps zeigt alle vm-Ids der laufenden Virtual Machines. Befehl ist Teil vom SDK. vm-Id ist typischerweise die pid.

jstat - [-t] [-h <lines>] <vmid> [<interval> [<count>]]
Beispiel: jstat -gcutil -h3 99999 250 200

Ein Tool, dass die Informationen zum Verhalten des Garbage Collector visualisiert, ist visualgc. Hier läßt sich auch der Grund für die Garbage Collection sehen: War es ein System.gc() oder gab es bessere Gründe? Das Tool ist nicht in der JDK 1.5 enthalten, kann aber bei Sun heruntergeladen werden.

Es sollte auch ein Auge auf die Auslastung des Perm-Spaces geworfen werden. Dieser ist unabhängig vom Gesamtheap. Die Größe läßt sich mit -XX:PermSize=..MB und -XX:MaxPermSize=..MB steuern. Im Default sollte die JVM 64MB reservieren, der aber unter mysteriösen Umständen auch schrumpfen kann. Ich bin mir nicht ganz sicher, ob es sich dabei um ein normales Vergrößern des Virtual Spaces ( nicht allozierter, aber reservierter Speicher) handelt. Setzt man die Größe mit -XX:PermSize scheint die Größe sich aber nicht zu verändern.

Bei Serveranwendungen ist es wichtig, das Verhältnis von Young zu Tenured Space zu untersuchen. Finden zuviele Young collections statt? In einer größeren Serveranwendung kann man u.U. eine Ratio von 1:2 festlegen ( -XX:NewRatio=2) (Young 1 : 2 Tenured) .

Im Client-Teil einer Anwendung reichen die default-Einstellungen meist aus.

Haselünne, Herzlake, Löningen

Orte, von denen man nie zuvor gehört hat: Herzlake, Löningen, Haselünne. Im Rahmen eines Wochenendausfluges habe ich ebenjene Lokalitäten nun zum ersten Mal begutachten können. Trübe Käffer, in denen die einzige Unterhaltung aus Kinderkriegen zu bestehen scheint. Was wird aus diesen Menschen, fragte ich mich. Wie reagiert eine sensible Kinderpsyche auf eine reizfreie Umwelt? Wie es der Zufall will, habe ich heute auf der Internetpräsenz des BKA eine Antwort bekommen:

http://www.bka.de/fahndung/personen/meistgesuchte/bahaji/index.html

Die wahre Gefahr für unsere demokratische Grundordnung kommt von innen! Kampf den inländischen Terror-Ausbildungslagern! Für die progressive Urbanisierung Deutschlands!

Das traditionsreiche Mügelner Volksfest

Aus der Mügelner Chronik: “Mügelner Volksfest 1937 Nun liegt auch unser Mügelner Volksfest 1937 wieder hinter uns, das Fest, das mehr als reichlich besprochen wurde. Einmal behauptet man, eine Veranstaltung jage (!!!) die andere, das Volksfest sei überflüssig und z. a. begrüßte man diese Veranstaltung mit der Begründung, dass in Mügeln nun endlich einmal etwas geboten werde. [..] Das Fest nahm einen glänzen Verlauf. Frohe Stimmung war in alle Herzen eingezogen und alles nahm in der großen Gemeinschaft an diesem schönen Feste teil. [..]
Bereits am Sonnabendvormittag hatte unsere Stadt schönsten Schmuck angelegt. Von den Häusern wehten die Flaggen, Transparente über den Straßen ladeten zum Besuche des Festes ein, das alte Rathaus gleichfalls im schönsten Schmuck und Flaggen und mit den Symbolen der verschiedensten Gewerbe geschmückt, während den Marktplatz riesige Masten mit den Symbolen des dritten Reiches umsäumten. So bot unsere Stadt ein festliches Bild, das den beiden hinter uns liegenden Tagen einen würdigen Rahmen gab.”

Quelle: http://www.stadt-muegeln.de/chronik/Dokumente/volksfest_1937.htm

Wald aus Lasagne-Blättern mit Rauke und Pinienkernen

Zutaten für 2 Personen

  • 1/2 Packung Lasagneblätter
  • 1 Packung körnigen Frischkäse
  • 300g Parmesan
  • 100g Pinienkerne
  • 1/2 Packung Rauke
  • 2 Eier
  • 1 Handvoll frisches Basilikum

Rezept:

  1. Pinienkerne rösten
  2. Lasagneblätter bißfest kochen
  3. Pinienkern, Frischkäse, Eier und geriebenen Parmesan vermengen und bei leichter Hitze stocken lassen
  4. klein geschnittene Rauke und gehacktes Basilikum zugeben und vermischen. Salzen und pfeffern.
  5. Die Lasagneblätte dünn mit der entstandenen Paste bestreichen und einrollen. Die Rolle dann zerteilen und die Stücke nebeneinander auf ein Backblech stellen. Variiert man die Dicke und Länge der Stücke, entsteht so ein kleiner Wald aus Röllchen.
  6. Mit Parmesan bestreuen und 20 min bei 200° im Backofen backen