ruby-mine

exploring the mine

Germany.rb 2011 review

von bovi am 23.09.2011 (17 Uhr)

Das war sie nun unsere zweite Iteration der Germany.rb am 20. und 21. August 2011. Es waren ca. 25 Leute da und es gab insgesamt 13 auf Video aufgezeichnete Vorträge. Hier eine kleine Zusammenfassung wie es ablief und wie es weitergehen könnte.


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

RubyKaigi 2011

von bovi am 14.08.2011 (16 Uhr)

Vom 16 bis 19. Juli 2011 fand die 6. und letzte RubyKaigi in Tokyo statt. Dabei handelt es sich neben der RubyConf und EuRuKo um die wichtigste jährliche Ruby Konferenz.

Hier gibt es ein paar Notizen von den aus meiner Sicht interessantesten Vorträgen.


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

Matz wechselt den Arbeitgeber

von skade am 12.07.2011 (22 Uhr)

An sich ist ihm das ja komplett frei gestellt, aber ich dachte, es könnte doch interessant sein: Matz arbeitet neuerdings bei Heroku.

 
Kommentare (0)

Das Anzählen hat begonnen

von skade am 08.07.2011 (10 Uhr)

Irgendwann kommt die leidige Diskussion ja immer wieder auf. Ruby 1.9 oder 1.8? Wer Argumente gegen 1.8 für neue Projekte sucht, der wird ab heute ein neues bekommen: Die Gespräche über das End-Of-Life von Ruby 1.8 haben begonnen. Das altehrwürdige 1.8.6 wird eh kaum mehr gepflegt und 1.8.7 ist seit Jahren im Maintenance-Mode. Beide entwickeln sich nicht mehr fort, können allerdings auf eine breite Installationsbasis verweisen, was die Pflege durchaus noch sinnvoll macht. Gerade 1.8.7 wurde vor einigen Tagen mit einer neuen Version bedacht.

Wer die Diskussion gleich live verfolgen will, kann das im Redmine Issue 4996 tun. Momentan steht ein Ende der Maintenance im Juni 2012 im Raum, die Einstellung von sicherheitsrelevanten Fixes im Juni 2013. Aber das ist erstmal nur ein Vorschlag, es wäre nicht das erste Mal, dass sich in solch einer Situation ein Maintainer findet, der die Pflege unbedingt fortführen will.

 
Kommentare (0)

Ruby + 10 Quine

von bovi am 04.07.2011 (04 Uhr)

Ich habe gerade folgendes Quine von Yusuke Endoh gefunden:

1
2
# ruby
l=92.chr;eval s="s=s.dump[r=1..-2].gsub(/("+l*4+"){4,}(?!\")/){|t|'\"+l*%d+\"'%(t.size/2)};5.times{s=s.dump[r]};puts\"# python\\nprint(\\\"# perl\\\\nprint(\\\\\\\"# lua"+l*4+"nprint("+l*7+"\"(* ocaml *)"+l*8+"nprint_endline"+l*15+"\"-- haskell"+l*16+"nimport Data.List;import Data.Bits;import Data.Char;main=putStrLn("+l*31+"\"/* C */"+l*32+"n#include<stdio.h>"+l*32+"nint main(void){char*s[501]={"+l*31+"\"++intercalate"+l*31+"\","+l*31+"\"(c(tail(init(show("+l*31+"\"/* Java */"+l*32+"npublic class QuineRelay{public static void main(String[]a){String[]s={"+l*31+"\"++intercalate"+l*31+"\","+l*31+"\"(c("+l*31+"\"brainfuck"+l*64+"n++++++++[>++++<-]+++++++++>>++++++++++"+l*31+"\"++(concat(snd(mapAccumL h 2("+l*31+"\"110"+l*31+"\"++g(length s)++"+l*31+"\"22111211100111112021111102011112120012"+l*31+"\"++concatMap("+l*32+"c->let d=ord c in if d<11then"+l*31+"\"21002"+l*31+"\"else"+l*31+"\"111"+l*31+"\"++g d++"+l*31+"\"22102"+l*31+"\")s++"+l*31+"\"21002111010120211222211211101000120211021120221102111000110120211202"+l*31+"\"))))))++"+l*31+"\","+l*63+"\""+l*64+"n"+l*63+"\"};int i=0;for(;i<94;i++)System.out.print(s[i]);}}"+l*31+"\")))))++"+l*31+"\",0};int i=0;for(;s[i];i++)printf("+l*63+"\"%s"+l*63+"\",s[i]);puts("+l*63+"\""+l*63+"\");return 0;}"+l*31+"\");c s=map("+l*32+"s->"+l*31+"\""+l*63+"\""+l*31+"\"++s++"+l*31+"\""+l*63+"\""+l*31+"\")(unfoldr t s);t[]=Nothing;t s=Just(splitAt(if length s>w&&s!!w=='"+l*31+"\"'then 501else w)s);w=500;f 0=Nothing;f x=Just((if x`mod`2>0then '0'else '1'),x`div`2);g x= reverse (unfoldr f x);h p c=let d=ord c-48in(d,replicate(abs(p-d))(if d<p then '<'else '>')++"+l*31+"\"."+l*31+"\");s="+l*31+"\"# ruby"+l*32+"n"+l*31+"\"++"+l*31+"\"l=92.chr;eval s=\"+(z=l*31)+\"\\\"\"+s+z+\"\\\""+l*31+"\"++"+l*31+"\""+l*32+"n"+l*31+"\""+l*15+"\""+l*7+"\")"+l*4+"n\\\\\\\")\\\")\"########### (c) Yusuke Endoh, 2009 ###########\n"

