Social Software powered by Instant Communities
Springe direkt: zur Navigationzum Inhaltzur Sidebar

Archive für 07 2008

Snapshot TMAPI 2.0

29.07.2008

Lars Heuer hat einen aktuellen Snapshot von TMAPI 2.0 hier veröffentlicht. Dies ist nur eine zeitweise Lösung für Interessierte.

Ein Update in eigener Sache: Ich habe heute Committer-Status für das TMAPI-Projekt erhalten :) : Mitgliederliste TMAPI

Proposal für TMAPI 2.0 index veröffentlicht

23.07.2008

In den letzten Tagen haben Lars Heuer und ich ein Proposal für das Index-Paket von TMAPI 2.0 erarbeitet. Das UML-Diagramm liegt hier im TMAPI Wiki: TMAPI 2.0 index proposal

Die wesentliche Veränderung umfasst die Reduktion auf nur noch drei Indizes:

  • TypeInstanceIndex
  • ScopedIndex
  • LiteralIndex

Der Index wurde also generalisiert; die einzelnen Indizes bieten dafür spezialisierte Methoden. Das IndexFlags-Interface wurde eliminiert, die Methode isAutoUpdated() wurde in das Index-Interface verschoben. Im Vergleich der Index von TMAPI 1.0: http://tmapi.org/index.gif

Kommentare, Kritik und Vorschläge können über die Mailingliste geäußert werden.

Symfony Routing Requirements – Regex Pattern

22.07.2008

Das Routing System von Symfony 1.0 ist ja eigentlich sehr cool. Manchmal bringt es einen aber auch gerne zum Wahnsinn, nämlich immer dann, wenn man versucht mit eigenen Regex-Patterns bestimmte Routen zu erzeugen. Zumindest geht es mir so.

In unserm Fall wurden Länder- und Kontinentnamen in der URL als Parameter übergeben. Diese Namen enthielten nicht nur Zeichen, die dem Pattern \w+ entsprechen, sondern leider auch Zeichen, die in diesem Pattern (nur alphanumerische Zeichen) nicht enthalten sind, z.B. das Plus Zeichen, das zum Enkodieren von Leerzeichen in URLs verwendet werden kann. Die entsprechenden Routen greifen dann nicht mehr, sobald solch ein Parameter in der URL auftaucht.

Nach einer guten Weile Trial and Error und  ist dann am Ende folgende Regex herausgekommen: [0-9a-zA-ZüöäÜÄÖ%\+-]+

Da Regular Expressions gerne Fragezeichen in Gesichter Zaubern, das ganze in Worten: Der erste Teil (0-9a-zA-Z) bildet alphanumerische Zeichen ab. Dazu sind noch Umlaute, Prozent, Minus und Plus erlaubt. Die ersten Minuszeichen werden dabei als Range interpretiert (a bis z), während das letzte Minus als eigenständiges Zeichen verstanden wird. Das Plus muss mit einem Backslash escaped werden, da es im Rahmen von Regexpressions eine besondere Bedeutung hat, nämlich die Häufigkeit des Vorkommens festzulegen. Das zweite Pluszeichen hinter den eckigen Klammern hat genau diese Aufgabe und definiert, dass der beschriebene String aus mindestens einem oder mehreren der angegebenen Zeichen bestehen muss.

Eine vollständige Routing-Regel sieht dann z.B. so aus:


discover_country:
url: /entdecken/:continent/:safename/:listtype/:page/*
param: { module: discover, action: index, page: 1, listtype: Uebersicht, marker: Laender }
requirements: {  continent: \w+, safename: [0-9a-zA-ZüöäÜÄÖ%\+-]+, listtype: \w+, page: \d+ }

Das gemeine ist, dass “normale” Regex nicht greifen:
^[0-9a-zA-ZüöäÜÄÖ%\+-]+$ funktioniert jedenfalls nicht, obwohl das Pattern laut Regextester eigentlich korrekt sein sollte. Die Zeichen ^ und $, die jeweils Anfang und Ende eines Strings markieren, müssen also in den Symfony-Routingregeln weggelassen werden.

Hoffentlich hilft dieser Tipp einigen Menschen bei der Suche nach der Lösung für ähnliche Probleme.

Internet Explorer 6: Transparente PNGs – neue Lösung

21.07.2008

Letze Woche tauchte völig unerwartet eine neue Lösungsmöglickeit auf, wie man transparente pngs im IE6 darstellen kann. Ich hatte den Artikel allerdings so verstanden, dass background-repeat nach wie vor nicht geht. David Maciejewski hat mich eben mit seiner Demo eines Besseren belehrt. Mit der neuen Methode klappt also sowohl background-repeat als auch background-position für transparente pngs im IE6! – schön, dass es nach 5 Jahren auch für dieses Problem eine Lösung gibt.

You are currently browsing the t8d blog weblog archives for July, 2008.

Creative Commons License
This work is licensed under a
Creative Commons Attribution-Share Alike 2.5 License.
t8d blogged mit WordPress