ruby-mine

exploring the mine

Ruby 1.8.5-p12 für Windows

von murphy am 12.02.2007 (21 Uhr)

Update: Man hat mal wieder das readline-Paket vergessen ^^ Also: Neue Version. Windows-User können sich freuen, denn seit Samstag (nach einem halben Jahr ohne Update) steht die finale Version des neuen One-Click-Installers (which you have to double-click afterwards™) zum Download bereit.


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

Ruby und Unicode

von murphy am 28.01.2007 (22 Uhr)

Nichts neues, aber dennoch mal interessant: Unicode-Zeichen in Ruby-Programmen.


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

YARV ist Geschichte

von murphy am 01.01.2007 (12 Uhr)

Klingt traurig, nicht? Es ist wirklich wahr: Das Projekt YARV ist beendet!

Wieso? *heul*

Aus dem ChangeLog:

Mon Jan 01 00:00:00 2007 Koichi Sasada * Merge YARV

YARV ist tot, es lebe Ruby 1.9!


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

TIOBE 11

von murphy am 30.12.2006 (08 Uhr)

Frohes Neues Jahr, Ruby!

Du bist jetzt die elftwichtigste Programmiersprache der Welt. Keine andere Sprache hat im letzten Jahr so viel zugelegt.

 
Kommentare (0)

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)

Is This Ruby? Yes!

von murphy am 03.11.2006 (02 Uhr)

ruby -c

Is this Ruby? Yes! Rails is for many in this world Fast Enough: We got sites actually doing millions of dynamic page views per day; amazing. Maybe you end up being with the Yahoo or Amazon front page; it's unlikely that an off-the-shelve framework in ANY language will do you much good. You' ll probably have to roll your own. But sure. I'd like free CPU cycles too. I just happen to care much more about free developer cycles and am willing to trade the former for the latter - What';s your opinion?

25 x warning: parenthesize argument(s) for future version
Syntax OK

Ich glaube, sowas geht echt nur in Ruby ^_^
Der Text ist von David Heinemeier Hansson, hab nur ein bisschen umformuliert.

Korrektur: PHP akzeptiert das natürlich auch. Weil kein <? drin vorkommt.

 
Kommentare (7)

Die eine Sache, die Java hat und Ruby nicht

von murphy am 14.10.2006 (00 Uhr)

Ich bin ein großer Fan des Spruchs "Try that in Java!", mit dem ich andeuten will, dass Ruby viele Dinge sehr viel einfacher und dadurch erst denkbar (=möglich) macht. Dinge wie Rails, Markaby, selbst CodeRay.

Heute muss ich sagen: "Try that in Ruby!". Licenser, ein weiteres cYcnus-Mitglied, hat einen schönen Artikel über seine schlechten Erfahrungen mit GUI in Ruby geschrieben (auf Englisch.) Übrigends ist das Blog auch sonst einen Besuch wert! :)

Fazit: Es fehlt was in Ruby. Nämlich ein gutes, wirklich plattform-unabhängiges Framework. Wenn ich richtig gehört habe, haben Perl und Python ähnliche Probleme. Wer schöne GUIs entwerfen will, benutzt wohl lieber Delphi oder Java.

An den Weihnachtsmann

Lieber Weihnachtsmann! Ich wünsche mir ein ganz einfaches, schnelles, schönes, gut dokumentiertes freies GUI-Framework, das die GUI-Programmierung so einfach macht wie Rails die Web-Programmierung. Dankeschön!

 
Kommentare (6)

Ein höllisch ineffizienter Zufalls-String-Generator

von murphy am 10.10.2006 (02 Uhr)
a = 'AAAA'
rand(26**a.size).times { a.succ! }
puts a
 
Kommentare (3)

^^ rejected

von bovi am 11.09.2006 (22 Uhr)

Gerade im ICQ bez. des vorherigen Artikels:


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

Counter ohne Ruby mit Ruby

von murphy am 15.08.2006 (03 Uhr)

Licenser (aka Heinz N. Gies, ein alter Schulfreund von mir) hat endlich ein Blog! Dort beschreibt er einen originellen One-Liner, mit dem man die Rails-Logs zu einer einfach Besucherstatistik auswerten kann:

cat log/production.log | grep "^Processing" | \\
awk '{print $4}' | sort -u | wc | awk '{print $1}'


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

Ruby, die post-moderne Programmiersprache?

von murphy am 11.07.2006 (01 Uhr)

Martin Fowler's Keynote auf der RailsConf dreht sich weniger über Rails (Actually, I haven't used Ruby on Rails.), sondern um Ruby, Programmieren in der Post-Moderne, Agile Softwareentwicklung, XP und all das Meta-Zeug, dass Programmierer zu den Philosophen unserer Zeit werden lässt.

http://rubyurl.com/GKD

