Neues Wordpress Theme online - Bad Lausick
Schaut bei Interesse auf unserer Themepage nach. Ihr findet dort Themes für Euer Wordpress! Soeben ist das Theme Bad Lausick hinzu gekommen: Es beruht auf einem schicken HDR Bild.
![]()
Schaut bei Interesse auf unserer Themepage nach. Ihr findet dort Themes für Euer Wordpress! Soeben ist das Theme Bad Lausick hinzu gekommen: Es beruht auf einem schicken HDR Bild.
![]()
25.06.2008, dieses Datum stellt etwas Besonderes dar.

An diesem Tag wird Eclipse Ganymede offiziell released. Für alle die es nicht erwarten können, stellt eclipse.org schon jetzt „latest build“ Pakete bereit. Um die Entscheidung leichter zu machen, ob man nun auf die neue Version 3.4 wechseln soll, möchte ich an dieser Stelle ein paar Features erwähnen die im neuen Release besonderst hervor stechen. Ich habe dazu den Release Candidate 2 getestet, dessen Stabilität schon jetzt überzeugt. Einige neue Features sind:
Hinzu kommt, dass die Core Entwickler dem Basis Framework unzählige Bugfixes verpasst haben, was der Stabilität von Eclipse 3.4 nur zu gute kommt. Als Fazit kann man sagen, dass die neue Version 3.4 viele tolle Neuerungen bereit hält. Jedoch sollte mit dem Umsteigen bis zum Final Release gewartet werden. Ist ja nichtmehr lange ![]()
Heute ist unser Raid-Controller gekommen.
Verpackung bei der Ankunft:
Wie man auf dem Bild sieht, ist dieser gut verpackt, weil man beachte er ist für einen 1HE-Server.
Nachdem es ausgepackt war, sah es so aus:
Was lernt man daraus? Safety First!
JBoss-Cache, bekannt als ein verteilter In-Memory-Cache, hat ein Gesicht bekommen. Manik Surtani hat eine GUI zu Demo-Zwecken für den JBoss-Cache-Bibliothek veröffentlicht. Damit kann man JBoss-Cache nicht nur vorführen, sondern auch in eigenen Umgebungen die Konfiguration und das Verhalten testen.
Heute hatte ich wieder einmal ein Problem, was speziell den InternetExplorer betrifft. Ziel war es einen transparenten Button (INPUT Type=Submit) zu erzeugen, der sich über einen beliebigen Text legt. Hintergrund hierfür ist, dass der IE6 ja das Button-Problem hat und zusätzlich im JSF-Framework einfache Links nicht für die Navigation (Navigation-Rules) verwendet werden können. Die Idee dahinter ist daher einen SPAN-Tag mit dem gewünschten Inhalt zu haben und darüber ein transparentes INPUT-Feld zu legen.
In den Browsern Firefox, Safari und Opera funktioniert dies auf Anhieb problemlos. Hierzu musste einfach dem Span-Tag die Position relative verpasst werden und das innere Input-Feld wurde absolut positioniert (Breite / Höhe 100%).
Im IE gab es dann jedoch schon den ersten Fehler. Der Button war weg!
Da der Button als Value nichts hat und zusätzlich transparent ist und keinen Rand besitzt wurde dieser einfach gar nicht gerendert und die Größe ignoriert. Er war nicht anklickbar. Abhilfe schafft hier das Setzen eines Hintergrundbildes in Form eines transparenten GIF-Pixels.
Im IE6 gab es zusätzlich noch das Problem, dass dieser die geerbte Breite von 100% nicht vom Elternelement mit Position, als in unserem Fall das Span-Tag, bezog, sondern vom Body selbst. Damit war der Button natürlich viel zu Breit. Einen Hinweis hierzu habe ich auf http://www.satzansatz.de/cssd/onhavinglayout.html gefunden. Dort wird das Verhalten des IEs beim Rendern erläutert. Abhilfe schafft hier ein display:inline-block im Span-Tag.
Der fertige Code sieht dann wie folgt aus:
<?xml version=”1.0″ encoding=”UTF-8″ ?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>
<html xmlns=“http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8″ />
<title>Insert title here</title>
</head>
<body>
<form method=“get” action=“http://google.de/search?q=”>
<p><input type=“hidden” name=“q” value=“text” />
text davor
<span style=“position: relative; display:inline-block“><a href=“#”>link</a><input style=“position: absolute; cursor:pointer; left: 0px; width:100%; top: 0px; height: 100%; background:transparent; background-image:url(‘trans.gif‘); border: 0px solid #0000ff ; margin: 0px; padding: 0px“ type=“submit” name=“button” value=“” /></span>
text danach
</p>
</form>
</body>
</html>
Dies kann nun als CommandLink-Code verwendet werden, ohne dass hierfür JavaScript auf der Client-Seite notwendig ist.
Wir werden in mehr oder weniger großen Abständen eine Sammlung von Wordpress Themes online stellen. Im Moment stehen zwei Themes zum Download bereit: ModernGreenTimes und BlueBlog.
Aktuell haben wir ein weiteres Theme erstellt: Photorama. Es liegt in englischer und deutscher Version vor.
Wir werden das Repertoire natürlich noch erweitern. Viel Spaß mit den Themes
Heute erreichte mich die Exception java.rmi.NoSuchObjectException mit der Meldung “No such object in table”. Diese Meldung habe ich zuerst nicht ganz verstanden, denn der Client hat ja zuvor über Lookup das Objekt erfolgreich geholt. Dennoch trat anschließend bei der Verwendung diese Meldung auf.
Das Problem ist jedoch so einfach wie zugleich auch etwas versteckt. Bei einem Lookup des Clients erfolgt dies auf die RMI-Registry. Diese hält die Stubs bereit und bei einem Lookup erhält der Client Informationen wie er zum eigentlichen Remote-Objekt gelangt. Der Lookup war also kein Problem. Bei der ersten Verwendung des erhaltenen Objektes wird nun eine Verbindung zum RMI-Server aufgebaut und dann das Remote-Objekt verwendet. Dies war jetzt nicht mehr da und damit kam es zu dieser Meldung. Aber warum war es nicht mehr da? Ganz einfach: Der Garbage Collector hatte es aus dem Speicher entfernt.
Die Lösung ist daher, dass die Instanz, die beim Erzeugen des UniCastRemoteObjects verwendet wird, mit gehalten werden muß, damit diese nicht vom GC entfernt wird.
RMI ist ja das Werkzeug schlechthin um verschiedene Javaprozesse miteinander kommunizieren zu lassen. Es können damit entfernte Methoden aufgerufen (Remote Method Invocation) werden, als wäre die Klasse lokal verfügbar. Da sich Java selbst um die ganze Kommunikation über TCP kümmert, hat man natürlich wenig Einflussmöglichkeiten. Betreibt man nun einen RMI-Server hinter einem NAT-Router und möchte diesen vom Internet aus zugreifbar machen, so wird einem immer wieder auf Clientseite eine Exception um die Ohren fliegen, die sagt dass das Netzwerk mit z.B. der IP 192.168.x.x nicht verfügbar wäre. Grund hierfür ist, dass der RMI-Server seine lokale IP nach außen sendet und nicht seine globale IP. Abhilfe schafft hier der Start der Applikation mit einem Parameter:
java -Djava.rmi.server.hostname=GLOBALEIP ...
Ab jetzt sendet der Server die globale IP als Hostnamen und ein Zugriff von Außerhalb ist problemlos möglich.
Wieder einmal und wahrscheinlich auch nicht zum letzten Male bringt ein Browser einem zur Weißglut. Diesmal ist es (außnahmsweise) mal nicht der IE, sondern der Firefox. Dieser hat, auch in der aktuellsten Alpha (Firefox 3 Alpha 3), einen gravierenden Bug bei der Anzeige von Scrollleisten. Aber seht selbst:

Der gelbe und der Blaue Layer sind eigentlich über den Layer mit dem Bild und sollten demzufolge auch die Scrollleisten überdecken. Das es eigentlich auch geht zeigt der Firefox 2 unter Windows:

Und auch ein anderer Browser, hier der Safari, kann es unter Mac wunderbar anzeigen:

Für alle, die es selbst testen wollen bleibt noch die HTML-Variante.
Kann man nur hoffen, dass der Fehler bald behoben wird.
Gerade in komplexeren Anwendungen weiß man hin und wieder nicht welchen Typ eine bestimmte Variable hat und möchte daher dies prüfen. Ich hatte ja bereits in der Vergangenheit beschrieben, wie man zwischen Funktionen und Objekten unterscheidet.
Da sich Arrays jedoch auch als Objekte ausgeben hilft eine Unterscheidung zwischen einem Array und einem Objekt leider nicht. Abhilfe schafft hier jedoch eine Besonderheit bei “instanceof”:
var a = Array(); var b = new Object(); alert(a instanceof Array); alert(b instanceof Array); alert(a instanceof Object); alert(b instanceof Object);
Als Ausgabe ist hier zu erwarten: true, false, true, true