ruby-mine

exploring the mine

Mountain West Rubyconf 2008 Videos

von cypher am 05.04.2008 (17 Uhr)

Wie schon letzes Jahr haben die Confreaks alle Vorträge auf der Mountain West Rubyconf 2008 aufgenommen, und stellen diese jetzt nach und nach online. Zu finden sind die Videos auf Confreak's MWRC2008-Seite. Die Videos kann man sich entweder gleich im Browser anschauen oder im mp4-Format downloaden.

Von den bisher online gestellten Videos haben mir besonders Giles Bowkett's Code Generation: The Safety Scissors Of Metaprogramming und Jim Weirich's Shaving with Occam gefallen, aber auch Evan Phoenix' Vortrag über das Rubiniusprojekt oder der Merb-Vortrag sind sehr gut.

 
Kommentare (3)

Ruby/Eventmachine

von cypher am 01.04.2008 (20 Uhr)

Wie ihr vielleicht gemerkt habt gab es letze Woche wieder keinen Artikel. Ich möchte mich dafür entschuldigen und werde bis auf weiteres nur alle zwei Wochen einen neuen Artikel schreiben, da sich das zeitlich bei mir sonst kaum ausgeht.

Was?

Ruby/Eventmachine implementiert ereignisgesteuerte Ein- und Ausgabe für Netzwerkprogrammierung in Ruby. Eventmachine zielt dabei vor allem auf hohe Skalierbarkeit, Stabilität und Performanz, aber auch darauf eine API bereitzustellen die möglichst einfach zu verwenden ist. Eventmachine selber steht in 3 Varianten zur Verfügung: Purem Ruby, das ohne weitere Abhängigkeiten läuft, Ruby mit einer C++-Extension und einer Version für JRuby, die in Java geschrieben ist.


Vollständigen Artikel lesen...
 
Kommentare (1)

Hpricot

von cypher am 18.03.2008 (15 Uhr)

Nachdem mir letze Woche die FH dazwischengekommen ist, gabs eine Woche Verspätung. Sorry.

Was?

Hpricot ist ein sehr flexibler und schneller HTML-Parser, geschrieben von _why. Mittels XPath-Abfragen kommt man schnell an die gewünschten Teile einer HTML-Seite.


Vollständigen Artikel lesen...
 
Kommentare (2)

Praktische Tools fürs tägliche Arbeiten

von cypher am 04.03.2008 (20 Uhr)

Sake

Rake ist ein unheimliches praktisches Tool, keine Frage. Aber es ist auch an die Rakefile gebunden - gibt es im aktuellen Verzeichnis keine, mag auch Rake nicht. Da schafft Sake Abhilfe - System-wide Rake. Einfach per gem install sake installieren, und man kann loslegen.

Sake verwendet eine globale Rakefile, und kann überall Tasks aus dieser ausführen. Eignet sich also herrlich zum Automatisieren von diversen Tasks die wir so erledigen müssen. Ich habe z.b. einen Sake-Task der mir alle Repositories im aktuellen Verzeichnis auf den aktuellsten Stand bringt - egal ob Subversion, Git, Mercurial, oder was da sonst noch so herumfleucht. Oder einen Task um ein Subversion-Repository in ein Git-Repository zu verwandeln.

Installieren von einem Sake-Task ist dabei denkbar einfach. Als Quelle geht jede Rakefile, oder auch Tasks die im Internet liegen. Wenn man z.b. den Repository-Update-Task installieren wollen, geben wir sake -i http://github.com/eventualbuddha/sake-git/tree/master/git.rake?raw=true ein - kurze Zeit später informiert uns Sake dass der Task installiert ist, und wir ihn per sake scm:update aufrufen können. Optional nimmt -i nach der Rakefile auch eine Liste mit Tasks entgegen, die installiert werden sollen. Sake beschränkt sich dann auf diese (plus deren Abhängigkeiten).

UPDATE: gitify ist jetzt Teil von sake-git, das auf GitHub zu finden ist.

cheat

cheat ist ein Tool das uns Cheatsheets auf die Kommandozeile holt. Nach dem installieren (gem install cheat) können wir uns z.b. zu Git ein Cheatsheet anzeigen lassen: cheat git. cheat holt das Sheet von Err the Blog's Cheatsheet Wiki und zeigt es uns an. Dabei wird das Cheatsheet lokal gespeichert, damit es nicht jedes mal neu geladen werden muss. Wenn man den Parameter --new angibt, leert cheat seine Caches, wodurch wir sicherstellen können das wir immer die aktuellsten Cheatsheets zur Verfügung haben. Hilfe zu cheat selber bekommt man indem man cheat cheat eingibt.

 
Kommentare (0)

