rails, acts_as_rateable, will_paginate and efficient sorting

Forget what I said here, it’s really inefficient… I just stumbled upon (or actually really searched for) a article, which describes an easy way to cache the rating and make searches as performant as it was before we put the rating into an extra table.

Only thing I had to add was a method to regenerate the cache for all the old quotes, which don’t have the cached rating yet. So, check out the howto and add the following method to your rated model:

[geshi lang=ruby]
def self.update_rating_cache
self.find(:all).each do |quote|
quote.update_attribute :rating_cache, quote.rating
end
end
[/geshi]

What do you think of this post?
  • Awesome (0)
  • Interesting (0)
  • Useful (0)
  • Boring (0)
  • Sucks (0)

Google ist zu schnell

Gestern hab ich eine (hässliche?) Lösung zu einem Railsproblem gebloggt. Heute hatte ich ein ähnliches Problem, versuchte also nach sinnvollen Begriffen zu suchen. Und was finde ich? Mich gleich ganz oben… *gnarf*, was hab ich denn davon? 🙂

What do you think of this post?
  • Awesome (0)
  • Interesting (0)
  • Useful (0)
  • Boring (0)
  • Sucks (0)

rails, acts_as_rateable, will_paginate and sorting

Today I added will_paginate into my application (damn, that was easy! :-)). Yesterday I added acts_as_rateable with a cool web2.0 css star rating system. Not that easy, but a cool feature.

And then I wanted to combine those two. I couldn’t find any nice ways of doing this, but until someone tells me a better way, the following is working out for me and helps perhaps someone else out there. Even if it could be a bit nicer. 🙂

    @quotes = Quote.paginate_by_sql "SELECT quotes.*, avg(ratings.rating) AS rating, count(ratings.rating) AS votes
                                    FROM `quotes`
                                    LEFT JOIN ratings ON quotes.id = ratings.rateable_id
                                    WHERE (ratings.rateable_type = 'Quote' OR ratings.rateable_type IS NULL)
                                    GROUP BY ratings.rateable_id
                                    ORDER BY rating DESC, votes DESC",
                                    :page => params[:page]

Edit: I fixed it, it returns now quotes without a rating too.

What do you think of this post?
  • Awesome (0)
  • Interesting (0)
  • Useful (0)
  • Boring (0)
  • Sucks (0)

IMDb und Spoiler

Ich bin momentan auf der Suche, nach einer Seite wie TV.com oder IMDb.com, die eine API anbieten, um auf die Daten zuzugreifen. Eigentlich möchte ich doch nur von HIMYM-Quotes.com auf Folgenbeschreibungen zugreifen können. Leider finde ich da nichts, kennt da jemand was?

Egal, auf meiner Suche war ich dann auch auf der Seite von IMDb einer Folge von How I Met Your Mother und fand folgendes Bild: Die Keywords werden wegen Spoilergefahr ausgeblendet (gute Idee eigentlich) und der Plot wird direkt darüber einfach so dargestellt? Irgendwie sinnlos, oder?

What do you think of this post?
  • Awesome (0)
  • Interesting (0)
  • Useful (0)
  • Boring (0)
  • Sucks (0)

How I Met Your Mother… Quotes

Ich glaube ich habe es noch nicht im Blog erwähnt, aber ich habe letztes Jahr eine Serie für mich entdeckt, die ich wirklich brilliant finde: How I Met Your Mother. Es ist meiner Ansicht nach die beste Comedy-Serie, die momentan ausgestrahlt wird. Einerseits ist sie ein wenig wie Friends, aber sie hat keine Angst sehr unterschiedliche Storys zu machen und die Folgen auf verschiedenste Art aufzubauen. Jeder, der auf Comedy steht, sollte sich die ersten paar Folgen auf jeden Fall anschauen. Karin und ich gucken sie zumindest sehr gerne und in meiner alten Heimat habe ich auch einige Leute anstecken können.

Da ich auf der Suche nach einem Projekt war, um Ruby on Rails zu lernen, habe ich das verknüpft. Ich habe angefangen, an einer Zitatverwaltung für die Serie zu arbeiten, um sinnvoll nach Zitaten aus bestimmten Folgen, mit bestimmten Personen usw suchen zu können. z.B würde ich die Zitate gerne anstatt oder zusätzlich zu den Simpsons-Zitaten in meinen Blog einbinden. Die Featureliste wächst Mangels Zeit nur langsam, aber ich hoffe ich kann die erste Version bald online stellen. Ich habe die Zitate von Wikiquote schon importiert und hab somit auch schon Daten, mit denen man anfangen kann. Nur das Design und einige Features müssen noch ausgearbeitet werden. Aber um mich zu motivieren, hab ich mir die Domain HIMYM-Quotes.com schon mal registriert und nehme das als Grund möglichst bald eine Version online zu stellen.

