Mittwoch, 29. April 2009

Howto overwrite variables in XSL

XSL is sometimes pretty nasty. Lots of commonly programming stuff isn't available, p.e. loops. Even the simplest operation - overwriting values of variables - is pretty tricky, and cannot actually been done in the way we would like to. And apparently its not even possible to globally overwrite the value.
The only way to set the value of a xsl:variable is to do it at the initialization, in the body of it.

<xsl:variable name="myvar">
<xsl:choose>
<xsl:when test="condition'">
<xsl:value-of select="$value"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$other_value"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>



So if you start your initialization like this

<xsl:variable name="myvar4" select="lower-case($name)"/>


you cannot change its level anmore (globally).

Sonntag, 26. April 2009

TD Update: SEO und Search Result Navigation

Hat man sich erst einmal in den Kopf gesetzt eine Website zu betreuen/administrieren, kommt man früher oder später - ein gewissses Maß an Motivation vorausgesetzt - nicht an Search Engine Optimization (SEO) herum. Im Falle von TripDrop trifft das ja im doppelten Sinne zu.
Bei einer normalen Suche komme ich inzwischen auf eine relativ gute keyword density für das Keyword Mitfahrgelegenheit. Glaubt man den abermillionen selbsternannten SEO experts mit ihren SEO Todos, habe ich noch einiges zu "optimieren".
Weiters habe ich endlich die Seitennavigation gefixt, d.h. der Besucher kann dich nun durch alle Ergebnisse durchnavigieren.

Dem Alpa Stadium ist TripDrop aber immer noch nicht entwachsen.

Freitag, 24. April 2009

Java Charset encoding UTF-8

One of the most annoying stuff you will definitely come accross is character encoding.
When you initialize a String with the default constructor, the JVM uses uses the Charset.defaultCharset() for the encoding. Anothor constructor allows you to specify any Charset, that is available on your box.
/*
s1 and s2 deliver the same results
*/

String s1 = new String("hello");
String s2 = new String("hello".getBytes(), Charset.defaultCharset());

// specific encoding, and yes you this ü char there with intent
String s3 = new String("grün".getBytes(), "UTF-8");


Conversion


Charsets have a limited set of characters, that have to be used to encode a, probably much larger amount of charaters. Therefore in UTF-8 the Umlaut ü is encoded as ü. In Java there are serveral ways to convert from one encoding to an other. Let's assume you have an UTF-8 encoded String with the value 'grün' (See the last line of listing 1). To get rid of those escaped charaters like ü you have to encode it with p.e. ISO-8859-1.

System.out.println(new String ( s.getBytes("ISO-8859-1"), "UTF-8"));


As far as I know isn't there any method that can detect the encoding of a String. You can test if a String is UTF-8 encoded, which means, the String only contains characters, that are valid in UTF-8. So it is probably be a valid ISO-8859-* String too.

[unfinished]

Donnerstag, 23. April 2009

Biosprit fürs gute Gewissen

Seit geraumer Zeit schießt sich die Energielobby auf Biosprit als Allheilmittel gegen den Klimawandel, mit all den Vor- und Nachteilen. Wie wir inzwischen alle gelernt haben, sind Biokraftstoffe richtig gut, schließlich sind sie erneuerbar. Dass sich der Nutzen für die Umwelt in Grenzen hält, hat arte in einer eindrucksvollen Dokumentation über die Biosprit Lüge auf Film gebracht.
Dies haben inzwischen auch die deutschen Grünen erkannt, die ja einst für die Einführung stimmten. Doch wozu der ganze Gerangel um den Biosprit?

Eigentlich ist es ja gar nicht so wichtig, ob wir nun ein paar tausend tonnen mehr oder weniger CO2 in die luft pusten, bis jetzt fahren wir damit richtig gut. Schließlich gibt es immer ein paar, die vom System mehr oder
weniger profitieren. Dass das dickste Stück vom Kuchen wiedermal einer Randgruppe vorbehalten ist, dürfte hinlänglich bekannt sein (OMV verdoppelt Gewinne)

Ob der Durchschnittsdeutsche auf seinen 819.214 Kilometern, die er in seinem Leben im Auto zurücklegt wohl daran denkt, dass etliche Staaten unter dem maßlosen Öl Kosum der westlichen Staaten ächzend zugrunde gehen, ist fraglich. Aber bitte was soll man machen, irgendwie muss ich ja von A nach B kommen (Gas and Oil abuse in the niger delta).
Nein, bitte kein schlechtes Gewissen, nur weil Sie Autos fahren. Der Biosprit heißt wohl nicht umsonst Biosprit. Bio ist die gesetzlich geschützte Vorsilbe für Ökologische Landwirtschaft ist heißt ja gut! (Bio- oder Agrotreibstoff je nach Ausprägung der Realitätsverweigerung)

