Veröffentlicht in Donnerstag, 15. Mai 2008 von Andreas Höhmann
Es gibt ja bereits einige Videos die Microsofts Surface zeigen, z.B. hier, hier oder hier.
Jetzt habe ich hier ein Video gefunden in dem Robert Levy das ScatteredView-Control des Surface-SDK vorstellt. Und ich bin wirklich beeindruckt … so möchte ich eigentlich JSF-Applikationen entwicklen :-).
Mit wenigen XML-Elementen arbeitet er sich von einem einfachen “Hello World” zu einer Demoapplikation die PNG-Dateien aus einem Verzeichnis als bewegbare, skalierbare Bilder zeigt. Diese kann er mit den Fingern verschieben, drehen usw.
Bin mal gespannt wann ich den ersten Surface-Tisch in einer Kneipe sehe … die Möglichkeiten sind unbegrenzt. Ich denke da an Brettspiele, Speisekarten usw.
Abgelegt unter : Computer | Getaggt: Microsoft, Surface | Keine Kommentare »
Veröffentlicht in Freitag, 9. Mai 2008 von Andreas Höhmann
Auf der Seite www.carbonplanet.com findet sich ein Tool um den CO2 Verbrauch eines Fluges zu ermitteln. Meine geplante Chinareise schlägt also mit knapp 5 Tonnen Treibhausgas zu Buche 
Abgelegt unter : Erde, Umweltschutz | Getaggt: CO2, Emission, Fliegen | Keine Kommentare »
Veröffentlicht in Sonntag, 27. April 2008 von Andreas Höhmann
Ich hoffe dieser Text ist der Anfang einer wunderbaren Serie denn ich kann mir durchaus vorstellen, dass das von mir eben durch Zufall entdeckte noch viele zig mal auf unserem schönen Planeten existiert. Doch worum geht es nun genau?
Nunja, eben wollte ich mich mit Hilfe von Google Maps nach einer Route von Connewitz nach Böhlitz Ehrenberg erkundigen, gebe also beide Orte als Start bzw. Endpunkt ein und lasse mir die Strecke anzeigen. Nun bestand meine Absicht darin, die Strecke mit dem Fahrrad zu bewältigen, d.h. Strasse ist mist, Waldwege sind prima. Als ich mich nun so links und rechts der Strecke entlang bewege, um die Gegend (Rennfahrer würden wahrscheinlich sagen, die Pistenverhältnisse analysieren) zu checken, sehe ich dass hier:

Ich kann die Worte Kiffen, Aggro und Boby lesen. Es muss sich beim Verfasser der Nachricht um eine hochintelligente Lebensform handeln, die unserer Sprache mächtig ist. Alles bisher Entdeckte wird dadurch in den Schatten gestellt. Es ist das erste Mal die Dokumentation einer sogenannten Kornkreises gelungen, der über das übliche geometrische Muster hinausgeht.
Eine neue Dimension der UFO-Forschung wurde an einem sonnigen Sonntag in Connewitz (ein Stadtteil von Leipzig für die die es nicht kennen!) eingeläutet. Ein Wahnsinn sag ich Euch!
Der Fundort ist nun wissenschaftlich, geografisch, google-mappisch korrekt für alle Zeiten eindeutig identifiziert.
Wer kennt noch weitere?
Abgelegt unter : Kornkreise, Spass | Getaggt: Google Maps, Kiffen, Kornkreis | Keine Kommentare »
Veröffentlicht in Freitag, 25. April 2008 von Andreas Höhmann
Today i found a very simple solution for using a Enumeration with a converter in JSF. Other than Rick Hightowers or Dave Brondsena i used the hidden javax.faces.convert.EnumConverter. Why hidden? I can’t find no reference in the JSF 1.2 documentation. But both implementations MyFaces and SunRI contains such a class. And the class is not depreacated. So … let’s use it
public enum EnumType {
A1, A2, A3, A4,
}
public class EnumTypeConverter extends EnumConverter {
public EnumTypeConverter() {
super(EnumType.class);
}
}
<converter>
<converter-id>ENUM</converter-id>
<converter-class>de.ahoehma.jsf.converter.EnumTypeConverter</converter-class>
</converter>
<h:selectOneMenu id="type" value="#{bean.type}">
<f:converter converterId="ENUM"/>
<f:selectItem itemLabel="Type A1" itemValue="A1"/>
<f:selectItem itemLabel="Type A2" itemValue="A2"/>
<f:selectItem itemLabel="Type A3" itemValue="A3"/>
<f:selectItem itemLabel="Type A4" itemValue="A4"/>
</h:selectOneMenu>
Abgelegt unter : JSF | Getaggt: Converter, Enum, JSF | Keine Kommentare »
Veröffentlicht in Donnerstag, 24. April 2008 von Andreas Höhmann
Die ARD beleuchtet diese Woche das Thema “Alter”. Eben hab ich mir dieser Beitrag über die vielen alten Menschen auf Okinawa angeschaut. Dabei kamen mir Erinnerungen an meine Reise letztes Jahr.
Im letzten April war ich mit unserem Verein auf Okinawa. Damals fand die Weltmeisterschaft im Karate statt. Hier findet sich noch ein Artikel mit Manu, welche den 2. Platz erreichte. In unserer “Freizeit” waren wir hauptsächlich in der Hauptstadt Naha. Der Eindruck dort hat mich nicht mehr so recht an den im ARD-Beitrag beschriebenen Lebensstil erinnert. Soviele alte Menschen bekam ich nicht wirklich zu sehen. Es war halt eher wie in einer Großstadt.
Wir sind natürlich auch ausserhalb von Naha unterwegs gewesen, z.B. auf der tropischen Insel Tokashiko, die sich in den Gewässern vor Okinawa befindet, sehr schönes Stück Land und soviele Pflanzen. Hier finden sich ein paar Bilder.
Was man sich vielleicht auch noch ansehen kann ist der Oceanic Expo Park auf Okinawa. Ein paar Bilder finden sich wieder hier in unserer Fotogalerie. Besonders beeindruckend für mich war das riiiiiiesige (also wirklich riesig! :-)) Aquarium in dem ganze Fischschwärme majästetisch ihre Bahnen zocken, darunter auch zwei oder drei Wale. Nicht so doll fand ich die Delphinshow. Wenn ich mir überlegt dass die armen Tümmler nur knapp 500 Meter vom echten Meer entfernt in kleinen Becken mit gechlortem Wasser sinnlose Kunststücke vorführen müssen frag ich mich Wozu?. Darum auch nur ein vielleicht als Einleitung dieses Absatzes!
Soviel von mir zur Inser der Hunderjährigen.
Abgelegt unter : Medien, Reise | Getaggt: Aquarium, Karate, Okinawa | Keine Kommentare »
Veröffentlicht in Mittwoch, 16. April 2008 von Andreas Höhmann
Hier findest Du ein eine JS-Bibliothek die aus “normalen” IMG-Tags ASCII-Art erzeugt und dass Ergebnis sieht ziemlich echt aus.
Abgelegt unter : Ajax | Keine Kommentare »
Veröffentlicht in Mittwoch, 16. April 2008 von Andreas Höhmann
Unter dieser URL gibt es täglich eine neue Rästelaufgabe für Freunde des wunderbaren Informatikerspiels “Rasender Roboter”
Und hier gibt es noch ein paar mehr Variationen des Spiels, z.B. “Speed Robot” bei der es gilt in einer bestimmten Zeit so viele Boards wie möglich zu lösen. Der aktuelle Rekord liegt bei 38! Boards in 2 Minuten, wobei dieser Rekord wohl eher nicht von einem Menschen selbst aufgestellt wurde oder was meint ihr?
Abgelegt unter : Spass | Getaggt: Game, Rasender Roboter, Rätsel, Ricochet Robot Challenge | Keine Kommentare »
Veröffentlicht in Mittwoch, 16. April 2008 von Andreas Höhmann
Today i show how you can easily develop a Mavenproject with Spring-Beans
in your Eclipse-IDE. You have to add a new plugin to your pom’s
plugins-section:
...
<build>
<plugins>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<projectNameTemplate>[artifactId]</projectNameTemplate>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
<wtpmanifest>true</wtpmanifest>
<wtpapplicationxml>true</wtpapplicationxml>
<wtpversion>2.0</wtpversion>
<manifest>${basedir}/src/main/resources/META-INF/MANIFEST.MF</manifest>
<additionalProjectnatures>
<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
</additionalProjectnatures>
<additionalBuildcommands>
<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
</additionalBuildcommands>
<additionalConfig>
<file>
<name>.springBeans</name>
<content>
<![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<beansProjectDescription>
<configExtensions>
<configExtension>xml</configExtension>
</configExtensions>
<configs>
<config>src/main/resource/services.xml</config>
<config>src/main/resource/datasource.xml</config>
</configs>
<configSets>
<configSet>
<name>core</name>
<allowBeanDefinitionOverriding>true</allowBeanDefinitionOverriding>
<incomplete>false</incomplete>
<configs>
<config>src/main/resource/services.xml</config>
<config>src/main/resource/datasource.xml</config>
</configs>
</configSet>
</configSets>
</beansProjectDescription>]]>
</content>
</file>
<file>
<name>.settings/org.springframework.ide.eclipse.core.prefs</name>
<content>
<![CDATA[<?xml version="1.0" encoding="UTF-8"?>
eclipse.preferences.version=1
org.springframework.ide.eclipse.core.builders.enable.aopreferencemodelbuilder=true
org.springframework.ide.eclipse.core.enable.project.preferences=true
org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanAlias-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanClass-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanConstructorArgument-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinition-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinitionHolder-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanFactory-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanInitDestroyMethod-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanReference-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.methodOverride-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.parsingProblems-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.requiredProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.action-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.actionstate-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attribute-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attributemapper-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.beanaction-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationaction-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationresult-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.exceptionhandler-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.import-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.inputattribute-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.mapping-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.outputattribute-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.set-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.state-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.subflowstate-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.transition-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.variable-org.springframework.ide.eclipse.webflow.core.validator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.webflowstate-org.springframework.ide.eclipse.webflow.core.validator=false
]]>
</content>
</file>
</additionalConfig>
</configuration>
</plugin>
</plugins>
</build>
…
Then you can run mvn eclipse:clean eclipse:eclipse (eclipse:clean is not required). The eclipse-plugin will create/change the .springBean and the .settings/org.springframework.ide.eclipse.core.prefs. Then you can refresh the eclipse-project (F5) from now the project contains a Spring-Builder which will handle the defined spring-configuration-files services.xml and datasource.xml. If you have more Springfiles you have to change the plugin-configuration.
Abgelegt unter : Eclipse, Maven-Plugin, Spring | Getaggt: Eclipse, Maven, Plugin, Spring | 3 Kommentare »
Veröffentlicht in Montag, 31. März 2008 von Andreas Höhmann
Durch Zufall lese ich gerade den Artikel “Serienmörder Fourniret provoziert Gericht” (http://www.tagesschau.de/ausland/fourniret6.html). Dort ist ein Bild des Mannes gezeigt, der Bildtext lautet “Michel Fourniret zeigte zum Prozessauftakt keine Reue.“. Im Archiv findet sich ein weiterer Artikel (http://www.tagesschau.de/ausland/meldung231524.html). Dort ist das Bild ebenfalls zu sehen aber ein kleinerer Ausschnitt und schwarzer Balken über den Augen. Das wäre ja nun nicht weiter interessant wenn die beiden Artikel nicht knapp 4 Jahre auseinanderliegen würden. Wie kann der Mann in 4 Jahren nicht altern, immer noch die gleiche Jeansjacke tragen und er wird immer noch von den gleichen Reportern belagert …
Bild1 http://www.tagesschau.de/ausland/fourniret6.html
Bild 2 http://www.tagesschau.de/ausland/meldung231524.html
Abgelegt unter : Medien | Getaggt: tagesschau | Keine Kommentare »
Veröffentlicht in Montag, 31. März 2008 von Andreas Höhmann
Today i show you a example which combines Ajax (Richfaces) and a “normal” Download in a JSF application.
The bean for the download-code is here:
public class DownloadBean {
// actionListener="#{bean.execute}"
public void execute (ActionEvent event) {
download();
}
// action="#{bean.download}"
public String download() {
final FacesContext facesContext = FacesContext.getCurrentInstance();
// XXX create temp. filecontent ... resultFile
writeOutContent(getServletResponse(), new File(this.resultFile), "file.xml");
facesContext.responseComplete();
// dont use jsf-navigation-rules
return null;
}
void writeOutContent(final HttpServletResponse res, final File content, final String theFilename) {
if (content == null)
return;
try {
res.setHeader("Pragma", "no-cache");
res.setDateHeader("Expires", 0);
res.setContentType("text/xml");
res.setHeader("Content-disposition", "attachment; filename=" + theFilename);
fastChannelCopy(Channels.newChannel(new FileInputStream(content)), Channels.newChannel(res.getOutputStream()));
} catch (final IOException e) {
}
}
void fastChannelCopy(final ReadableByteChannel src, final WritableByteChannel dest) throws IOException {
final ByteBuffer buffer = ByteBuffer.allocateDirect(16 * 1024);
while (src.read(buffer) != -1) {
buffer.flip();
dest.write(buffer);
buffer.compact();
}
buffer.flip();
while (buffer.hasRemaining()){
dest.write(buffer);
}
}
}
Now the facelets snipplets: Not Working - Javascript Error
<h:form>
<h:commandLink actionListener="#{command.execute}" value="Download"/>
<h:commandLink action="#{command.download}" value="Download"/>
</h:form>
Not Working - Download is shown in the current page - the ajax page will replaced with the download-content
<a4j:form>
<a4j:commandLink actionListener="#{command.execute}" value="Download"/>
<a4j:commandLink action="#{command.download}" value="Download"/>
</a4j:form>
Working
<a4j:form>
<a4j:htmlCommandLink actionListener="#{command.execute}" value="Download"/>
<a4j:htmlCommandLink action="#{command.download}" value="Download"/>
</a4j:form>
<h:form>
<a4j:htmlCommandLink actionListener="#{command.execute}" value="Download"/>
<a4j:htmlCommandLink action="#{command.download}" value="Download"/>
</h:form>
The a4j:htmlCommandLink was made for this szenario.
Notice: the fast channel copy routine was introduced by waffel.
Abgelegt unter : Computer, JSF | Getaggt: Ajax, Facelets, File Download, JSF, MyFaces, Richfaces | Keine Kommentare »