May 30, 2007

Ein weiterer Fall von Rails-Fieber

Florian Duetsch war mittelschwer begeistert von dem Tutorial. Ich bin gespannt, wie seine ersten Rails-Prototypen aussehen.

Posted by Phillip Ghadir at 3:38 PM

Ruby on Rails in Regensburg

Ich möchte mich noch mal bei allen Teilnehmern für das große Interesse bedanken. Mir hat der Ruby on Rails Workshop (Flyer als PDF) in doppelter Hinsicht Spass gemacht: Einerseits wurde ich bestens empfangen und versorgt. Außerdem waren die Teilnehmer offensichtlich sehr interessiert, da sie selbst nach Veranstaltungsschluss noch nicht gehen wollten … (Ja, ich dachte auch erst, dass sie eingeschlafen sind.)

Aufgrund der längeren Anreise habe ich auf das Mitbringen von Literatur-Hinweisen verzichtet. Daher hier noch einmal die Empfehlungen, jeweils zwei Bücher zur Programmiersprache Ruby und zwei zum Framework Ruby on Rails:

Programming Ruby (Pickaxe Book)Programming Ruby Ruby CookbookRuby Cookbook

Agile Web Development with Ruby On RailsAgile Web Development with Ruby On Rails Rails RecipesRails Recipes

Posted by Phillip Ghadir at 3:33 PM

May 25, 2007

Ruby on Rails an der Uni-Düsseldorf

Bei dem Ruby on Rails Tutorial (Flyer als PDF) an der Heinrich-Heine-Universität in Düsseldorf haben wir am Mittwoch insgesamt 34 Teilnehmern unser liebstes Framework für datenbank-gestützte Web-Anwendungen vorgestellt. CREDITS: Natürlich ist Rails nicht "unser Framework" sondern ein frei-verfügbares, von DHH entwickeltes Framework.

Fragen des Tages bezogen sich auf die Erstellung barrierefreier Web-Anwendungen und auf ActiveRecords Caching-Strategien, beim Zugriff auf im Speicher geänderter Entitäten, die noch nicht in die Datenbank gespeichert wurden.

Erstellung barrierefreier Web-Anwendungen

Eine Web-Anwendung nennt man barrierefrei, wenn die Verwendung der Inhalte keine speziellen technischen oder körperlichen Fähigkeiten zwingend voraussetzt: Zum Beispiel, wenn sie auch mit einem Nicht-Standard-Web-Browser sondern beispielsweise mit einem PDA-Browser angesehen oder mit einem Braille(Vor-)lesegerät vorgelesen werden kann. Insbesondere für sehbehinderten Menschen ist die Schrift-Vergrößerung der einzige Weg, Inhalte lesen zu können: eine Option, die blinden Menschen nicht zur Verfügung steht.

Web-Oberflächen realisiert man mit Ruby on Rails direkt mit (X)HTML und CSS. Man verwendet in Rails spezielle Templating-Mechanismen, wie ERb oder RJS, mit deren Hilfe Inhalte (Text-/HTML-/JavaScript-Dokumente) dynamisch zusammen gesetzt werden können. So kann man - als Rails-Entwickler - die speziellen Anforderungen an die Barrierefreiheit der Web-Inhalte selbst gut berücksichtigen.

Es hat sich bewährt dabei ein paar Faustregeln zu befolgen:

  • Immer wiederkehrende Navigationselemente sollten im HTML-Text ans Ende gestellt werden. So dass ein Programm zum Vorlesen mit den Inhalten beginnt und nicht bei jedem Seitenwechsel 5-Minuten lang ein Navigationsmenu vorliest.
  • Mittels CSS kann die Seite anschließend so gesetzt werden, dass alle Elemente an ihrem angestammten Platz sind und dass der Besucher der Seite im Browser einstellen kann, wie groß die Schrift sein soll.
  • Die Webseite sollte komplett ohne Javascript auskommen können. Dies erreicht man am einfachsten dadurch, dass Javascript nicht im HTML verwendet wird.
  • Um die Ergonomie zu erhöhen, wird man Javascript-Funktionalität in die Webseite einbetten wollen. Dies sollte mittels CSS geschehen, über das HTML-Elemente selektiert und mit Javascript-Funktionalität erweitert werden kann.
  • Ein gutes Buch zu dem Thema ist nebenstehend abgebildet: Barrierefreies Webdesign