Irgendwie gibt es keine wirklich nachhaltigen Technologien, die unseren Energiebedarf denken, als auch abermals irgendwelche Länder ausbeuten (Wenn die Rendite stimmt!. Naja, vielleicht doch. Des Öfteren wird ja gemunkelt, dass die Autoindustrie Patente aufkauft, um eine Weiterentwicklungen zu verhindern und das Maxiumum an Ertrag aus den vorhandenen, alten Technologien verauszupressen. Ein Fall, der diese These unterstreicht, ist die Erfindung namens alphakat. Alphakat ist eine Art Katalysator, der aus Kohlenstoffhaltigen Stoffen, reinen, qualitativ hochwertigen Diesel herstellen vermag. Eine vielversprechende Technologie, für die sich in Deutschland jedoch kein geeigneter Standort mit Genehmigung finden ließ, aus Umweltschutzgründen heißt es offiziell.

Dinge, die die derzeitigen Strukturen des Öl Kartells stören, oder gar gefährden, werden nur allzuoft davon abgehalten, entweder von offizieller Seite in einem Schauprozess, oder von unbekannten Tätern.

Mittwoch, 22. April 2009

Mitfahrportale im deutschsprachigen Raum

Was für eine Suchmaschine für Mitfahrgelegenheiten natürlich nicht fehlen darf, sind die Quellen. Meines Wissens nach gibt es im deutschsprachigen Raum folgende, wahrscheinlich aber ewig viel ganz kleine seiten, die nur im regionalen Raum operieren. Bekannt sind die Platzhirsche, die staatenübergreifend arbeiten

  • drive2day.de bzw. hitchhikers.de

  • mitfahrzentrale.com

  • mitfahrgelegenheit.de mit den Österreich und Schweiz ports mitfahrgelegenheit.at und mitfahrgelegenheit.ch


Abgesehen davon sind mir noch die folgenden bekannt

  • freerun.de/mitfahrzentrale/

  • www.mfz.de/

  • www.mfz1.de/

  • fahr-mit.at/mfb/

  • www.osttirol-komm.at/osttirolkomm/

  • www.123inserate.net

  • www.e-covoiturage.ch


Natürlich gibt es auch riesige Anbieter in Frankreich und anderswo, die sollen uns an dieser Stelle aber nicht interessieren. Falls ihr noch andere Seiten kennt, postet sie!

Alle Orte der Welt

Vorr kurzem hatte ich das Problem, für das indexieren der Orte normierte Ortsnamen verwenden zu müssen. Weiters wollte ich bei der Suche nach Mitfahrgelegenheiten auf TripDrop es dem Nutzer ermöglichen, Orte entsprechend ihrer hyrarchischen Zugehörogkeit zu finden, also z.B. Berlin Deutschland liefert Berlin. Dazu muss ich aber erstens alle Orte kennen und deren Hyrarchie.
Zu Beginn meiner Recherche bin ich auf OpenGeoDB gestoßen, eine Community, die alle Orte im deutschsprachigen Raum komplett mit Geo Daten und etlichen anderen Daten versehen haben. Natürlich als Baumstruktur, sprich Hyrarchie.


So weit so gut. Nur will ich nicht nur deutschsprachige Ausgangspunkte und Ziele anbieten, sondern mehr, Selber machen? Tzzz, es gibt ja noch andere Projekte, wie GeoNames, die bieten einem die ganze Welt zum freien Download. Richtig cool!

TripDrop Suchmaschine für Mitfahrgelegenheiten

Bereits seit längerem entwickle ich in meiner Freizeit eine Suchmaschine für Mitfahrgelegenheiten, genannt TripDrop. Warum? Naja, irgendwann war mir einfach danach. Außerdem kann man durch so ein Projekt unendlich viel lernen. Das Problem, das mich störte, war dass es etliche Mfg Plattformen, die alle ihr eigenes Süppchen kochen, anstatt sich zu vernetzten. Der Nutzen einer solchen Vernetzung wäre für die Mfg Community gewaltig.

Doch leider gibt es dieses Content Sharing nicht. Aus einem alten Projekt hatte ich noch einen sehr flexiblen Crawler zur Verfügung, der mir, nach Anpassung einiger configs die entsprechenden Dienste ausführte und ausführt. Dieser Crawler, erntet bestimmte Portale ab, sucht also nach Mitfahrgelegenheiten und indexiert diese.
In Zukunft werde ich öfters über die Weiterentwicklung des Projektes berichten.