Das besondere an diesem Quine?

1
2
3
4
5
6
7
8
9
10
11
$ ruby QuineRelay.rb > QuineRelay.py
$ python QuineRelay.py > QuineRelay.pl
$ perl QuineRelay.pl > QuineRelay.lua
$ lua QuineRelay.lua > QuineRelay.ml
$ ocaml QuineRelay.ml > QuineRelay.hs
$ runghc QuineRelay.hs > QuineRelay.c
$ gcc -Wall -o QuineRelay QuineRelay.c && ./QuineRelay > QuineRelay.java
$ javac QuineRelay.java && java QuineRelay > QuineRelay.bf
$ beef QuineRelay.bf > QuineRelay.ws
$ wspace QuineRelay.ws > QuineRelay.unl
$ unlambda QuineRelay.unl > QuineRelay2.rb

Und abschliessend:


$ diff QuineRelay.rb QuineRelay2.rb

Ich bin verstört…

 
Kommentare (2)

Germany.rb 2011 Ruby User Treffen in Leipzig

von bovi am 23.06.2011 (16 Uhr)

Wir haben wieder einen Termin gefunden! Am 20. und 21. August 2011 treffen wir uns zur zweiten Germany.rb in Leipzig im sublab. Wie immer gibt es keine Teilnahmegebühr und kein statisches Programm. Statt dessen gibt es Platz für Jeden um seine Ideen vorzutragen und sein Wissen zu teilen und zu erweitern.

Mehr Informationen gibt es auf der offiziellen Ruby Webseite.

Der Bericht mit allen Videos zur Germany.rb 2010 ist auch verfügbar.

 
Kommentare (0)

Ruby-Talk-ML und comp.lang-ruby getrennt

von quintus am 21.06.2011 (22 Uhr)

James Edward Gray II. hat heute überrschend das Gateway zwischen der Ruby-Talk-Mailingliste und der Newsgroup comp.lang.ruby heruntergefahren, da ihm die Wartung ein zu großer Aufwand würde und er meint, dass die Ruby-Community zu groß für diese Verbindung geworden sei, sie habe sich ohnehin schon in einzelne Themenbereiche aufgespalten. Die ursprüngliche Funktion, die Ruby-Community zusammenzuhalten, als sie noch klein war, sei überholt und nicht mehr vonnöten.

Heute um 22:25 Uhr hat James verkündet, dass das Gateway geschlossen sei. Das bedeutet, dass die Usenet-Posts auf comp.lang.ruby nun nicht mehr auf der Mailingliste erscheinen werden, und umgekehrt auch Postings auf der Mailingliste die Newgroup nicht mehr erreichen.

 
Kommentare (0)

Methoden in Ketten legen

von skade am 02.04.2011 (16 Uhr)

