Introducing Rubel: a Ruby Expression Language
Ever wanted to evaluate Ruby-like expressions from your database? For example user configurable validations for models, or custom view logic that is outside of the programmers control. We need it for custom field validations on an ActiveRecord model in an upcoming Rails application.
Meet Ruble, the Ruby Expression Language. A simple, safe and fun way to evaluate expressions of the kind user.income > 100000 or user.status == "Boss".
It is based on the awesome Treetop gem that does the heavy lifting of parsing and evaluating the expressions.
With some basic helper that also caches expressions, a Rubel expression can be evaluated as simple as writing:
rubel = Rubel::Evaluator.new result = rubel.evaluate 'firstname == "Charly" or age > 16', :with => {'user' => {'firstname' => 'Charly', 'age' => 15} # result -> true
You can get the source code at http://github.com/chlu/rubel. A gem build is on the way and after only a few hours of work until now there will be more to come.
"Academy“ hält erstem Usability-Test stand
Wie bereits im Blog-Eintrag vom 14. Aug 2009 beschrieben, läuft seit einigen Monaten die Entwicklung der Online-Seminarverwaltung auf Hochtouren. Letzten Montag war es dann soweit: Academy wurde einem ersten Usability-Test unterzogen.
Die Funktionen des Systems sind an die Anforderungen verschiedener Benutzergruppen angepasst. So wurden auch die Testpersonen in vier Gruppen aufgeteilt, welche sich in die Rolle des Administrators, des Schulungsleiters, des Kunden oder des Kunden-Administrators begaben.
Dem Kunden wird die Möglichkeit gegeben, sich bequem über die Onlineplattform zu den Schulungen seiner Wahl anzumelden. Alle benötigten Materialien werden ihm hier online zur Verfügung gestellt.
Der Kunden-Administrator kann zusätzlich Accounts für seine Mitarbeiter anlegen und diese Mitarbeiter auch zu Schulungen anmelden. Über den Menüpunkt „Meine Übersicht“ behält er den Überblick über alle Anmeldungen und besuchte Schulungen der Mitarbeiter. Nach jedem Schulungstermin kann eine Schulung außerdem online bewertet werden.
Der Administrator ist in der Lage Schulungen und Schulungstermine zu erstellen, zu bearbeiten und zu löschen. Zu jeder Schulung kann eine genaue Beschreibung angelegt werden, der die einzelnen Termine dann zugeordnet werden können. Zu jedem Termin können Details, wie zum Beispiel die Teilnehmeranzahl angegeben werden. Eine optionale Warteliste bietet Spielraum für eventuelle Stornierungen und erlaubt eine flexible Überbuchung. Die Handhabung von Anmeldungen und Kontaktdaten werden durch eine Kundenverwaltung vereinfacht.
Der vom Administrator angelegte Schulungsleiter kann einzelnen Schulungen oder auch nur einzelnen Terminen zugeordnet werden. Er ist in der Lage Anmeldungen und Termine für die Schulungen, für die er verantwortlich ist, zu verwalten.
Die Probanden für jede einzelne Benutzerrolle haben einen super Job gemacht. Durch ihre Anregungen kann der Rohdiamant Academy nun geschliffen werden. Auf dass er beim nächsten Einsatz funkelt!
TYPO3 Monitoring mit Caretaker auf der T3CON09
Die Überwachung einer TYPO3-Website auf Sicherheit und Funktionalität erfordert eine spezielle Lösung. Systeme zur Überwachung der IT-Infrastruktur wie z.B. Nagios sind für das Monitoring von Applikationen zwar geeignet, aber schwierig zu konfigurieren und nur mit einem hohen Integrationsaufwand an die Anforderungen eines TYPO3-Systems anzupassen.
Aus diesen Gründen haben wir in Zusammenarbeit mit der Hamburger Agentur n@work bereits im letzten Jahr mit der Entwicklung einer auf TYPO3 basierten Lösung namens Caretaker begonnen. Diese ist mittlerweile ausgereift und überwacht unsere TYPO3-Installationen auf Sicherheitsprobleme und Verfügbarkeit.
Das Besondere der Lösung: beliebige TYPO3-Installationen (auch bestehende) können, mit einer kleinen Extension ausgestattet, in das Monitoring einbezogen werden. Somit kann für jede TYPO3-Seite die Sicherheit und Zuverlässigkeit erhöht werden.
Zur diesjährigen TYPO3-Konferenz T3CON09 in Frankfurt haben wir einen Talk über Caretaker gehalten und den Besuchern die fertige Lösung vorgestellt. Der Talk wurde auf Video aufgezeichnet und wird hoffentlich demnächst verfügbar sein. Bis dahin sind untenstehend noch einmal die Folien unseres Talks auf Englisch zum Download verfügbar.
Die Extensions für das Caretaker-System werden nach Fertigstellung der Dokumentation im TER veröffentlicht und sind als Open-Source unter der GPL verfügbar. Derzeit können sich Interessierte die Lösung auf forge.typo3.org aus dem SVN herunterladen.
Caretaker Ressourcen
- Die Folien des Caretaker-Talks zum Download als PDF (2,3 Mb)
- Das Caretaker-Projekt auf forge.typo3.org
- TYPO3-Monitoring
Wir sind TYPO3 zertifiziert!
Mit dem TYPO3-Integrator Zertifikat wird ein gemeinsamer Nenner für die Qualität von Dienstleistern für den Aufbau von Websites mit TYPO3 geschaffen. Eine Vielzahl von Fragen zu den wichtigsten Themen bei der Erstellung von TYPO3-Projekten aus der Praxis stellt das Wissen des Integrators auf die Probe.
Im Juni haben meine Kollegin Berit Jensen und ich an der Zertifizierung während des TYPO3camps in Hamburg teilgenommen. Mit dem passenden Buch (leider auf deutsch und nicht wie die Zertifizierung auf englisch) und unserer Erfahrung war der Test zur Zertifizierung gut zu schaffen. Letzte Woche wurde das Ergebnis dann auch bestätigt und wir beide können uns nun offiziell "Certified TYPO3 Integrator" nennen und sind auch auf der offiziellen Seite der zertifierten TYPO3-Integratoren verzeichnet.
Opodien NaviMap - Alles auf eine(r) Karte
Nach einigen Monaten Arbeit ist die NaviMap der Opodien Reisecommunity vorige Woche online gegangen.
Opodien ist die Reisecommunity von Opodo. Die Mitglieder von Opodien können dort von Ihren Reisen berichten, Fotos hochladen und anderen Reisetipps geben. Andere Besucher können so an den Erlebnissen teilhaben. Was liegt da näher, als diese Informationen auch auf einer Karte darzustellen?
So haben wir ein GoogleMaps Mash-Up, die NaviMap, entwickelt, dass es den Besuchern ermöglicht, auf alle geo-bezogenen Daten zuzugreifen und so die Community und die Welt zu entdecken. Die Navimap ist in JavaScript mit jQuery programmiert und bezieht seine Daten von einem TYPO3-System auf dem Server.
Auf jeder Reiseführer-Seite findet man eine Karte, die als Orientierung dient (Wo auf der Welt befindet ich mich?). Außerdem ist sie, mit einem Klick, der Einstieg in die eigentliche interaktive Weltkarte. Die große Karte öffnet sich dann in einer Lightbox auf voller Bildschirm-Größe. Auch auf allen weiteren Seiten der Opodien-Community gibt es einen schnellen Zugriff auf die Karte in der rechten Seitenleiste.
Alle Inhalte der Community werden auf der Karte als Marker dargestellt. Aus manchen GoogleMaps-Anwendungen kennt man vielleicht die Marker-Wälder, die an den Orten, wo viel los ist, die komplette Karte überdecken. Das haben wir vermieden, in dem wir örtlich beieinander liegende Marker zu einem Sammelpunkt zusammenfassen.
Die Daten der Einzel-Marker werden serverseitig aufbereitet und zwischengespeichert. Ein komplexer Algorithmus findet örtlich nahe Marker und fasst diese zusammen. Über einen Ajax-Aufruf ruft die Kartenanwendung dann, immer passend zum aktuellen Kartenausschnitt und den gewählenten Filter-Einstellungen, die anzuzeigenden Daten ab. So können wir übersichtlich und perfomant sehr viele Informationen auf der Karte darstellen ohne dass der Besucher den Überblick verliert.
Als Hilfe zur Navigation auf der Karte gibt es eine Tag-Cloud der beliebtesten Ziele und eine Google-gestützte Geo-Suche hilft dabei auch die entlegendsten Ecken der Welt zu finden.
Das "Reisefieber" visualisiert sehr anschaulich wo die beliebtesten Reiseziele der Opodier liegen. Aus den gesammelten Informationen zu Reisewünschen und bereits besuchten Ländern der Opodier wird eine Karte berechnet. Diese "Heatmap" wird als Overlay über das Kartenmaterial gelegt: je "roter" ein Land ist, umso höher ist dort das "Reisefieber". Um eine schnelle Darstellung zu gewährleisten, werden die Grafiken für die Karte von einem speziell dafür optimierten Content-Delivery-System (CDS) ausgeliefert.
Da bleibt nur: Viel Spaß beim entdecken der Welt!










