ruby-mine

exploring the mine

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)

[RES2007] Betaleser die zweite

von bovi am 16.02.2007 (07 Uhr)
Vor einer Weile hab ich mal nen paar Betaleser für mein Manuskript gesucht. Da das stückchen Papier nun zumindest geschrieben ist (fertig ist es wohl kaum), wollte ich mal mit ein wenig Verzögerung in die Runde Fragen, ob es vielleicht den einen oder anderen neuen Besucher hier gibt, der Interesse hat ein paar Seiten in den nächsten zwei Wochen zu lesen. Einfach einen Kommentar hinterlassen oder mir ne E-Mail an (daniel [ät] bovensiepen [pünktchen] net) senden. Alle Betaleser die sich bisher gemeldet haben, müssten vor ein paar Minuten eine E-Mail erhalten haben. Sollte dies nicht der Fall sein, so hab ich die entsprechenen Personen vergessen (und zwar unbeabsichtigt). Meldet Euch in einem solchen Fall einfach nochmal.
 
Kommentare (2)

why's (poignant) guide to ruby

von bovi am 14.02.2007 (10 Uhr)
Bei _why hab ich gerade den Link zum 7. Kapitel seines Guides gefunden. Ich bin nicht mehr ganz up to date ob das jetzt gerade aktuell ist, ich kannte es jedoch noch nicht.
 
Kommentare (3)

Gefährliche Sicherheitslücken in cgi.rb

von murphy am 04.12.2006 (20 Uhr)

Nippon, we have a problem.

Was ist passiert?

Ich möchte versuchen, Licht ins Dunkel zu bringen.

diff -r

Folgende Änderungen unterscheiden Ruby 1.8.5-ps (2006-12-04) von Ruby 1.8.5 (2006-08-29):

ChangeLog
Mon Dec  4 10:22:26 2006  URABE Shyouhei  

    * stable version 1.8.5-p2 relased.

Sun Dec  3 17:11:12 2006  Shugo Maeda  

    * lib/cgi.rb (CGI::QueryExtension::read_multipart): should quote
      boundary. JVN#84798830

Sun Nov 26 16:36:46 2006  URABE Shyouhei  

    * version.h: addition of RUBY_PATCHLEVEL.
    * version.c: ditto.

Sat Sep 23 21:34:15 2006  Yukihiro Matsumoto  

    * lib/cgi.rb (CGI::QueryExtension::read_multipart): CGI content
      may be empty.  a patch from Jamis Buck .

Jetzt sehen wir auch mal, wer die Lücke gefunden hat: Danke, Jamis!

lib/cgi.rb
@@ -967,6 +967,7 @@  
       def read_multipart(boundary, content_length)
         params = Hash.new([])
         boundary = "--" + boundary
  +      quoted_boundary = Regexp.quote(boundary, "n")
         buf = "" 
         bufsize = 10 * 1024
         boundary_end="" 