ZenTest

von cypher am 04.03.2008 (20 Uhr)

Was?

ZenTest ist eine Suite aus 4 Tools und einer Library: zentest, unit_diff, autotest, multiruby und Test::Rails. Alle helfen dem geneigten Programmierer Code zu schreiben der komplett durch Unit-Tests abgedeckt ist.


Vollständigen Artikel lesen...
 
Kommentare (7)

ruby-prof

von cypher am 26.02.2008 (23 Uhr)

Was?

ruby-prof ist ein Ruby-Profiler. Er ist nicht nur deutlich schneller als profile aus der Standardlibrary, sondern unterstützt u.a. auch rekursive Aufrufe, kann mehrere Threads gleichzeitig analysieren, und Call-Graph-Profile erzeugen.


Vollständigen Artikel lesen...
 
Kommentare (1)

ruby-debug

von cypher am 19.02.2008 (13 Uhr)

Meta-Was?

'Ruby Tuesday' soll eine wöchentliche Serie über ein Ruby-Tool oder eine Ruby-Library werden, die vielleicht noch nicht so bekannt sind. Jeder Artikel soll den Sinn und Zweck des Tools oder der Library kurz erläutern, und eine Installationshilfe (sofern notwendig) und eine kurze Gebrauchsanleitung liefern.

Vorschläge für Tools oder Libraries werden natürlich gern entgegengenommen, entweder in den Kommentaren oder per eMail.

Wenn ihr selber einen Artikel beisteuern wollt, seit ihr natürlich herzlich eingeladen, dazu mir bitte einfach eine eMail schicken.

Was?

ruby-debug ist ein Ruby Debugger. In Zeiten von Unit Tests mag ein Debugger vielleicht schon wie ein Anachronismus wirken, aber manchmal helfen auch die besten Testfälle nichts, und man muss in die Eingeweide einer Applikation oder Library tauchen.


Vollständigen Artikel lesen...
 
Kommentare (7)

Quines höherer Ordnung

von cypher am 06.02.2008 (12 Uhr)

Quines sind bekanntermassen Programme die ihren eigenen Quelltext ausgeben.

Aber jetzt gibts was neues: Quines der 3. Ordnung. sigfpe hat ein kleines Haskell-Programm entwickelt:

q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']
main=q "q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']" "def q(a,b,c):print b+chr(10)+'q('+repr(b)+','+repr(c)+','+repr(a)+')'" "def e(x) return 34.chr+x+34.chr end;def q(a,b,c) print b+10.chr+'main=q '+e(b)+' '+e(c)+' '+e(a)+' '+10.chr end"

Führt man dieses Programm aus, erhält man ein Python-Programm:

def q(a,b,c):print b+chr(10)+'q('+repr(b)+','+repr(c)+','+repr(a)+')'
q("def q(a,b,c):print b+chr(10)+'q('+repr(b)+','+repr(c)+','+repr(a)+')'","def e(x) return 34.chr+x+34.chr end;def q(a,b,c) print b+10.chr+'main=q '+e(b)+' '+e(c)+' '+e(a)+' '+10.chr end","q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']")

… welches wiederum ein Ruby-Programm produziert:

def e(x) return 34.chr+x+34.chr end;def q(a,b,c) print b+10.chr+'main=q '+e(b)+' '+e(c)+' '+e(a)+' '+10.chr end
q("def e(x) return 34.chr+x+34.chr end;def q(a,b,c) print b+10.chr+'main=q '+e(b)+' '+e(c)+' '+e(a)+' '+10.chr end","q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']","def q(a,b,c):print b+chr(10)+'q('+repr(b)+','+repr(c)+','+repr(a)+')'")

Und dieses Ruby-Programm produziert wieder das Haskell-Programm. Toll, oder?

 
Kommentare (2)

Kostenlose Ratschläge sind Jeden Cent Wert.

von cypher am 01.02.2008 (13 Uhr)

