Details zur neuen Infrastruktur

Posted by: Jonathan Fri, 21 Apr 2006 21:59:00 GMT

Wie versprochen gibt es Details zu de neuen Infrastruktur mit Apache 2.2 und Mongrel.

Ich habe dazu hier einen Artikel (Englisch) geschrieben, der genau erklärt, wie mod_proxy_balancer im Zusammenspiel mit Mongrel funktioniert. Apache nutzt hierbei mod_proxy_balancer, um die verschiedenen Mongrel Server anzusprechen. Dabei führen dann die Mongrel Server den eigentlichen Ruby on Rails code aus

Scaling Rails with Apache 2.2, mod_proxy_balancer and Mongrel

Posted in ,  | Tags , , , , ,  | 1 comment | no trackbacks

Technische Details Caching

Posted by: Jonathan Sat, 11 Feb 2006 12:09:00 GMT

Wer sich für Ruby on Rails und die technischen Details der Implementation des Cachings interessiert, sollte meinen Artikel über Fragment Caching (Englisch) lesen.

Dort wird beschrieben, wie man Fragment Caching mit MemCache einsetzt und die Fragemente nach bestimmten Zeiten ungültig werden lässt.

Wir benutzen Fragment Caching um die TopFlop Listen und neuerdings auch um die Übersichtsseiten von Bundesländern und Universitäten zu cachen. Gerade die live Berechnung der TopFlops auf jeder Seite würde sonst unsere Server in die Knie zwingen.

Mit Fragment Caching werden die TopFlop Listen pro Seite für jedes Kriterium einmal generiert und erst nach 60 Minuten neu berechnet. Ähnliches passiert bei den Übersichtsseiten der Bundesländer und Universitäten, wobei hier noch nach jedem Anlegen eines neuen Professors die Caches gelöscht und neu berechnet werden.

Mehr Details zur Implementation hier.

Posted in ,  | no comments | no trackbacks

Neue Version von MeinProf.de online

Posted by: Thomas K. Wed, 01 Feb 2006 01:42:00 GMT

Heute haben wir wieder eine überarbeitete Version von MeinProf.de online gestellt. Im Folgenden möchten wir euch die wichtigsten Änderungen kurz vorstellen.

Änderungen bei den Bewertungskriterien

Ein großer Teil der Kritik, die wir in den letzten Wochen bekommen haben, bezog sich auf das Kriterium "Note/Aufwand". Auch wir waren darüber nie so recht glücklich, da es zwar sicher viele Studierende interessiert, wie hoch der zu leistende Aufwand für eine gute Note ist, die Qualität eines Kurses, bzw. seines Dozenten lässt sich daran jedoch nicht wirklich ablesen.

Wir haben zwar intern relativ früh den Entschluß gefasst, dieses Kriterium eher als "Notengerechtigkeit" zu verstehen und dies auch im dazugehörigen Erklärungstext erwähnt, allerdings gab es wohl zu Recht weiterhin einige Verwirrung darüber, was damit nun wirklich bewertet werden sollte.

Ab sofort heißt dieses Kriterium nun "Fairness". Bewertet werden soll zum einen der faire Umgang des Dozenten mit seinen Studierenden und zum anderen die leistungsgerechte Vergabe von Noten. Um hier zu einem halbwegs gerechten Urteil zum kommen, müssen die Studierenden natürlich auch ihre eigene Leistung objektiv reflektieren, denn eine schlechte Note ist nicht unbedingt immer die Schuld des Professors... :-)

Update 16.02.2006: Wir haben die Änderung dieses Kriteriums nochmal überarbeitet und verwenden jetzt auch nicht mehr die alten Daten von "Verhältnis Note/Aufwand" für "Fairness" weiter.

Angabe des Semesters bei den Bewertungen

Eine weitere gute Idee, die mehrfach von Aussen an uns herangetragen wurde, war die Angabe des Semesters, in dem man die zu bewertende Lehrveranstaltung besucht hat. Dies haben wir nun ebenfalls umgesetzt und es ermöglicht uns in Zukunft auch zeitliche Verläufe über die Entwicklung der Qualität eines Kurses zu erstellen.

Alle registrierten Benutzer können das Semester bei ihren schon bewerteten Lehrveranstaltung natürlich in ihrem persönlichen Bereich nachtragen.

MeinProf.de nun wesentlich schneller

Die größten Änderungen an MeinProf.de haben "unter der Haube" stattgefunden. Wir haben viel Zeit investiert, den vorhandenen Code und vor allem die Datenbankzugriffe zu optimieren, so daß der Zugriff auf MeinProf.de nun wesentlich fixer vonstatten gehen sollte.