Ein Problem habe ich schon gefunden: Obwohl ich die Serie perfekt finde, finde ich viele Zitate ohne den Zusammenhang nicht so lustig… Was solls, soll ja nur Spass machen, reich werde ich damit sicher nicht. (Wenn doch, hab ich aber nichts gegen :-))

What do you think of this post?
  • Sucks (1)
  • Awesome (0)
  • Interesting (0)
  • Useful (0)
  • Boring (0)

Windows Mobile 6 & WLAN

Ich habe heute, nachdem ich wochenlang (nur zuhause) mit meinem PDA nicht ins WLAN kam, einen Hard-Reset gemacht. Das hat geholfen, aber nervig ist es schon, alle Programme wieder zu installieren und nicht zu wissen, ob das nochmal passiert. Selbst ohne jegliche Sicherheit des WLANs (WEP/WPA/MAC-Adress-Listen, alles aus) hat es bis zum Hard-Reset nicht funktioniert. Ist das jemandem schonmal passiert? Hardware ist ein Dell Axim X51v mit Windows Mobile 6.

What do you think of this post?
  • Awesome (0)
  • Interesting (0)
  • Useful (0)
  • Boring (0)
  • Sucks (0)

PDF-Reader für Windows Mobile

Wenn man lange Linux(-Distributionen) nutzt, fragt man sich manchmal wie Windows es schafft, seine Stellung zu halten. An einem frisch installierten Windows kann man einfach nicht arbeiten. (Vielleicht ist das der Grund? :-)) Es gibt keinen Editor, der den Namen verdient, mindestens unter XP nichts, was man Webbrowser nennen darf, kein PDF-Viewer und die Liste geht endlos. Und auch Windows Mobile geht in der Tradition weiter. Wie kann man Geräte ausliefern, die nicht mal PDF verstehen?

Wenigstens dafür hab ich nun eine gute Lösung gefunden: PocketXpdf. Man kann sich die Zoom-Stufe auf meinem PDA so einstellen, dass man bewuem ein PDF-Ebook auf dem Display lesen kann. Ersetzt kein Buch, aber wenn nichts anderes vorhanden ist…

What do you think of this post?
  • Awesome (0)
  • Interesting (0)
  • Useful (0)
  • Boring (0)
  • Sucks (0)

eBay, PDA und Probleme…

Mein neuer PDA

Da die Anspannung des Semsters so langsam zurückgeht (ich hab zwar
noch zwei Berichte und zwei Prüfungen vor mir, aber der Projekttag ist
um…) finde ich vielleicht mal wieder Zeit zu bloggen. Im Moment
sitze ich im Zug, für 4 Tage nach Hause, und hab halt Zeit. Außerdem
ist Textschreiben schön anspruchslos für meinen Akku, der auch nicht
mehr der beste ist. 🙂

Vorsicht, langweilige eBay-Problem-Story:

Was ich nach einige Monaten auch mal loswerden möchte, ist mein Ärger
mit meinem letzten und größten Ebay-Kauf: Ich hab meinen PDA (HP Ipaq
4150) ersetzt, da meine Mutter ein Navigationssystem haben
wollte. Also hab ich mal versucht mich zu informieren, was ich
ziemlich schwer fand im Bereich von PDAs. Entschieden hab ich mich für
einen Dell Axim x51v, vorallem da er 256MB Speicher im Gegensatz zu
den 64MB von meinem alten hat. Außerdem hat er ein super 640x480px
3,7″-Display. Die hohe Auflösung (sonst häufig 320×240) ist wirklich
super zum lesen von Texten, da man auch kleine Schrift noch sehr gut
lesen kann.

Ich fand also rund um Ostern einige Auktionen bei Ebay und gewann
glaube ich die letzte, bevor die nächsten Tage garnichts mehr sein
sollte. Freude groß. Ich komm nach Hause (ich war zu der Zeit bei
meiner Mutter) und der PDA war schon da. Aufgemacht, toll gefunden und
dann kams: Kein Ton. Über Kopfhöhrer gehts, aber der Lautsprecher ist
defekt. *argh*, und das bei einem Gerät, das (primär) als Navigationsgerät
und Media-Player dienen soll…