(Anm.: Wil Shipley ist der Autor von Delicious Library, mit welcher man seine Sammlung aus Bücher, CDs, Filmen, etc. einfach verwalten kann. Im Moment arbeitet er an Delicious Library 2 - die erste Mac-Anwendung die bereits als Beta-Software einen Apple Design Award gewonnen hat. In seinem Blog Call me Fishmeal gibt er ganz gern Ratschläge für Programmierer. Einer davon ist Free Programming Tips are Worth Every Penny, der auch für nicht-Mac-Programmierer sehr interessant ist. Übersetzt mit freundlicher Erlaubnis von Wil.)

Manchmal meint jemand zu mir, “Hey, Wil, du programmierst doch seit die Dinosaurier die Erde beherrschten… hast du nicht ein paar Ratschläge für uns Jungspunde?”

Worauf ich immer antworte, “Hey, ihr Schlingel, RUNTER VON MEINEM RASEN!”

Nein, nein, normalerweise wende ich zögernd “Ach, ich weiss doch auch nicht so recht” ein, während ich schüchtern auf meine Füße starre.

Aber ich hab in letzter Zeit oft darüber nachgedacht, nachdem ich zuerst alleine so viel Code für Delicious Library geschrieben habe (zum ersten mal seit vielen Jahren), und dann einen neuen Programmierer eingestellt und versucht habe ihm mein Wissen zu vermitteln. Und dabei habe ich einen Stil entwickelt:


Vollständigen Artikel lesen...
 
Kommentare (3)

Eine kurze Einführung in Git

von cypher am 07.01.2008 (01 Uhr)

Distributed Version Control Systems (DVCS) haben im letzen Jahr einiges an Aufmerksamkeit bekommen. Glaubt man Linus Torvalds, dann sind Subversion-User Idioten und Git das einzige DVCS Wert verwendet zu werden. Grund genug sich das mal genauer anzuschauen - und wenn es nur geschieht um nicht zu den von Torvalds erwähnten Subversion-Idioten zu gehören.


Vollständigen Artikel lesen...
 
Kommentare (22)

RubyInject

von cypher am 26.11.2007 (13 Uhr)

Laurent Sansonetti ist der Herr der bei Apple für Ruby verantwortlich ist. Neben dem Ruby Interpreter kümmert er sich auch um so sachen wie RubyCocoa, einer Ruby-ObjectiveC-Bridge, mit der man native OS X Programme in Ruby schreiben kann.

Und jetzt hat er RubyInject veröffentlicht.


Vollständigen Artikel lesen...
 
Kommentare (1)

String#to_proc

von cypher am 27.10.2007 (21 Uhr)

Rails hat Symbol#to_proc populär gemacht. So sehr dass es sogar Teil von Ruby 1.9 werden wird.

Und jetzt hat Reginald Braithwaite String#to_proc implementiert. Das sieht folgendermassen aus:
'x+1'.to_proc[2] # => 3
'x+2*y'.to_proc[2, 3] # => 8


Zugegeben, da wo jetzt Symbol#to_proc verwendet wird, braucht man String#to_proc nicht. Verglichen mit
%w[dsf fgdg fg].map(&:capitalize)
liest sich
%w[dsf fgdg fg].map(&'.capitalize')
nicht wirklich besser.

Aber was wenn wir noch keine entsprechende Methode haben? Z.B. um alle Werte in einer Liste mit zwei zu Multiplizieren?
(1..5).map &'*2' # => [2, 4, 6, 8, 10]
Oder eine Liste reduzieren:
(1..5).inject &'+' # => 15


Der Source Code für diesen nützlichen Hack steht unter der MIT Licence, und Herr Braithwaite hat auf seinem Blog natürlich einen (englischen) Eintrag wo er das ganze näher erklärt: String#to_proc
 
Kommentare (2)

13 Wege um ein Ruby-Symbol zu betrachten

von cypher am 03.03.2007 (16 Uhr)

(Dieser Artikel ist die deutsche Übersetzung von 13 Ways of Looking at a Ruby Symbol, welche mit freundlicher Erlaubnis des Autors erfolgt)

Neue Ruby-Programmierer fragen sich oft “Was, genau, ist eigentlich ein Symbol? Und wie unterscheidet es sich von einem String?” Keine einzelne Antwort arbeitet für jeden, deshalb – in Anlehnung an Wallace Stevens – hier 13 Wege um ein Ruby-Symbol zu betrachten.


Vollständigen Artikel lesen...
 
Kommentare (3)