Everyday Scripting mit Ruby oder: Werden die PragProg-Bücher immer dicker?
Als ich heute meine beiden neusten Bücher der Pragmatic Programmers ausgepackt habe, viel mir auf, dass beide ziemlich viele Seiten haben. Auch mein aktuelles Buch ist nicht allzu dünn. Könnte es sein, dass ihre Bücher immer dicker werden? Fände ich schade, denn ich lese eigentlich lieber kleine, kompakte Bücher.
Wie finde ich das jetzt am schnellsten heraus? Auf der Webseite gibt es eine schöne Liste aller Bücher, die sich ausserdem nach Release Date sortieren lässt. Perfekt! Also rasch eine Konsole mit irb gestartet, und das Dokument geöffnet:
require 'open-uri'; require 'hpricot'
doc = Hpricot(\
open("http://pragprog.com/categories/all?sort=pubdate"))
Die Links zu den Detailseiten aller Bücher (”a”s in einem div mit class=”thumbnail” Attribut) fand ich mit Hilfe folgender Query:
books = \
(doc/"div[@class=thumbnail]/a").collect \
{|link| link.attributes["href"] }
Es hilft natürlich extrem, wenn die Webseite vernünftig aufgebaut ist und vieles in divs mit css-Klassen unterteilt. Die Anzahl Seiten aller Bücher findet man mit:
pages = books.collect {|book|
doc = Hpricot(open(book))
(doc/"div[@class=stats]").collect {|stat|
stat.inner_html.strip.split(' ').first unless stat.inner_html =~ /friday/
}}.flatten.compact.reverse
Mich interessieren nur die echten Bücher, deshalb habe ich die PDFs der Friday-Serie ausgelassen.
Nun haben wir also ein Array mit den Seitenzahlen aller Bücher. Sehr viel nützt das noch nicht, wir sollten das ganze vielleicht mit Gnuplot visualisieren:
Gnuplot.open do |gp|
Gnuplot::Plot.new( gp ) do |plot|
plot.ylabel "Seiten"
y = pages.collect{|y| y.to_i }
x = (1..y.length).to_a
plot.data << Gnuplot::DataSet.new([x,y]) do |ds|
ds.with = "lines"
end
end
end
Und das schönste daran? Es hat nur eine halbe Stunde gedauert (inkl. Gnuplot kompilieren
), genau so lange wie ich währenddessen meine Blutwurst gekocht habe
Ach ja, das Resultat:

Man könnte das wohl noch schöner machen, aber es reicht mir eigentlich, denn man sieht, dass die Seitenzahlen eher zunehmen...
3 comments on “Everyday Scripting mit Ruby oder: Werden die PragProg-Bücher immer dicker?”
Leave a comment
You must be connected to write a comment.


soviel zum thema “was macht man gegen langeweile?”: Die einen schauen fern, die anderen programmieren sich das leben einfach
So geil! Ich muss endlich mal ruby lernen. Nicht das ich in Statistik besonders gut gewesen wäre, aber die statistische Auswertung deines Plots ist mir dann doch grad ein bischen grob Unwissenschaftlich. Bei der nächsten Blutwurst prüfst du deine Aussage dann mal noch mit R nach.
Giu: Genau
Leo: Ja die Analyse kam etwas zu kurz, ich musste noch den Abwasch machen…