Einen großen Fortschritt haben wir durch das Cachen der Top-/Flop-Listen erreicht, die nun nicht mehr bei jedem Seitenzugriff neu berechnet werden müssen.

Desweiteren haben wir uns nun davon verabschiedet die HTTP-Sessions im Dateisystem zu speichern, stattdessen setzen wir nun auf eine memcached-basierte Lösung.

Dies ermöglicht uns nun auch die Last bei Stoßzeiten auf mehrere Server zu verteilen. Für die Lastverteilung verwenden wir Lighttpd mit Ruby on Rails damit ziemlich gut und wir können bei einem weiter anwachsenden Besucheransturm einfach weitere Server hinzufügen um die Rechanlast zu verteilen. (Problematisch ist dabei nur der Anschaffungspreis der entsprechenden Hardware. Falls jemand noch ausgemusterte Server im 19"-Format rumstehen hat: Wir könnten sie gut gebrauchen! :-)

Kleinere Deutschlandkarte und mehr

Zwar nur eine Kleinigkeit, aber trotzdem erwähnenswert: Die Deutschlandkarte auf der Startseite, auf der man sein Bundesland auswählen kann, haben wir nun etwas verkleinert. Damit sollte es nun bei Besuchern mit niedrigeren Bildschirmauflösungen weniger Probleme geben.

Die restlichen Änderungen betreffen hauptsächlich unsere Administrationsschnittstelle und die vielen Informationstexte auf MeinProf.de, von denen wir nun auch nochmal einige überarbeitet haben.

Posted in , , , ,  | no comments | no trackbacks

Grafische Statistiken

Posted by: Jonathan Sun, 11 Dec 2005 11:47:00 GMT

Neben einer optionalen Login-Funktionalität und RSS-Feeds, arbeiten wir derzeit an einer Möglichkeit, den zeitlichen Verlauf der Durchschnittsbewertungen eines Professors einzusehen.

Die Idee ist, dass man für jedes Kriterium sehen kann, wie es sich im Laufe der Zeit entwickelt hat. Wenn deutlich mehr Bewertungen eingegangen sind, wird das sicherlich sehr interessant. Natürlich wird diese Information schick per AJAX und mit JavaScript Effekten eingebunden werden.

Als Bibliothek für die Generierung der Statistiken nutzen wird Gruff. Als Vorgeschmack kann man hier die zeitliche Entwicklung aller Professoren, Kurse und Bewertungen sehen:

Grafische Statistik der Neueinträge

Wir benutzen hier intern ein Rails Plugin, das ich geschrieben habe. Dies ermöglicht es jedem ActiveRecord Objekt seine Statistik Daten auszugeben. Aus diesen Daten wird mit Hilfe von Gruff und ImageMagick das Bild generiert.

Der Aufruf sieht dann so aus:

prof_data = Prof.get_daily_stats(from_year,from_month,from_day,to_year,to_month,to_day)
course_data = Course.get_daily_stats(from_year,from_month,from_day,to_year,to_month,to_day)
rating_data = Rating.get_daily_stats(from_year,from_month,from_day,to_year,to_month,to_day)
size = prof_data.size

g = Gruff::Line.new
g.title = "Neue Objekte #{from_year}/#{from_month}/#{from_day} - #{to_year}/#{to_month}/#{to_day}"

g.data("Profs", prof_data)
g.data("Kurse", course_data)
g.data("Bewertungen", rating_data)

g.labels = {0 => '1', (size - 1) => size.to_s}

send_data g.to_blob,:type => 'image/png', :disposition => 'inline'

Posted in , , ,  | no comments | no trackbacks

Blogpost auf BlogFish

Posted by: Jonathan Mon, 21 Nov 2005 14:35:00 GMT

Ich habe eben einen Eintrag über MeinProf.de in meinen Blog gepostet und ein wenig Werbung auf den Rails Mailing-Listen gemacht.

Das Feedback ist durchweg positiv, die AJAX- und JavaScript Effekte kommen gut and und die Idee wird von vielen Studenten begrüßt.

Wir haben erstmal die TopFlop Listen so eingestellt, dass man nur eine Bewertung haben muss, um darin zu erscheinen. Dies wird sobald mehr Bewertungen da sind höher gestellt. Wir denken da an verschiedene Stufen für Bundesweit/Landesweit/Uniweit.

Posted in , , , ,  | no comments | no trackbacks