GWT und SOP

Die SOP (Same Origin Policy) ist wohl eines der Probleme mit dem schon eine Menge Webentwickler konfrontiert wurden. Eine Suche bei Google führt zu einer GWT Seite auf der die Nutzung von

<add-linker name="xs"/>

empfohlen wird. Leider führte das Einbinden dieses Linkers nicht zu dem gewünschten Ergebnis. So war es nicht mehr möglich den Development Modus zu nutzen. Die Lösung ist das Einbinden des xsiframe-Linkers. Dieser ermöglicht es, wie auch schon der xs-Linker, die [Modulname].nocache.js einfach in einer auf einem anderen Server liegenden HTML einzubinden allerdings bietet der xsiframe-Linker zusätzlich noch die Nutzung des Development Mode.

Also einfach folgende zwei Zeilen in die .gwt.xml einfügen:


<inherits name="com.google.gwt.core.Core" />
<add-linker name="xsiframe" />

Und schon kann man die Modulname.nocache.js per URL z.B. http://127.0.0.1:8888/Modulename/Modulename.nocache.js referenzieren ohne das einem SOP im Wege steht.

‘Drag and Drop’-Dateiexport mit GWT

Um eine Datei schnell exportierbar zu machen, bietet sich die neue HTML5 File-API an. Google Chrome unterstützt derweil sogar den direkten Export von Dateien per ‘Drag and Drop’ aus dem Browser heraus auf den Desktop oder in einen Ordner. Um das ganze im Google Web Toolkit zu realisieren, benötigt man GWT 2.4 und die Datei als Data-URL. Danach ist es quasi ein Kinderspiel:


final Anchor drag = new Anchor();
drag.setText("my xml export");
drag.getElement().setAttribute("data-downloadurl", "text/xml:export.xml:data:text/xml;charset=utf-8," + "export here"); 
drag.getElement().setDraggable("true");
drag.getElement().getStyle().setProperty("userSelect", "none");
drag.getElement().getStyle().setCursor(Cursor.MOVE);
drag.addDragStartHandler(new DragStartHandler() {

	@Override
	public void onDragStart(final DragStartEvent event) {
		event.getDataTransfer().setData("DownloadURL", event.getRelativeElement().getAttribute("data-downloadurl"));
	}
});

Hier exportieren wir als Beispiel eine XML-Datei. “export here” muss durch den String ersetzt werden, in dem die XML-Inhalte stehen. Man kann auch einfach die “data-downloadurl” nach dem : vor ‘data’ durch eine komplette Data-URL ersetzen, z.B. ein Bild aus einem Clientbundle. Die CSS3-Property “user-select” sorgt dafür, dass beim Draggen der Text nicht markiert wird. Zudem haben wir einen “Move”-Cursor eingebaut.

WP-Cirrus in neuer Version

Am Wochenende wurde unser WordPress-Plugin WP-Cirrus aktualisiert.

Der neue Build wurde teilweise mit dem Google Web Toolkit (GWT) erstellt. Dies erlaubt es uns, optimierte Versionen für verschiedene Browserengines anzubieten, ohne uns um Details der jeweiligen Engine kümmern zu müssen. Die neue Version sollte auf allen gängigen modernen Browsern funktionieren. Im Falle, dass etwas nicht funktioniert oder JavaScript deaktiviert ist, wird eine nicht-animierte Tagwolke angezeigt.

Anmerkungen und Kommentare zum Plugin bitte direkt auf unserer Pluginseite posten!

Verteilung von n Punkten auf einer Sphäre

Um n Punkte annähernd gleichmäßig auf einer Sphäre zu verteilen braucht man definitiv höhere Mathematik. Da gibt es das Thomson-Problem welches versucht mittels Ladungen der Punkte eine Gleichverteilung zu erzeugen oder das Tammer-Problem welches (glaube ich) aus den Punkten Kreise macht und versucht diese dann gleichmäßig zu verteilen. Außerdem existieren noch 2 Spiral-Algorithmen. Dazu gibt es eine nette Seite und zwar hier: http://www.cgafaq.info/wiki/Evenly_distributed_points_on_sphere.

Ich persönlich brauchte nur eine kleine Anzahl (n < 50) von Elementen und diese mussten auch nicht nicht wirklich korrekt verteilt sein, nur soweit, dass man als normaler Mensch annehmen würde, dass sie es sind ;-). Nach längerem suchen und fragen stieß ich auf eine Seite Weiterlesen