Ich finde diesen Vortrag absolut genial. Besonders den Teil über die gemeinsame Philosophie hinter UNIX und Ruby; Fowler sagt unter anderem:

I mean, LISPers ans Smalltalkers look down their nose at how much syntax there is in Ruby. And yet, it kind of works. It gets out of the way, allows you to do nice things, and it allows you to deal with the complexities.

Fowler findet faszinierende Bilder, um den Vorteil dieser Schwäche zu verdeutlichen.

Jeder Ruby-Interessierte sollte sich den Vortrag in Ruhe anhören!

 
Kommentare (2)

dont do ... end

von murphy am 09.07.2006 (19 Uhr)

Syntax-Sonntag! Heute:

Blöcke Auskommentieren mit Ruby

Der einfache Kommentar in Ruby ist bekannt:

# Ich gehe bis zum Zeilenende.

Eigentor.create :author => 'Petit'  # ^_^

# Gibt eine zufällige natürliche Zahl zurück.
def random_number
  23
end
Ruby hat eine zweite, weniger bekannte Kommentar-Variante:

=begin
= Mehrzeilige Kommentare
* waren wohl ursprünglich für die Dokumentation vorgesehen
* haben sich aber nicht durchgesetzt
* man benutzt stattdessen RDoc-Kommentarblöcke mit vielen #.
=end

Ziemlich unhandlich, wenn man einfach etwas auskommentieren möchte. Zudem kann man diese mehrzeiligen Kommentare nicht schachteln.

Häufig möchte man einen Ruby-Block ausklammern – ein if, ein def, eine Klasse. Wie macht man das am einfachsten?


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

RUGB0607

von murphy am 08.07.2006 (22 Uhr)

Am letzten Donnerstag traf sich die Ruby-User-Group Berlin zum dritten Mal, wieder im newthinking store.

Leider waren wir diesmal nur zu fünft. Dafür gab es allerdings gleich zwei Vorträge:


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

TryCodeRay!

von murphy am 27.06.2006 (08 Uhr)

Ab heute kann man CodeRay wieder testen:

coderay.rubychan.de/rays

Ihr könnt ein Stück Code eurer Wahl hineinkopieren (bis 20 KB), Titel und Autor angeben und die Sprache wählen (Ruby, C, HTML, RHTML, Nitro-XHTML, Delphi und Plaintext sind zur Zeit verfügbar.) Der Code wird dann als Ray gespeichert, bunt gefärbt und ist für alle sichtbar.

"Rays" ist also eine Art No-Paste-Wiki. Nichts neues - bis darauf, dass jeder die vorhandenen Posts editieren kann.

Für das Highlighting sorgt CodeRay 0.7.1. Es wird nichts gecacht!

Achso: Das Update ist ein Schritt auf dem Weg zu CodeRay 0.8! :)<7p>

Achso 2: Fehler, die die Website betreffen, bitte melden! (murphy rubychan de) Gerade Sicherheitslücken (XSS etc.) befürchte ich noch. Ich habe mir zwar Mühe gegeben, habe aber noch nicht allzuviel Erfahrung mit offenen interaktiven Websites.<7p>

Fehler bezüglich CodeRay könnt ihr natürlich auch melden, aber vielleicht wartet ihr lieber, bis mein Trac fertig ist. ;)

Es gibt auch einen offiziellen CodeRay-Banner, falls ihr CodeRay bereits einsetzt und Werbung machen wollt. Am besten verlinkt ihr den direkt mit coderay.rubychan.de, der neuen offiziellen Website.

 
Kommentare (10)

RailsDay2006 - 24 Stunden später...

von bovi am 18.06.2006 (07 Uhr)

F:\rails\onedaybb>rake stats
(in F:/rails/onedaybb)
+----------------------+-------+-------+---------+---------+-----+-------+
| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Helpers              |   117 |    86 |       1 |       7 |   7 |    10 |
| Controllers          |   960 |   748 |       7 |      19 |   2 |    37 |
| Components           |     0 |     0 |       0 |       0 |   0 |     0 |
|   Functional tests   |   109 |    79 |      12 |      18 |   1 |     2 |
| Models               |   539 |   454 |      34 |      28 |   0 |    14 |
|   Unit tests         |   301 |   211 |      30 |      30 |   1 |     5 |
| Libraries            |     0 |     0 |       0 |       0 |   0 |     0 |
|   Integration tests  |     0 |     0 |       0 |       0 |   0 |     0 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total                |  2026 |  1578 |      84 |     102 |   1 |    13 |
+----------------------+-------+-------+---------+---------+-----+-------+
  Code LOC: 1288     Test LOC: 290     Code to Test Ratio: 1:0.2

F:\rails\onedaybb>time
Aktuelle Zeit:  5:56:20,53

OneDayBB 1d


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