Barrierefreies Webdesign

Weder erschwert noch erleichtert Rails die Erstellung von barrierefreien Webseiten, zumindest solange man auf AJAX-Features verzichtet. Sobald man allerdings mit RJS beginnt, könnte die Barrierefreiheit schwieriger zu erhalten sein. - Dazu habe bislang noch keine Meinung.


Rails ActiveRecord und Caching

Im Gegensatz zu anderen Persistenz-Frameworks hat ActiveRecord keinen Cache eingebaut. Entweder man verlässt sich auf die Caching-Strategien der eingesetzten Datenbank (was in verschiedenen Szenarien eine gute Idee ist) oder man erweitert Rails um ein eigenes Caching (wenn dies nötig wird). Glücklicherweise bietet Rails vielfältige Möglichkeiten, sich in den Kontrollfluss einzuklinken (bevor eine Methode aufgerufen wird, bevor eine Entität gespeichert wird, bevor eine find-Methode ausgeführt wird, usw.). Damit kann man die Erweiterung um ein Caching erstens recht einfach selbst zu bauen.

Nachtrag:

Stefan, Ihr wisst schon, der mit dem Blog, hat mir zu dem Caching noch einen Link auf einen alten Eintrag zur Identity Map geschickt.

Posted by Phillip Ghadir at 8:33 AM

May 12, 2007

innoQ Event - Mai 2007 in Weggis

Administration des IBM WebSphere Applikationsserver, Über die Entwicklung von BeaTunes, Vom Geschäftsprozess zum Service, REST - das bessere Web Services-Modell, Domain Specific Languages - ein vielseitiges Eventprogramm.

Das dieswöchige innoQ-Event in Reggis war nicht nur dank der wunderschönen Lokation am Vierwaldstättersee ein toller Erfolg. Die hervorragend präsentierten Vorträge haben viele Diskussionen angestoßen und wieder einmal den Austausch zwischen den Interessen- und Projektgruppen gefördert.

Posted by Phillip Ghadir at 2:35 PM

Ruby on Rails Tutorial in München

Diese Woche haben Stefan und ich einen Workshop zu Ruby on Rails gehalten. Gemeinsam mit den Teilnehmern haben wir in zwei Tagen die Grundlagen von Ruby on Rails behandelt.

Einige der mächtigen Sprachmöglichkeiten von Ruby haben bei den Teilnehmern Bedenken verursacht. Beispielsweise kann die Möglichkeit, jederzeit existierende Klassen zu redefinieren und somit Struktur als auch Verhalten verändern zu können, ein Projekt mit (vielen) “unterdurchschnittlich talentierten aber ambitionierten” Entwicklern ins reinste Chaos führen.

Allerdings zeigt Rails sehr gut, wie die Ausdruckskraft von Ruby auch dazu verwendet werden kann, ein leichtgewichtiges, klares Programmiermodell zu schaffen, mit dem Web-Anwendungen leicht realisiert werden können. Ich kenne keinen Persistenzlayer, in dem man einfach deklarieren kann, wie dies mit ActiveRecord, dem Persistenz-Framework von Rails, getan werden kann:

class Person < ActiveRecord::Base
    validates_presence_of :last_name

    belongs_to :tenant
    has_many :addresses
end

Dieser Code definiert eine funktionsfähige Entität Person, die garantiert, dass der Nachname gesetzt ist, unterhalb eines Mandanten (tenant) angesiedelt ist und eine beliebige Zahl von Adressen haben kann.

Das hätte man doch auch erraten, ohne Rails bzw. ActiveRecord zu kennen, oder?

Deutschsprachige Informationen rund um das Thema gibt es unter anderem hier: http://www.rubyonrails.de/

Posted by Phillip Ghadir at 12:35 PM

May 5, 2007

Ruby-on-Rails Tutorial an der FH-Bochum

Gestern haben Stefan und ich ein 4-stündiges Einführungs-Tutorial zu Ruby-on-Rails gehalten.

Vielen Dank an Prof. Dr. Volker Klingspor von der FH-Bochum für die großartige Vorbereitung.

Es hat uns sehr viel Spass gemacht.

Posted by Phillip Ghadir at 12:32 PM | TrackBack