Muttertag, oder wie es bei uns heißt: Drachenfest.
201205102115 54e0 teamsticker normal Best of Twitter (20): Muttertag
@quatschnass
Christian Naß

Und bevor ihr wieder sagt, niemand hätte es euch gesagt: Jaaa, heute ist Muttertag – egal, ob Drache oder nicht.

Meine Tweets gibt’s unter @freakcommander

Vor drei Jahren habe ich mit einigen Teamkollegen von SETI.Germany einen neuen Wettbewerb ins Leben gerufen: den BOINC Pentathlon. Mit BOINC kann man ja die Rechenpower des eigenen Computers verschiedenen wissenschaftlichen Projekten zur Verfügung stellen. Beim BOINC Pentathlon treten über zwei Wochen hinweg die Teams bei fünf verschiedenen Projekten gegeneinander an und bekommen für Ihre Platzierungen Punkte, die dann zur BOINC Pentathlon Gesamtwertung verrechnet werden, um den Sieger zu ermitteln.

Die Organisation des Wettkampfs hat auch in diesem Jahr viel Zeit beansprucht, aber ich meine, dass es sich gelohnt hat! Der Pentathlon wird in der BOINC-Welt immer mehr zu einer Instanz. So hat der Vater von BOINC und SETI@home – David Anderson – einen Hinweis zum Pentathlon auf der BOINC Webseite platziert:

boinc berkeley pentathlon BOINC Pentathlon   der III

Auch die einzelnen Projekte, bei denen der BOINC Pentathlon stattfindet, weisen auf den Wettbewerb hin, denn sie wissen, wie viel Rechenpower der Pentathlon mit sich bringt. David Baker – Leiter des Baker Labs – freut sich über die gut getimete Rechenleistung auf Rekordniveau, da so Modelle für CASP (Critical Assessment of Techniques for Protein Structure Prediction; dt.: kritische Überprüfung von Techniken zur Vorhersage von Proteinstrukturen) deutlich schneller berechnet werden können:

rosetta pentathlon BOINC Pentathlon   der III

Und nachdem der BOINC Pentathlon im letzten Jahr durch seine immense zusätzliche Rechenkraft sogar die Server des philanthropischen Projekts von IBM (World Community Grid) ins Wanken gebracht hat, ist man in diesem Jahr besser vorbereitet – so IBMler Kevin Reed. Es ist das erste Mal in der Geschichte des World Community Grid, dass auf der Startseite ein Hinweis auf einen externen Team-Wettkampf platziert wurde. Nämlich auf den BOINC Pentathlon:

wcg pentathlon BOINC Pentathlon   der III

Aber der absolute Kracher ist, dass die 31 teilnehmenden Teams beim Pentathlon voll mitgehen! Die Wertung könnte spannender nicht sein und es wird in Teamforen quer über den Globus über die richtige Strategie beim BOINC Pentathlon diskutiert! 95 Seiten Diskussion schon jetzt beim Team Planet 3D Now! In China bringt man es auf 30 Seiten. In Tschechien hat man sich sogar Pentathlon User-Statistiken gebaut. Overclock.net bringt es auf 60 Seiten Diskussion. In Frankreich, den USA, Italien, Spanien und Russland ist man sowieso dabei! Und selbst auf der anderen Seite der Welt – in Australien – ist der Pentathlon ein Thema! Grandios! Und in dieser Aufzählung habe ich jetzt etliche Teams und Foren vergessen..

Da macht die Organisation doch Spaß! ;o)

Mach’ es selbst!

Ihr erinnert euch an die Absturz-Maleschen meines PCs und die Auseinandersetzung mit Alternate? Nein? Ok, eine kurze Zusammenfassung: Ich kaufe einen niegelnagelneuen Komplett-PC, der von Alternate zusammen geschraubt wurde und andauern abstürzt. Nach zig Reklamationen finde ich dann mit einem Alternate-Techniker eine Einstellung unter Windows, die die Abstürze behebt. Soweit so gut…

Vor einigen Wochen installiere ich das neue Ubuntu 12.04 (schickes Ding!), welches überhaupt nicht läuft. Doch anstatt den kryptischen Windows-Fehlermeldungen, die alles bedeuten können, erhalte ich unter Ubuntu eine sehr konkrete Fehlermeldung:

Core temperature above threshold, cpu clock throttled

Und ja, 98° CPU-Temperatur sind heiß.. verdammt heiß! Ich entstaube daraufhin den Kühler, aber es bringt nichts.. Ok, dann muss wohl ein neuer Kühler her! Der Alpenföhn Brocken wird bestellt und heute direkt eingebaut. Ergebnis: Entspannte 46° unter Vollast. Keine Fehlermeldungen mehr.. Alles im grünen Bereich.

Ich habe damals den Komplett-PC nicht selbst zusammen gebaut, weil das Aufsetzen des Kühlers auf der CPU doch ein heikler Punkt ist, vor dem ich Respekt hatte. Die CPU ist ja nicht gerade der günstigste Teil eines PCs.

Da verlässt man sich also auf die Experten und die verbauen blindlings einen Kühler, der unter Vollast die Hitze nicht abtransportieren kann. Traurig. Noch trauriger, ich bin die ganze Zeit mit gedrosselter Rechenkraft unterwegs gewesen, weil die CPU sich wegen der Hitze herunter gedrosselt hat…

Fazit

Mach’ es selbst!

Jahreszeiten

War das gestern ein Wetter!? Herrlisch, oder? Schade, dass ich nur während der Mittagspause etwas davon hatte… Na ja, heute ist es ja fast noch schöner.

Also genießt das schöne Wetter, denn der nächste Winter kommt bestimmt – das haben Jahreszeiten leider so an sich:

jahreszeiten klein Jahreszeiten

Noch beeindruckender in großer Ansicht!

[via reddit - link weg]

Aufgrund meines Jobs habe ich mich den letzten Monat mit Ruby on Rails beschäftigt und die ersten Funktionen in einer RoR-Anwendung ergänzt. Auch wenn ich seit Jahren PHP-Anwendungen schreibe und bereits Erfahrungen mit PHP-Frameworks gesammelt habe, ist dieses Wissen nur begrenzt für die Ruby on Rails-Entwickung von Nutzen. Warum?

Ruby

Ruby hat eine andere Syntax… Zugegeben: eine schönere und besser lesbare Syntax als PHP. Was ich z.B. sehr schön finde, ist folgender Code:

puts i if i > 0

Wenn i größer als 0 ist, wird i ausgegeben. Ganz einfach, in einer Zeile, ohne geschweifte Klammern, auf den Punkt.

Natürlich findet man viele Gemeinsamkeiten in Ruby und PHP. Wäre ja komisch, wenn Ruby ohne Arrays und Objekte auskäme.
Der Ruby-Code ist deutlich besser lesbar, da z.B. bei Code-Blöcken mit Texteinrückungen gearbeitet wird, anstatt geschweifte Klammern zu verwenden, die dadurch obsolet werden.

Natürlich sollte als erstes Ruby gelernt werden und erst dann Rails. Für den Ruby-Einstieg eignet sich dieses interaktive TryRuby-Tutorial.

Rails

Rails-Anwendungen werden auf einer ganz anderen Abstraktionsebene programmiert als PHP-Anwendungen. Die zwei Grundsätze von RoR sind

  • Don’t Repeat Yourself
  • Convention over Configuration

Die Vorteile dieser Grundsätze sind

  1. Weniger Code
  2. Schnellere Entwicklung
  3. Konzentration auf die Webanwendung (anstatt sich mit Konfigurationen oder DB-Design zu beschäftigen)

Es muss also attestiert werden, dass Rails einem sehr viel Arbeit abnimmt. Man kann sich über die Rails-Konsole sogar einfache, funktionierende Grundgerüste (Scaffolds) der Webanwendung erstellen lassen, ohne auch nur eine Zeile Code schreiben zu müssen.

Dank den RubyGems können zusätzliche Erweiterungspakete in die Anwendung integriert werden, die die Funktionalität von Ruby on Rails ergänzen. Nested_form zur einfachen Handhabung mehrerer Modelle in einem Formular.
Oder einfache Suchfunktionalitäten mit meta_search gefällig? Welche Schritte sind in PHP notwendig, um eine Suche zu implementieren: Formular bauen, eingegebene Daten prüfen, säubern, übernehmen und eine SQL-Abfrage daraus bauen. Richtig? Mit meta_search benötigst du in RoR gerade mal neun popelige Zeilen Code, um in Artikeln nach Titeln zu suchen:
Im Controller der Artikel müssen die Suchparameter entgegen genommen werden (4 Zeilen):

def index
  @search = Article.search(params[:search])
  @articles = @search.all   # lade alle Einträge
end

Und im Formular wird die Suche definiert (5 Zeilen):

<%= form_for @search do |f| %>
  <%= f.label :title_contains %>
  <%= f.text_field :title_contains %><br />
  <%= f.submit %>
<% end %>

wobei title das zu durchsuchende Feld in der Datenbank ist und _contains gibt an, dass der Suchparameter als Teilstring verwendet wird. Jeder Programmierer wird angesichts dieser wenigen Code-Zeilen mit der Zunge schnalzen, denn viel produktiver kann wohl nicht programmiert werden.

Aber dieser hohe Abstraktionsgrad hat auch seine Nachteile: Was tun, wenn die Suche nicht das tut, was man erwartet? Welche Optionen stehen einem zur Verfügung? Wie richtet man eigene Suchmethoden ein? Wie sieht’s mit Sicherheitslücken aus? Welche Variablen und Funktionen stehen zur Verfügung? Welche Abhängigkeiten bestehen?
Wie bei allen Frameworks begibt man sich in eine neue Umgebung, die man erst erkunden muss. Man muss sich auf Rails voll einlassen und sollte die Art und Weise von Rails akzeptieren. Die Herangehensweise “in PHP habe ich das so implementiert, wie setze ich das jetzt 1:1 in RoR um“, ist zum Scheitern verurteilt. Dazu hat Rails zu viele Konventionen, die man kennen und benutzen sollte, weil sie einem das Leben leichter machen.

Ich habe für mich festgestellt, dass das pure Einlesen in die Rails-Materie relativ wenig bringt. Besser sind Tutorials, in denen man aktiv werden muss. Ein gutes, witzig gemachtes und kostenloses Tutorial ist Rails for Zombies. Den kostenpflichtigen Fortsetzungsteil namens Rails for Zombies 2 von der Code School kann ich ebenfalls nur empfehlen.

Fazit

Auf der Ruby on Rails-Seite prangt folgendes Zitat von Tim O’Reilly:

Ruby on Rails is a breakthrough in lowering the barriers of entry to programming. Powerful web applications that formerly might have taken weeks or months to develop can be produced in a matter of days.

Ein schönes Schlussfazit. Ich würde allerdings nicht sagen, dass es die Einstiegsbarrieren für die Programmierung senkt. RoR ist in meinen Augen kein Anfänger-Framework. Natürlich kümmert Rails sich um viele Aspekte, aber ich halte es gerade bei Anfängern für wichtig, dass sie die zugrunde liegenden Mechanismen verstehen. Und das ist bei all der “Rails-Magie” nicht möglich.