Den Verkäufer kontaktiert, seine erste Reaktion war, ob ich mir sicher
sei, dass das Gerät einen Lautsprecher hat. Komisch, aber OK, nochmal
in der Anleitung sichergestellt, dass das auch so ist. Dann kam, dass
er das Gerät von einem Fachmann hat prüfen und löschen lassen hat und
der keinen Fehler gefunden hat. Ich schrieb ihm zurück, dass es
dennoch defekt ist. Dann meinte er, er hätte noch kurz vorher
Sprachnotizen damit aufgenommen und abgespielt. (Wie, bei dem Gerät,
das laut ihm keinen Lautsprecher hat!?) Außerdem habe er keine Zeit
dafür. Ich schrieb ihm, dass ich da auch keine Zeit für habe und sagte
ihm, wenn er mir das Geld zurück überweist, würde ich ihm den PDA
zurückschicken und wir stecken da nicht weiter Zeit rein. (Ich hätte
sogar das Porto übernommen, also in beide Richtungen…)
Daraufhin kam von ihm nur
noch, dass er die Kommunikation an Ebay weiterleiten würde (das ging
die ganze Zeit schon über ebay!?) und er nur noch mit mir über seinen
Anwalt kommunizieren würde. Aha. Gut, ich wurde unsicher, aber da ich
nichts falsch gemacht hatte und es mich nichts kostet mit seinem Anwalt zu reden (ihn vielleicht schon…) , schrieb ich ihm dann, dass er mir 25%
Preisnachlass geben kann oder mir die Kontaktdaten seines Anwalts
schicken soll. Dann kam nix mehr. Das wars dann. Kein Wort mehr. Selbst einen Anwalt
einzuschalten ist für 160€ definitiv zu teuer, aber es ist sehr
ärgerlich. 🙁 Und die schlechte Bewertung, die ich ihm gab, war sicherlich nicht so befriedigend, wie ich sie mir vorgestellt hatte.

Also fand ich mich nach einigen Wochen damit ab und fing an nach einem
Torx5-Schraubendreher zu suchen. Als ich den hatte, hab ich den Axim
mehrmals aufgemacht. Es sah so aus, als würden die Kontakte des
Lautsprechers sich nicht berührern, da es nur Federn waren, die nicht
angelötet, sondern angedrückt wurden. Aber auch mit 3mm Lötzinn um den
Weg zu verkürzen hatte sich nichts gebessert und wir konnten auch
nichts anderes feststellen. Somit hab ich nun einen coolen PDA, der
aber nichtmal Ton rausbringt. 🙁

What do you think of this post?
  • Awesome (0)
  • Interesting (0)
  • Useful (0)
  • Boring (0)
  • Sucks (0)

Projekt (fast) beended

Es ist vorbei. Mein Zweijahresprojekt, welches Teil meines
Informatikstudiums an der Uni Bremen ist, ist nun endlich (bis auf den
Bericht) vorbei. Das 2 Jahresprojekt ist soweit ich weiß einzigartig
in Deutschland und vom Prinzip her eine sehr gute Idee. Es ist zwar
betreut, aber weitgehend von Studenten selbst organisiert. Wir sollen
mit meistens 10-20 Leuten je Projekt eigene Ziele um ein (von uns im
vorraus gewähltes) vorgegebenes Thema erarbeiten. Dann soll das auch
in weitestgehender Eigenorganisation umgesetzt werden. Und am Ende, da
kommt der Projekttag, wo wir das ganze Vorstellen dürfen. Nicht zur
Benotung, sondern für uns, Freunde und für andere Studenten.

Schon das Erarbeiten der Ziele hat bei uns ein Semester gedauert. Auch
wenn das häufig als normal dargestellt wurde, fand ich es persönlich
zu lange. Schlimmer wurde es dann in der Planungsphase für die
Umsetzung. Wir haben ein Semester lang viele RfCs gelesen (das war
jedoch interessant…), Anwendungsfälle gemacht, unsere Architektur
überlegt, ein Protokoll in Grundzügen ausgearbeitet, viele interne
Vorträge gemacht und sehr sehr viel disuktiert. Ermüdend. Über Dinge
zu reden ist wichtig, aber ich glaube in der heutigen Arbeitswelt wird
es maßlos übertrieben. Bin gespannt wie das bei mir irgendwann sein
wird.