Method chaining - also die implementierung einer Methode durch verketten mehrerer anderer ist durch Ruby on Rails zu einer gewissen Popularität gelangt. Während sich Rails hier auf ein einfaches Namenschema und alias verlässt, bietet DataMapper hier eine Technik an, die sich vorzüglich für einen Ausflug in Rubys Objektmodell eignet. Diese Gelegenheit will ich nicht an mir vorüber gehen lassen und die Implementierung namens Chainable hier vorstellen.

Chain


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

Ruby demnächst nur noch Closed-Source

von quintus am 01.04.2011 (00 Uhr)
Wie unterrichtete Kreise erfahren haben wollen, übernimmt die Oracle Corporation die maßgeblich an der Ruby-Entwicklung beteilgte Firma EngineYard für umgerechnet 240 Millionen Euro. Dem Sprecher von Oracle zufolge solle Ruby nun "um die Qualität, Produktivität und Attraktivität der Sprache zu fördern" nur noch als Closed-Source entwickelt werden. Die Binaries, die auf der noch nicht öffentlich zugänglichen Website ruby.oracle.com zu haben sein werden, sollen jedoch nach wie vor kostenlos sein. Man werde auch weiterhin Binaries für Linux- und Mac-Systeme anbieten, verspricht die amerikanische Firma. Oracle werde aber eine kostenpflichtige "Cloud Edition" von Ruby veröffentlichen, die offenbar anstelle der bisherigen Makro-Funktion von Oracles "Cloud Office" benutzt werden kann.

Der Hauptentwickler und Erfinder von Ruby, der Japaner Yukihiro "Matz" Matsumoto, äußerte sich bestürzt. Er werde sich fortan vollständig aus der Ruby-Entwicklung zurückziehen, und mit ihm der größte Teil des bisherigen Core-Teams. Er empfehle für die Zukunft einen Boykott der Sprache, postete er auf einer japanischen Ruby-Mailingliste:
私たちに向かって、Oracleの敵対的な態度は、私たちは、Rubyプログラミング言語で開発を停止させる。これは、私が言うのは難しいが、もうRubyを使用しないでください。そのような組織をサポートしていません。
Zugleich kündigte Oracle an, mit der demnächst erscheinenden Version 7 der Programmiersprache Java deren Lizenz so abzuändern, dass jegliche Software, die auf der Java Virtual Machine aufsetzt, nur noch als Closed-Source vertrieben werden darf. Dies veranlasste den führenden Kopf der JRuby-Implementation, Charles Oliver Nutter, zu einem hier nicht weiter zitierten, aber überaus unhöflichen Statement gegenüber Oracle. Alle Hoffnungen ruhen nun auf der letzten freien Ruby-Implementation Rubinius, deren Entwicklungsteam sich zwar gleichfalls geschockt zeigte, aber verlauten lies, man werde nun mit Hochdruck an der Fertigstellung von Rubinius 1.5 arbeiten, das vollständige Kompatibilität zum bisherigen MRI 1.9.2 besitzen solle.

Update

Kommando zurück, das war nur ein Aprilscherz. Das Matz-Zitat ist auch nur ein passender vom Google-Übersetzer von Englisch nach Japanisch übersetzter Text. :-)
 
Kommentare (6)

Mono 2.10 veröffentlicht

von skade am 17.02.2011 (12 Uhr)

Novell hat die Version 2.10 der alternativen .NET-Implementierung Mono veröffentlicht. Inwiefern ist das für Rubyisten relevant? Ab diesem Release enthalten die Installer für Linux und OS X einen Release von IronRuby und IronPython. Wer also bequem mal IronRuby ausprobieren möchte, kann nun den Installer installieren und einfach ir aufrufen:

[ skade Florian-Gilchers-MacBook-Pro ~ ] ir
IronRuby 1.1.2.0 on 2.10 (tarball Mon Feb 14 16:04:48 MST 2011)
Copyright (c) Microsoft Corporation. All rights reserved.

>>> RUBY_VERSION
=> "1.9.2"
>>> 

Für FOSS-Anhänger wie mich: IronRuby ist übrigens seit geraumer Zeit zusammen mit der DLR (Dynamic Language Runtime) unter Apache 2.0 veröffentlicht.

 
Kommentare (0)

Die drei Großen (2): Sequel

