Ruby Weekly News 28th March - 3rd April 2005

Discussion in 'Ruby' started by Tim Sutherland, Apr 4, 2005.

  1. Ruby Weekly News 28th March - 3rd April 2005
    --------------------------------------------

    Ruby Weekly News is a summary of the week's activity on the ruby-talk
    mailing list / the comp.lang.ruby newsgroup, brought to you by
    Tim Sutherland.

    Articles and Announcements
    --------------------------

    * TRUG 3 April 2005 Meeting

    Mike Stok announced that the Toronto Ruby User Group was having a
    meeting on April 3, 2005. If this is the first you've heard of it,
    sorry but you missed the meeting!

    * Ruby Internship Request

    Shalev NessAiver is looking for an internship over the summer,
    preferably doing Ruby web programming. "My primary goal in seeking
    this internship is to gain more experience. Specifically, I would like
    to gain more experience in the area of web/interface design."

    * Ruby RDF-Redland

    Dominic Sisneros hasn't had much time lately to work on RDF-Redland (a
    Ruby binding for the Redland Application Framework - related to the
    "semantic web" idea). His job has meant he's travelling around, with a
    Windows laptop, but he hasn't been able to build RDF-Redland on a
    Windows system.

    He plans to do more work on it, as soon as he can get it to compile.
    Help wanted!

    * IORCC 2005 entries

    Vincent Foley noted that the IORCC 2005 entries have been put online.
    IORCC is the International Obfuscated Ruby Coding Contest. Check out
    the madness.

    * 2005 IORCC PC Voting is now OPEN!

    Todd Nathan announced that the People's Choice voting for the IORCC
    was open. Anyone may vote on the entries they think are best
    (according to the guidelines).

    * Translation into spanish of Ruby Quiz

    James Edward Gray II shared the news that Imobach González Sosa will
    be translating each week's Ruby Quiz into Spanish.

    * libxml and libxslt CVS

    Trans adopted the libxml2 and libxslt libraries, which appeared to be
    abandoned by the previous maintainer. They're now part of the
    XML:Tools project.

    * Hamburg.rb meeting...

    Stephan Kämper announced that Hamburg (in Germany) now has a Ruby User
    Group. The first meeting is on April 6, 2005.

    Quote of the Week
    -----------------

    I'm going to be lazy and give it to the entire "emerald 0.1" thread.

    Threads
    -------

    Interesting threads this week included...

    Ruby performance question
    -------------------------

    Jaypee benchmarked the following code on a 1GHz G4 and on dual 2GHz G5s,
    both with the same version of Ruby and 1GB RAM.

    class Integer
    def factorial
    (1..self).inject(1) { |f, n| f * n }
    end
    end

    puts 100000.factorial

    It was only 33% faster in the dual G5 system.

    James Edward Gray II pointed out that Ruby was only using one CPU in the
    dual system. Even if the code was changed to use Threads, Ruby would still
    only use one CPU because Ruby uses its own user-land thread system.

    Even so, with one 2GHz G5, the second system should be over twice as fast
    as the first. (Shalev NessAiver reported that the G5 has a much faster bus
    and memory speed than the G4.)

    No further explanation was forthcoming.

    SOAP Server WSDL generation
    ---------------------------

    Patrick Hurley had successfully set up a Ruby client and server for SOAP.
    (A protocol for remote procedure calls - web services.)

    In both cases he had to tell the SOAP library which methods the interface
    should provide. "Using ruby soap, can the server "auto discover" the
    methods in a particular class and expose them?"

    A second question was as to whether a Ruby SOAP server could generate a
    WSDL file.

    There was no response to the first question. For the second, Leon Breedt
    brought up Rail's ActionWebService. It does WSDL generation but does need
    annotations to declare the types of method parameters and return values.

    Modifying boolean values
    ------------------------

    Farrel Lifson wondered whether it was possible to make an object behave
    like true or false. (With the aim to create a different type of boolean
    whose #to_s method returns "0" or "1".)

    Florian Gross explained that in Ruby, nil and false are "false", and every
    other object is "true".

    So it's easy to make an object behave like true (you don't need to do
    anything), however it is not possible to have one which behaves like
    false. Understanding why requires some knowledge of how the Ruby
    interpreter works.

    Every Ruby object is represented by a VALUE, which is an unsigned long.
    Some VALUEs correspond to addresses, while others (like nil and false) are
    "immediate" objects.

    Boolean truth is evaluated in the interpreter via the RTEST macro, which
    simply checks if the VALUE is either the nil or false special constant.

    Christoph referred to a patch he wrote three years ago which added a
    "false flag" to objects, allowing users to define their own boolean values
    without sacrificing performance.

    attr :<symbol>?
    ---------------

    Luke Renn had seen code like "attr :foo" when using ActiveRecord. He wanted
    to know what the name for them was, and how he could write his own things
    like attr. Were they just class methods?

    John Wilger confirmed that attr is indeed simply a class method. "In Ruby
    (unlike many other languages) the code that defines a class is much more
    than just a "definition". The code between "class Foo ... end" is executed
    just like any other part of your program."

    James Britt and Florian Gross posted bits of code that define new methods
    like attr, and there was some discussion of the differences between their
    implementations. (eval vs define_method.)

    Please tell me what this means? self.<method> in a class
    --------------------------------------------------------

    Glenn Smith asked what def self.foo meant in the following code:

    class Test
    def foo
    end

    def Test.foo
    end

    def self.foo
    end
    end

    David Corbin explained that it was redefining Test.foo.

    David A. Black added that in general, anytime you write "def obj.method"
    you are adding a singleton method to obj. In the above example, self in the
    class definition corresponds to the class, i.e. Test. So "def self.foo"
    was defining a singleton method of Test. Brian Candler pointed to a
    tutorial on singleton methods.

    Robert Klemme noted that the reason why it's better to write self.foo
    instead of Test.foo is that it allows you to change the name of the class
    in the future without having to modify the method declarations.

    zip a directory, unzip a zip file
    ---------------------------------

    itsme213 wanted to write Ruby code that zips up a directory, and can then
    unzip it.

    Stefan Lang suggested the archive-tar-minitar library, and Thomas
    Sondergaard mentioned his own library, rubyzip.

    An example of zipping up some directories using rubyzip:

    Zip::ZipFile::eek:pen("all.zip", true) { |zf|
    Dir['{test,lib}/**/*'].each { |f| zf.add(f, f) }
    }

    Getting process status
    ----------------------

    Joe Van Dyk had a process id, and wanted to get a Process::Status object
    for it. The goal was to be able to check whether the process was still
    running.

    Leon Breedt said that you can check this via Process#kill(0, pid).

    SNIPPET: YamlToHtml.rb
    ----------------------

    Phlip wrote some code to convert YAML lists into HTML tables.

    "The goal of the goals is to allow a Wiki-style web site convert YAML into
    simple tables, essentially the way some Wikis convert
    |nebulous|specifications| into tables."

    "But is the world ready for "YASTL Ain't a Structured Transformation
    Language" yet?"

    Last Chance 2005 IORCC Entries
    ------------------------------

    Todd Nathan warned that your last chance for entering the 2005
    International Obfuscated Ruby Coding Contest (IORCC) was nearing. (You
    missed it!)

    Phil Tomson remarked on the number of sponsors and prizes the IORCC had
    managed to get, and wondered whether we could run a IERCC ("International
    Elegant Ruby Code contest") or BRICC ("Beautiful Ruby International Code
    Contest").

    Todd said that this is already being worked on.

    PDF Writer UTF-8 Support
    ------------------------

    Brian Schröder was having difficulting getting PDF::Writer to work with
    his UTF-8 text.

    The library's author, Austin Ziegler, explained that this wasn't an area
    PDF::Writer had addressed yet, but there is a workaround that involves
    some effort.

    Poor efficency of Ruby...
    --------------------------

    JZ ran a Rails application as a CGI and found performance was poor. David
    Heinemeier Hansson explained that he should use FastCGI instead.

    The reason why PHP performs reasonably under CGI and Rails does not is
    that Rails does quite a bit of initialisation - for example reflecting
    over database tables to set up the ORM (Object-Relational Mapper). If you
    use CGI, Rails has to perform this initialisation for every single
    request.

    With FastCGI, it is done just once.

    ActiveState Ruby 1.8.2
    ----------------------

    Thursday asked if anyone knew whether ActiveState were interested in doing
    work on Ruby. They currently have "distributions" and support for Perl,
    Python and Tcl.

    Pat Eyler spoke to them at OSCON last year. They would like their Komodo
    IDE to support debugging in Ruby, but don't currently have in-house Ruby
    expertise.

    ruby-dev summary 25781-25961
    ----------------------------

    Kazuo Saito posted the summary of the Japanese list ruby-dev.

    It said that Matz brought up the idea for changing the way method search
    occurs. David A. Black clarified the comments with an example:

    class C
    def process
    util # will always call C#util, even if overridden
    self.util # will call subclass's #util, if present
    end

    def util
    end
    end

    Currently, util and self.util both do the same thing - they will call the
    subclass' method if one exists.

    ruby lib that will receive email
    --------------------------------

    Peña, Botp asked whether there were Ruby libraries for receiving email.

    Florian Gross said that Net::pOP and Net::IMAP from Ruby's standard
    library could be used here, and Shalev NessAiver said that ActionMailer
    from Rails was recently extended to deal with retrieving mail.

    Peña clarified that they wanted e.g. an IMAP server written in Ruby, not a
    client. Aredridel had previously thought of using the EXIM mail server
    design in creating a Ruby mail server.

    Glenn Parker nodded, "It sounds like a fun project to me, too. It might
    also be fun to have pure (or mostly pure) Ruby servers for LDAP, DNS, FTP,
    NIS, SSH, telnet, syslog, crontab, NFS..."

    Open letter to anyone developing a Ruby IDE
    -------------------------------------------

    Adelle Hartley had some ideas for adding a heuristic to do "intellisense"
    or "autocomplete" in Ruby IDEs.

    There was discussion around existing solutions used in IDEs. Rob reminded
    the group of a solution he came up with that has been discussed previously
    in Ruby Weekly News. It's still a cool idea, so is worth repeating:

    "For completion I infer the possible classes of a variable, based on what
    methods have already been called on it. Then I provide a popup of the
    combined set of methods available for those classes, i.e. if it quacks
    like a duck, it will probably waddle like one two."

    Another technique is to rely on actually executing code before method
    information is available. One way to achieve this is through running unit
    tests on the code.

    Code Cleaning
    -------------

    James Edward Gray II posted this week's Ruby Quiz.

    I'm always very vocal about how Ruby Quiz isn't interested in golf and
    obfuscation. It's my own private fight for clean code.

    To be fair though, you can really learn a lot from practices like golf
    and obfuscation. It'll teach you a surprising number of details about
    the inner workings of your language of choice. Still principals are
    principals and if I bend, word will quickly get out that I've given up
    the fight. Can't allow that!

    Here's my compromise.

    This week's challenge is to utterly clean some famous examples of
    compressed Ruby code. Refactor the code until it's as readable as
    possible, whatever that means to you.

    MySQL under latest one-click installer
    --------------------------------------

    R. Mark Volkmann was finding it difficult to getting Ruby on Windows to
    work with MySQL. Lothar Scholz suggested he use the pure-Ruby MySQL client
    library, rather than trying to install the one that wraps the C library.

    James Britt posted instructions for how to do this, and the original
    poster managed to get everything working.

    look-behind regexp ?
    --------------------

    Shajith asked if there were plans to support "look-behind" in Ruby's
    regular expression engine.

    Matz said that the engine used in Ruby 1.9 (Oniguruma) already supports
    this.

    There was discussion as to why a new engine was written, rather than using
    e.g. Perl's engine. Matz gave one reason; Perl's only supports UTF-8 while
    Oniguruma works with "UTF-8, UTF-16, ISO-8859-*, EUC-JP, Shift_JIS, and
    lot more".

    Best way to get latest ruby on OS X?
    ------------------------------------

    Dennis Roberts wanted to know the best way of getting the latest stable
    Ruby release on MacOS X. Darwinports seemed to be the answer.

    emerald 0.1
    -----------

    Matz wrote:

    "I'm pleased to announce you the first public release of emerald at

    http://rubyurl.com/b5JtE

    Emerald is an object oriented language with constraints and logic
    features, inspired from prolog, Oz, CSP and Hyper/J.

    I started this as an hack since ruby is becoming less fun. It will not
    be as good as ruby, but please try it out while we wait for Rite."

    Hal Fulton responded, "Very nice... but will it scale?"

    Tom Copeland:

    "With this language, Ruby is fin-ished.
    Now all we can do is flounder about.
    I feel gill-ty for recommending Ruby now.
    Emerald will be fast; if anyone can tuna language, it's Matz."

    The puns just got worse from there ;-)

    PS: Matz posted his message on April 1st.

    Active Record and different field names
    ---------------------------------------

    JZ was using ActiveRecord with Rails, but had tables that didn't use id
    for their primary keys. How do you tell ActiveRecord which field it should
    use?

    David Heinemeier Hansson said that set_primary_key should be used in this
    case.

    Getting Ruby approved
    ---------------------

    Joe Van Dyk was "trying to get Ruby added to one of the "supported" OSS
    tools at Boeing". Jim Freeze posted what he'd learnt from his (successful)
    attempt to introduce Ruby to a company he was working at.

    There were almost 50 articles in the thread, with many people contributing
    their ideas.

    Ruby Weekly News 21st - 27th March 2005
    ---------------------------------------

    Yes, a thread starting with last week's Ruby Weekly News. Be thankful that
    it isn't this week's! (A time machine written in Ruby?)

    Last week's Quote of the Week was Matz announcing that the YARV virtual
    machine would be merged into the main Ruby implementation this year.

    After a few days with no comment, Tim Sutherland tried to stir up a
    reaction with "I'm surprised no-one has commented on this yet... I was
    expecting a chorus of "wow!"s."

    Nikolai Weibull said "wow!", and also questioned how YARV relates to Rite
    and Ruby 1.9. (Rite was intended to be "Ruby done Right", a complete
    rewrite of the Ruby interpreter to get a faster implementation. The
    language would also change with Rite. The language changes are being
    implemented in Ruby 1.9, without the better implementation.)

    Matz explained, "Since YARV engine would achieve what I wanted by complete
    rewrite, I'd call YARV merged 1.9 as Rite."

    There were comments on the possible benefits and disadvantages of merging
    YARV.

    Shiny balls with OpenGL
    -----------------------

    This thread provides some examples of OpenGL graphics implemented in Ruby.

    New Releases
    ------------

    * RubyGems 0.8.10

    Jim Weirich announced a bug-fix release of RubyGems. An issue where it
    could become confused between different versions of the same library
    has been addressed.

    * KirbyBase 2.0

    Jamey Cribbs released a new major version of KirbyBase, a small
    database management system that stores its data in plain-text files.
    The API has been changed to be more "Rubyish". (For example, using
    blocks.) Jamey also thanked Hal Fulton for feedback on the previous
    release.

    * Ruby-GetText-Package-0.8.1

    Masao Mutoh updated the Ruby-GetText library. This provides Native
    Language Support (text in multiple languages etc.) and is based on GNU
    gettext. Bugs have been fixed and a new translation, pt_BR, has been
    added by Joao Pedrosa.

    * FastCST 0.6.5

    Zed A. Shaw added a "whole whack" of features to his FastCST version
    control tool. There is now better safety and security, as well as
    merge features. The repository layout format has been changed, meaning
    that this release cannot be used with repositories created in earlier
    versions. Zed believes this will be the last such change for a while.

    * Production Log Analyzer 1.1.0

    Eric Hodel made the first public release of the Production Log
    Analyzer. It is used to analyse the logs of a web application, to
    determine which pages are taking up a lot of resources.

    * color-tools 1.0.0

    Austin Ziegler was pleased to announce the first release of
    color-tools. It provides support for the RGB and CMYK colour models,
    with "148 named RGB colours that are commonly supported and used in
    HTML, colour manipulation operations, and a monochromatic contrasting
    palette generator."

    It will be used in future PDF::Writer releases.

    * QtRuby 1.0.8/Korundum 3.4.0/KDevelop 3.2.0

    Richard Dale let it be known that there were new QtRuby, Korundum and
    KDevelop releases. The first two are Ruby bindings for the Qt and KDE
    APIs, while the latter is an IDE. Bugs were fixed in the bindings.
    KDevelop includes Ruby support for features like creating GUIs
    graphically, debugging and a class browser.

    * FireRuby 0.2.1

    Peter Wood fixed some bugs in FireRuby, a binding for the FireBird
    RDBMS.

    * Amrita 1.0.2 + XML + amrita_id fix

    Aredridel posted a patch to allow Amrita 1.0.2 to work with REXML.
    (New users should use Amrita2 instead.)

    * RMagick 1.7.4 released

    Timothy Hunter released a new version of RMagick to enable it to work
    with the latest ImageMagick release (6.2.1). "RMagick is an interface
    to the ImageMagick and GraphicsMagick image processing libraries.
    Supports more than 80 image formats, including GIF, JPEG, PNG.
    Includes 2D drawing API."

    * MuraveyWeb 0.2-tons of new stuff

    Dmitry V. Sabanin added many new features to MuraveyWeb, a CMS
    (Content Management System) written with Ruby on Rails. New features
    include document revision management and a staging area for files.

    * MiniRubyWiki 1.0.0

    Phlip announced an important milestone in MiniRubyWiki development:
    version 1.0.0. This is a Wiki implementation with "the most advanced
    emergent features available in wikidom. You can import raw text or
    html into wiki pages, execute commands to populate wiki pages, and you
    ran run, organize, and annotate thousands of pages of test resources."

    * SimpleXML for you

    Aleksi ported the PHP SimpleXML library to Ruby. James Britt suggested
    looking at the XmlSimple library, which is based on Perl's
    XML::Simple.
     
    Tim Sutherland, Apr 4, 2005
    #1
    1. Advertising

  2. Tim Sutherland, Apr 4, 2005
    #2
    1. Advertising

  3. Tim Sutherland wrote:

    > emerald 0.1
    > -----------
    >
    > Matz wrote:
    >
    > "I'm pleased to announce you the first public release of emerald at
    >
    > http://rubyurl.com/b5JtE
    >
    > Emerald is an object oriented language with constraints and logic
    > features, inspired from prolog, Oz, CSP and Hyper/J.
    >
    > I started this as an hack since ruby is becoming less fun. It will not
    > be as good as ruby, but please try it out while we wait for Rite."
    >
    > Hal Fulton responded, "Very nice... but will it scale?"


    It was an Italian matz, though. :)
     
    Florian Groß, Apr 4, 2005
    #3
  4. Updates, corrections...

    In article <>, Tim Sutherland wrote:
    > Ruby Weekly News 28th March - 3rd April 2005
    > --------------------------------------------

    [...]
    > emerald 0.1
    > -----------
    >
    > Matz wrote:
    >
    > "I'm pleased to announce you the first public release of emerald at
    >
    > http://rubyurl.com/b5JtE
    >
    > Emerald is an object oriented language with constraints and logic
    > features, inspired from prolog, Oz, CSP and Hyper/J.


    As Florian pointed out, this should be "Matz" not Matz.

    George Moschovitis also sent me a message noting that I'd missed the
    announcement of Nitro + Og 0.14.0. An important bug to do with inheritance
    was fixed and fine-grained caching was added. There were also API improvements.

    The announcement was on ruby-talk, but didn't make it to comp.lang.ruby.
    Blame the gateway!
     
    Tim Sutherland, Apr 6, 2005
    #4
  5. Tim Sutherland

    Sam Roberts Guest

    Quoting , on Wed, Apr 06, 2005 at 07:39:42PM +0900:
    > Updates, corrections...
    >
    > In article <>, Tim Sutherland wrote:
    > > Ruby Weekly News 28th March - 3rd April 2005
    > > --------------------------------------------

    > [...]
    > > emerald 0.1
    > > -----------
    > >
    > > Matz wrote:
    > >
    > > "I'm pleased to announce you the first public release of emerald at
    > >
    > > http://rubyurl.com/b5JtE
    > >
    > > Emerald is an object oriented language with constraints and logic
    > > features, inspired from prolog, Oz, CSP and Hyper/J.

    >
    > As Florian pointed out, this should be "Matz" not Matz.


    Nicknames aren't usually quoted when used, and Matz is a contraction of
    Matsumoto.

    If your name is Timothy, I wouldn't write:

    "Tim" wrote:

    "I'm please ...

    > The announcement was on ruby-talk, but didn't make it to comp.lang.ruby.
    > Blame the gateway!


    Blame Canada!

    Sam
     
    Sam Roberts, Apr 6, 2005
    #5
  6. Tim Sutherland

    Guest

    Sam Roberts wrote:
    > Quoting , on Wed, Apr 06, 2005 at 07:39:42PM +0900:
    >>> emerald 0.1
    >>> -----------
    >>>
    >>> Matz wrote:

    [...]
    >> As Florian pointed out, this should be "Matz" not Matz.

    >
    >Nicknames aren't usually quoted when used, and Matz is a contraction

    of
    >Matsumoto.

    [...]

    I was trying to subtly say that the person who wrote it wasn't actually
    Matz, but was someone pretending to be him.
     
    , Apr 7, 2005
    #6
  7. Tim Sutherland

    gga Guest

    I missed this, but for whatever it's worth, I think this is a terrible
    idea, as it will break tons of code.
    If a feature such as this is added, it should be done the opposite way.

    class C
    def process
    self.util # calls C's util even if overriden
    util # calls subclass util, if present
    end
    end

    albeit I would strongly advocate for a new keyword instead of using
    "self".

    ----------
    It said that Matz brought up the idea for changing the way method
    search
    occurs. David A. Black clarified the comments with an example:

    class C
    def process
    util # will always call C#util, even if overridden
    self.util # will call subclass's #util, if present
    end

    def util
    end
    end
    -------------
     
    gga, Apr 7, 2005
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Tim Sutherland

    Ruby Weekly News 22nd-28th November 2004

    Tim Sutherland, Nov 30, 2004, in forum: Ruby
    Replies:
    0
    Views:
    124
    Tim Sutherland
    Nov 30, 2004
  2. Tim Sutherland
    Replies:
    1
    Views:
    171
    Trans
    Mar 7, 2005
  3. Tim Sutherland

    Ruby Weekly News 22nd - 28th August 2005

    Tim Sutherland, Aug 31, 2005, in forum: Ruby
    Replies:
    0
    Views:
    177
    Tim Sutherland
    Aug 31, 2005
  4. Tim Sutherland
    Replies:
    1
    Views:
    132
    Tim Sutherland
    Dec 6, 2005
  5. Tim Sutherland
    Replies:
    2
    Views:
    189
    Tim Sutherland
    Apr 4, 2006
Loading...

Share This Page