Dann haben wir im dritten Semester 80% davon wieder über den Haufen
geworfen und alles implementiert. (Interessant, wenn auch stressig, da
die Zeit knapp wurde.) Das vierte Semester wurde dann versucht die
letzten Macken auszubügeln und zu testen. Das hat bei uns sogar gut
funktioniert, mal ein Erfolgserlebnis. Und dann waren etwa 50% des
vierten Semesters für den Projekttag gedacht. Nur für den Projekttag! Wir
haben uns gegen eine interaktive Präsentation entschieden und wollten
einen Film drehen. Der Projekttag ist keine offizielle Präsentation,
die für die Benotung wichtig ist (denke ich zumindest :-)), sondern es
geht eigentlich immer sehr lustig her. Unser Film ist also in ich
schätze 23 Stunden gedreht worden und 40(!) Stunden geschnitten und wo
nötig besprochen worden. Im Schnitt waren an den Arbeiten 3-4 Personen
beteiligt. Also sind dafür 63h*3,5=220,5, also 5,5 Arbeitswochen einer
Person reingesteckt worden. Das steht meiner Ansicht nach zu keinem
Verhältnis zu dem, was es denn Wert ist. Vorallem da viele in meinem
Projekt, aber bestimmt auch anderen, deutlichst keine Lust hatten und
sehr inaktiv waren. Wenn Leute nicht zu verabredeten Treffen kommen,
während Du in den letzten 6 Tagen vor dem Projekttag 40 Stunden
zusätzlich zu Deinen normalen Pflichten wie Arbeit, Vorlesungen und
Übungszetteln auf Deinem Teller hast, macht das schon sauer.

Ich merke, wir kommen nun vom beschreibenden Teil zum Kritikteil des
Ganzen. Eine gute Kritik beginnt gerne mit dem Aufzählen des
Positiven. Das Zweijahrensprojekt ist eine interessante Übung für das
Arbeitsleben: Man muss ein System einer Größe erstellen, das man
innerhalb von einem oder zwei Semestern einfach nicht planen und
implementieren kann. Man hat die Chance seine Teamfähigkeit zu
vertiefen. (Vertiefen deshalb, da das Informatik Studium an der Uni
Bremen sowieso ein Gruppenstudium ist, fast alle Übungen zu den
Veranstaltungen sind als Gruppe von üblicherweise 2-4 Mann zu lösen.)
Kritisch stehe ich auf jeden Fall der Art der Teamarbeit
gegenüber. Wir haben uns z.B. in 3 Gruppen aufgeteilt und waren
zwischen sechs und vier Mann groß. Meine Gruppe im speziellen hatte 6
Mann. Und dann versuchts Du zu sechst etwas zu machen. Es gibt Leute,
die hängen sich rein und machen sich Arbeit und andere, die sich
zurücklehnen und nichts tun, Termine nicht einhalten und einfach
weniger machen. (Zu wenig für die Menge an ECTS, die es für das
Projekt gibt.) Lösungsmöglichkeit: Schlechtere Note als die, die viel
machen. Das klappt aber nicht. Durch das weitgehend
Selbstorganisierte wissen die Betreuer selten, wer denn was wie
gründlich und pünktlich gemacht hat. Man könnte das und andere
Probleme versuchen durch eine Hierarchie, also einen Gruppenleiter, zu
lösen. Wir haben es sogar versucht, wenn auch halbherzig, aber der
Ansatz scheitert auch sofort: Es gibt keine Konsequenzen. Was kann
denn der Gruppenleiter schon machen? Jemanden feuern? Jemanden nicht
befördern? Er kann ja nichtmal seinem „Vorgesetzten“, den Betreuern
bescheid sagen. Aus zwei Gründen: Petzen? Und wenn man sich dazu
durchringen würde, dürfte der Betreuer einem denn glauben? Schließlich
ist der Gruppenleiter selbst Student und wird in dem Projekt
benotet. Einige Projekte haben durch intensivere Betreuung und häufige
Benotung versucht dem entgegenzuwirken. Aber nach dem was ich höre,
werden auch dort die meisten bestehen und garantiert mit einer
besseren Note als verdient.

Das Ergebnis von all dem: Meiner Meinung nach ist 75% der investierten
Zeit in das Projekt von etwa 33% der Teilnehmer gemacht worden. Und
das zu einem Großteil unbemerkt von denen, die nachher benoten. Und
das deprimiert.

So, das hat lange gedauert, war aber auch wirklich nötig.

What do you think of this post?
  • Awesome (0)
  • Interesting (0)
  • Useful (0)
  • Boring (0)
  • Sucks (0)