von skade am 11.02.2011 (18 Uhr)

Sequel ist wohl die DB-Zugriffsschicht, mit der sich die wenigsten Rubyisten auskennen. Dabei ist sie meiner Meinung nach die beste reine Skripting-Bibliothek von allen dreien. Das äussert sich schon darin, dass Sequel mit keinerlei Core-Extensions wie ActiveSupport oder Extlib daher kommt. Einige werden zwar optional mitgeliefert, aber nicht standardmässig geladen.

Wie bereits erwähnt, beschäftigt sich Sequel nur mit SQL und das mit nur minimalen Abstraktionen - Sequel ist also kein ORM. Dafür kommt Sequel mit der größten Anzahl an Datenbank-Adaptern, momentan über 20. Implementierungen für verschiedene Connection-Pooling-Strategien und Sharding finden sich auch.

Plugins gibt es für viele interessante SQL-Funktionen, zum Beispiel für Windows (also, nicht das OS) oder Recursive Table Expressions.

Darüber hinaus kommt Sequel mit einem Kommandozeilentool, dass sich als Ersatz für den datenbankspezifischen Client verwenden lässt, allerdings im Grunde nur IRB mit vorgeladener Datenbank ist.


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

Syntax-Sonntag: Noch mal picky

von skade am 09.01.2011 (09 Uhr)

Diesmal nur ein ganz kurzer. Über das Picky Lambda kann man gerne ewig lange diskutieren, aber mir ist gestern noch folgende, selten erwähnte Kleinigkeit aufgefallen: wenn man das picky lambda verwendet, können die Argumentklammern weggelassen werden.

1
2
  f = -> a,b { puts a,b }
  f[1,2] 

(Eigentlich will ich ja nur wissen, ob CodeRay damit zurecht kommt.)

 
Kommentare (1)

Die drei Großen (1): AR, DM, Sequel

von skade am 08.01.2011 (15 Uhr)

Auf einem der letzten germany.rb-Treffen kam zwischendurch eine Frage auf, die wohl doch viele beschäftigt: was unterscheidet eigentlich die drei großen Persistenzbibliotheken ActiveRecord, DataMapper und Sequel? Ein Thema, dass schon so manchen hat fragen lassen, aber selten ordentlich beantwortet wurde. Daher will ich in einer kleinen Serie von Posts alle drei im Detail vorstellen. Dieser Post wird als Auftakt dienen und eine grobe Unterscheidung versuchen.


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

EuRuKo2011.initialize

von bovi am 07.01.2011 (00 Uhr)

Beim rug-b Treffen in Berlin scheinen heute weitere Neuigkeiten über die nächste EuRuKo bekanntgegeben worden zu sein. U.a. ist die Veranstaltung auf den 28. und 29. Mai 2011 fixiert worden. Und der Veranstaltungsort wird das Kino International sein, nur knapp 600m von meinem Zweitwohnsitz in Berlin entfernt. Sehr cool!


Quelle: http://dnbutler.com/
 
Kommentare (0)

Dokumentieren mit hanna

von quintus am 04.12.2010 (15 Uhr)

hanna ist ein Template für das Ruby-Dokumentationstool RDoc. Es weist im Gegensatz zum Standard-Template Darkfish (welches ihr z.B. auf der RDoc-Website bewundern könnt) eine sehr angenehm lesbare HTML-Ausgabe auf und enthält zudem eine Suchfunktion für Methodennamen. Eine beispielhaft mit hanna generierte Dokumentation findet ihr etwa im Dokumentationsteil der Website meines Automations-Projekts und es leidet auch nicht an einigen Problemen wie Darkfish, welches zum Beispiel nicht mit mehrzeiligen Methodendefinitionszeilen (solche können mit der Direktive call-seq erzeugt werden) umgehen kann. In diesem Blogpost möchte ich mich damit befassen, wie man hanna dazu bringen kann, die Ruby-Quellen zu dokumentieren, sodass man nicht immer an Webseiten wie ruby-doc.org (welches oft nicht aktuell ist) oder rdoc.info (welchem hin und wieder einige Teile insbesondere der Stdlib fehlen) gebunden ist. Außerdem werden wir nicht umhin kommen, dasselbe auch für installierte Gems zu tun.


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