@@ -998,7 +999,7 @@
           end
           body.binmode if defined? body.binmode

  -        until head and /#{boundary}(?:#{EOL}|--)/n.match(buf)
  +        until head and /#{quoted_boundary}(?:#{EOL}|--)/n.match(buf)

             if (not head) and /#{EOL}#{EOL}/n.match(buf)
               buf = buf.sub(/\\\\A((?:.|\\\\n)*?#{EOL})#{EOL}/n) do
@@ -1018,14 +1019,14 @@
                 else
                   stdinput.read(content_length)
                 end
  -          if c.nil?
  +          if c.nil? || c.empty?
               raise EOFError, "bad content body" 
             end
             buf.concat(c)
             content_length -= c.size
           end

  -        buf = buf.sub(/\\\\A((?:.|\\\\n)*?)(?:[\\\\r\\\\n]{1,2})?#{boundary}([\\\\r\\\\n]{1,2}|--)/n) do
  +        buf = buf.sub(/\\\\A((?:.|\\\\n)*?)(?:[\\\\r\\\\n]{1,2})?#{quoted_boundary}([\\\\r\\\\n]{1,2}|--)/n) do
             body.print $1
             if "--" == $2
               content_length = -1
  

Hier stecken also die eigentlichen Fehler.

Ich weiß leider nicht, wer die zweite Lücke gefunden hat.

Bleibt noch das neue Patchlevel:

version.c und version.h
const int ruby_patchlevel = RUBY_PATCHLEVEL;
...
rb_define_global_const("RUBY_PATCHLEVEL", INT2FIX(RUBY_PATCHLEVEL));
...
#define RUBY_PATCHLEVEL 2
...
RUBY_EXTERN const int ruby_patchlevel;

Die Diskussion um die Einführung des Patchlevels und eines neuen CVS-Branches (er schient jetzt ruby_1_8_5 zu heißen) findet ihr im Archiv.

Für Programmierer

Baut folgende Prüfung ein, wenn eure Skripte cgi.rb benutzen (soweit ich weiß, tun das unter anderem alle Rails-Applikationen; laut Jeremy Kemper ist Rails aber nicht betroffen, wenn man im production-Mode unter FastCGI arbeitet.)

if not defined? RUBY_PATCHLEVEL or (RUBY_VERSION <= '1.8.5' and RUBY_PATCHLEVEL < 2)
  raise SecurityError, 'Please use Ruby 1.8.5-p2 or later!'
end

Echo

Based on how the cgi.rb file is coded it's most likely that there will be more of these kinds of defects in the future.
(Zed A .Shaw, der Mongrel-Typ) [Edit: Prüfungscode für Ruby 1.9 angepasst (Patchlevel natürlich nur für bereits veröffentlichte Versionen.)]
 
Kommentare (1)

Google.search_content - /(^ruby)/

von bovi am 25.10.2006 (20 Uhr)
Seit ein paar Stunden ist eine neue Suchmaschine Online. Wobei das Wort neu und Suchmaschine eigentlich zuviel des Guten ist. Viel eher handelt es sich um einen Google Hack. So wird über dieses Interface eine Google Anfrage mit einem Filter auf Rubyspezifische Seiten gesendet. Das Resultat scheint ganz praktisch zu sein, besonders wenn man die API Doku oder Rubyforge mal durchsuchen will. Ich persönlich finde das Suchinterface von Rubyforge nämlich sehr mies.
 
Kommentare (0)

Kann man Rubine kochen?

von bovi am 11.08.2006 (01 Uhr)

Nachdem ich die letzten Jahre einen Bogen um den Verlag von Tim O’Reilly gemacht habe (das letzte O’Reilly Buch, welches ich in meinem Bücherregal fand, war Linux in a Nutshell – Preis 69 DM), habe ich nun meine Sammlung um das Ruby Cookbook erweitert und damit halte ich nun wieder ein O’Reilly Buch in den Händen.


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

"Ruby Guerilla Krieg" auf Wikipedia [Teil 2]

von bovi am 07.08.2006 (18 Uhr)

Über einen bevorstehenden Guerilla Angriff auf den Ruby Wikipedia Artikel berichtete ich bereits. Nun möchte ich nach drei monatiger Arbeit allen Leuten Danke sagen die mitgeholfen haben das neue Grundgerüst des Artikels zu erstellen und Ruby damit in der Wikipedia ein besseres Gesicht zu verpassen. Es gibt immer noch eine Menge zu tun aber die Ausgangsbasis ist nun um einiges besser.

Infos:
Unsere neue Version ist nun der offizielle Artikel.
Die alte Version ist jedoch immer noch über die History erreichbar.

 
Kommentare (0)

rb Spezifikation.?. Wir kommen.!.

von bovi am 04.08.2006 (03 Uhr)
Neben den ständigen Tiefschlägen das Ruby ja ach so langsam sei, hören wir (zu recht!) die Hilferufe, dass die Dokumentation von Ruby nicht mal annähernd vollständig sei. Auf die Frage wie sich unser Liebling in speziellen Fällen verhält, mache ich bis heute doch noch hin und wieder meinen Editor auf und schaue mir eval.c und Gefolgschaft an. Um diesem Zustand ein baldiges Ende zu setzen, wurde vor ein paar Tagen ein Wiki aufgesetzt welches `irgendwann` einmal eine tragbare Spezifikation von Ruby bereitstellen soll. Im Moment muss ich gestehen, dass die Informationen bisher mehr als dürftig sind oder besser gesagt es ist fasst nix vorhanden. Aber der längste Weg beginnt mit dem ersten Schritt und dieser Weg könnte sehr lang werden.
 
Kommentare (8)

Werde zum Ruby-Guerilla auf Wikipedia

von bovi am 10.05.2006 (18 Uhr)

Der eine oder andere von Euch wird sicherlich die Online Enzyklopädie Wikipedia kennen. Sie zeichnet sich dadurch aus, dass es zu jedem Thema (ich meine wirklich jedes Thema) einen Artikel gibt. Natürlich gibt es auch einen für Ruby. Bei diesem handelt es sich leider nicht um eine Glanzleistung der Wikipedia. Es werden stupide Merkmale aufgezählt und in einem ewig langen Listing wird die Syntax von Ruby gezeigt. Dies ist mir persönlich ein Dorn im Auge. Aufgrund dessen habe ich angefangen, parallel in der Wikipedia meinen eigenen Ruby Artikel zu schreiben. Er steckt im Moment noch in den Kinderschuhen und es bedarf noch einiger Arbeit um daraus einen würdiger Wikipedia-Eintrag für Ruby zu gestalten. Aufgrund dessen will ich hiermit jeden Interessierten einladen, einen Blick auf den Artikel zu werfen und mutig Änderungen durchzuführen.

Weblink: Beta Ruby Artikel

PS.: Hier können wir ruhig einmal einen neidischen Blick zu unseren netten Nachbarn werfen.

 
Kommentare (6)

[2050°C] Erweiterung mit C

von bovi am 22.04.2006 (02 Uhr)

Wie ich hier kurz erwähnte, will ich mich heute ins Ruby-Ghetto wagen. Es geht darum C in Ruby einzubinden.

Ich würde Euch gerne sagen, dass Ruby der Ursprung war. Dass es nix davor gab und dass es nix danach geben wird. Aber leider ist dies weit von der Wahrheit entfernt. Denn so wie jede Ballkönigin eine kleine dicke Freundin hat, so hat auch Ruby ein kleines hässliches Anhängsel. Es ist wirklich so klein und hässlich, dass man schon bei der Namenssuche nach dem ersten Buchstaben verzweifelte, aufgab und es heute nur noch 'C' nennt. Man weiß nicht genau wozu dieses 'C' da sein soll. Einige behaupten es wäre eine Programmiersprache - aber eine Programmiersprache sollte unser Leben einfacher gestalten. Andere behaupten es wäre die erste Waffe im Informationskrieg gewesen um die Russen zu verwirren - dies wiederum würde einiges erklären.


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

[2050°C] Der Anfang

von bovi am 20.04.2006 (02 Uhr)

Murphy hat Euch in den letzten Wochen einen tiefen Einblick in die syntaktischen Finessen von Ruby geliefert. Ihr habt normale Strings und Fancy Strings kennengelernt. Es stellte sich heraus, dass Here Docs ebenfalls nur Strings mit einer zusätzlichen Dimension sind. Die funktionale Programmierung mit Symbol#to_proc macht Euch das Leben um einiges leichter. Und Fehlerbehandlung mit rescue ist nun zu einem selbstverständlichen Codefragment geworden, welches jeden unsicheren Code schmückt. Parallel hierzu möchten wir euch nun auf einer neuen Ebene einen Einblick in unseren Rubin verschaffen. Hierzu fahren wir die Schmelzanlage auf knapp 2050°C hoch und schauen uns an, was sich im inneren des Edelsteins befindet.


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

Neues in Rails 1.1

von murphy am 05.04.2006 (03 Uhr)

Was gibt es Neues in Rails 1.1?

Die Bergarbeiter in der Ruby-Mine haben einen ganzen Wagen voller Hinweise ans Licht gebracht - auf Deutsch, diesmal.

Wer also nicht genug Englisch kann, um die Originalartikel zu lesen, oder unsere Ergänzungen lesen möchte, findet auf

rails11.rubychan.de

die Ergebnisse tagelangen Grabens.

Viel Spaß :)

 
Kommentare (0)

Tutorial: Rails für Designer

von dethix am 23.03.2006 (11 Uhr)

Kevin Clark hat in seinem Blog den Artikel “Rails for Designer” veröffentlicht. Der Beitrag ist in englischer Sprache verfasst, trotzdem aber gut verständlich. Er richtet sich in erster Linie an Webdesigner die mit Rails in Kontakt kommen.

Vom Aufbau (MVC) über die Templates und RHTML bis hin zu Tags und Partials, zeigt er anhand von Beispielen, welche Möglichkeiten der Designer hat und was er beachten muss.

Dies sollte den Einsteig für jeden Rails-Neuling auf jeden Fall erleichtern.

 
Kommentare (0)

'Ruby Hacking Guide' nun bald in englisch

von bovi am 21.03.2006 (18 Uhr)
Die bisher nur in japanisch verfügbare Ruby Hacking Referenz wird nun innerhalb eines Projektes ins englische übersetzt. Interessant ist dieser Guide für alle, die sich mit den internen Abläufen des Ruby Interpreters beschäftigen wollen. Im ersten Kapitel wird die interne Verwaltung von Objekten, von der Instanzierung bis zum Garbage Collector, erläutert. Das zweite Kapitel beschäftigt sich mit dem Parser (z.b. Syntax Analyse mit YACC). Im dritten Kapitel wird die inkrementelle Ausführung von Ruby Code beschrieben und das vierte Kapitel geht nochmal auf Themen wie Threading ein.
 
Kommentare (0)

Ruby-Doc Redesign

von bovi am 06.03.2006 (10 Uhr)
Die offizelle Dokumentationsseite des Ruby Projektes wurde einem kräftigen Redesign unterzogen. Interessanterweise wurde als Webframework nicht Rails sondern Nitro benutzt, ein ebenfalls sehr interessantes Ruby Webframework was einen Blick wert ist.
 
Kommentare (0)