Ruby Weekly News 27th June - 10th July 2005

Discussion in 'Ruby' started by Tim Sutherland, Jul 12, 2005.

  1. http://www.rubyweeklynews.org/20050710.html

    Ruby Weekly News 27th June - 10th July 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
    --------------------------

    * Rails day results are in
    --------------------------

    Carl Woodward noted that the `Rails Day' official results are in.
    This was a contest to write the best web application you could in
    Rails - in 24 hours.

    1st: `Sheets', by Cyrus Farajpour and Robert Bousquet.

    2nd: `YubNub', by Jonathan Aquino.

    3rd: `Fichebowl', by Brandt Kurowski, Ben Tucker, and Aaron Michal.

    From the site, "Congratulations to all of the winners and the runners
    up! We'd like to give a special thanks to the sponsors, supporters,
    and participants for making the first Rails Day a great success. - The
    Rails Day Team".

    Ruby User Groups
    ----------------

    * PDX.rb July meeting
    ---------------------

    Phil Tomson announced that PDX.rb, the Portland Ruby Brigade, were
    having their July 2005 meeting on the 11th.

    * Hamburg.rb - 2005-07-06 / 18:00
    ---------------------------------

    Stephan Kämper reminded the group that Hamburg.rb were meeting on the
    6th of July in Stresemannstraße 144, Hamburg, Germany.

    Jonas Hartmann: "Anyone up for some Frankfurt.rb meetings btw?"

    Link of the Week
    ----------------

    http://lesscode.org/

    "lesscode.org is a place to advocate, discuss, and practice the art of
    using less code to get more done. We shun complexity and challenge the
    status-quo when it impedes our ability to simplify our development tools
    and processes. We appreciate Python, Ruby, LAMP, REST, KISS, worse is
    better, and talk like a pirate day."

    Arrrrrr!

    Threads
    -------

    Interesting threads included:

    accessing index inside map
    --------------------------

    Botp Peña asked how to do a map, but using an index inside the block. He
    wanted to be able to take the array [1, 2, 3, 4, 5, 6] and double each
    element, apart from those at the second and fifth positions.

    (This writeup instead uses an example involving an array of letters -
    a [misguided?] attempt to make the solutions given slightly easier to
    understand.)

    daz said that David A. Black "was once President of Citizens for MWI,
    Inc." - he advocated adding a map_with_index method to the standard
    library.

    David disputed this characterisation: there's no "was once" about
    it, he still thinks it's a good idea.

    map_with_index can be implemented in the following way:

    ----
    class Enumerable
    def map_with_index
    a = []
    each_with_index { |x, i|
    a << yield x, i
    }
    a
    end
    end
    ----

    It can then be used as below:

    ----
    letters = ['a', 'b', 'c']
    ary = letters.map_with_index { |x, i| x + i.to_s }
    p(ary) # -> ["a0", "b1", "c2"]
    ----

    Nobu gave an alternative suggestion: use the enumerator library. An
    example:

    ----
    require 'enumerator'
    letters = ['a', 'b', 'c']
    ary = letters.enum_for:)each_with_index).map { |x, i| x + i.to_s }
    p(ary) # -> ["a0", "b1", "c2"]
    ----

    The enum_for method returns a new Enumerator object, which wraps the
    original but with a different each method. (In this case,
    letters.each_with_index.)

    Because methods in Enumerable such as map are implemented in terms of
    each, they pick up the new behaviour.

    Botp Peña found enum_for a little confusing, and Matz poked in with an
    interesting idea.

    "We have vague plan to make enumerating method to return Enumerator when
    no block is given in the future". This would enable the above example to
    be rewritten as:

    ----
    require 'enumerator'
    letters = ['a', 'b', 'c']
    ary = letters.each_with_index.map { |x, i| x + i.to_s }
    p(ary) # -> ["a0", "b1", "c2"]
    ----

    Botp Peña agreed that this was indeed clearer than enum_for, but felt that
    map_with_index was even clearer.

    Matz responded, "Yes. But when we add map_with_index, we might be asked to
    add collect_with_index, detect_with_index, inject_with_index, and all
    other enumerable methods _with_index as well."

    Nobu thought of adding Enumerator#with_index, and provided a patch to
    implement it. Usage:

    ----
    require 'enumerator'
    letters = ['a', 'b', 'c']
    ary = letters.map.with_index { |x, i| x + i.to_s }
    p(ary) # -> ["a0", "b1", "c2"]
    ----

    Matz asked him to commit this patch.

    Programming the Lego robots using Ruby technology
    -------------------------------------------------

    Victor Reyes asked if he could program Lego Mindstorm robots using Ruby.

    daz referred him to the lego-mindstorms package on RubyForge, however
    Shashank Date pointed out that this was an API for controlling the robots,
    not programming them.

    HTTP.get problem
    ----------------

    Ken Kaplan was having trouble getting a simple program from Programming
    Ruby to work. It used Net::HTTP to retrieve a webpage, however it would
    hang calling HTTP#get.

    He had tried turning off ZoneAlarm (personal firewall software), but there
    was no difference.

    Ezra Zygmuntowicz said that this was an issue with ZoneAlarm. Uninstalling
    ZoneAlarm would solve the problem - closing it is not sufficient.

    Ezra also pointed to a blog post by Jeff Nadeau, `ZoneAlarm Woes', which
    describes the problem.

    (Windows provides a mechanism for converting a socket into a handle that
    can be used with functions like WriteFile. Ruby uses this so that sockets
    in Windows and unix systems work in a similar way. Unfortunately,
    ZoneAlarm breaks this method.)

    Inference Engine (#37)
    ----------------------

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

    "There was an interesting thread on Ruby Talk recently about Truth
    Maintenance Systems (TMS). One reason to use a TMS is to validate
    inferences, given certain truths. We'll focus on that application here.

    This week's Ruby Quiz is to build an inference engine that is capable of
    answering questions based on the provided truths."

    SerializableProc (#38)
    ----------------------

    James Edward Gray II also posted the next quiz.

    "I'm a Proc addict. I use them all over the place in my code. Because of
    that, whenever I end up needing persistence and I call Marshal.dump() or
    YAML.dump() on some object hierarchy, I get to watch everything explode
    (since Procs cannot be serialized)."

    "This week's Ruby Quiz is to build a Proc that can be serialized."

    "It should support being serialized by Marshal, PStore, and YAML and
    otherwise behave as close to a Proc as possible."

    Win32OLE and remote servers?
    ----------------------------

    Hal asked whether Win32OLE could be used to talk to a COM object on a
    remote machine. (DCOM.)

    daz gave a link to a post from 2002 that shows how to do this: pass a
    machine name as the second parameter to Win32OLE.new.

    Ruby as mathematical language
    -----------------------------

    `none' attached some correspondence he had with Yoshiki Tsunesada to do
    with the latter's rb-gsl library. (An interface to the GNU Scientific
    Library.)

    none aimed to start a conversation about what libraries Ruby needs to be
    an "intuitive and powerful math language".

    Phil Tomson and Ara.T.Howard suggested looking at narray - a library
    providing efficient N-dimensional arrays with numerical methods for tasks
    like solving linear equations.

    Ara also gave a tantalising link to a wiki page entitled
    `TheScientificRubyProgrammingBook', which claims to be
    "Coming Soon To a Pragmatic Bookseller Near You!", authored by Ara and
    Justin Crawford, and edited by Dave Thomas.

    The wiki page was part of the SciRuby site, "a portal for all things
    scientific and ruby."

    HOWTO: gem install sqlite3
    --------------------------

    basi typed "gem install sqlite3", and was prompted to select either
    "<Ruby>" or "<mswin32>".

    Selecting the latter succeeded, but when he went back and chose
    "<mswin32>" there was a message "ERROR: Failed to build gem native
    extension".

    "Do I need to install both options?"

    Alex Fenton said that you only need to install one of the options. The
    "<mswin32>" option is provided for Windows systems. These typically lack a
    C compiler, so are not able to use the generic "<Ruby>" version that will
    attempt to compile a Ruby extension.

    Major web host supports Rails
    -----------------------------

    bertrandmuscle noted that "One of the biggest web hosts on the internet
    (Dreamhost) now supports Rails!"

    Later in the thread, Mathew wrote:
    |
    | I could really use a Java version of Rails; I've been referring to this
    | hypothetical project as "Java on Crutches".
    |

    Sorry Java fans :)

    watir and iframes?
    ------------------

    Armin asked "did anybody use watir on a page with iframes?"
    (Watir is a tool for testing web pages. It allows you to write Ruby code
    to script the IE browser.)

    James Britt pointed to the relevant section of the Watir user guide: it is
    as simple as using e.g. ie.frame("menu").

    modifying pickaxe 2 pdf
    -----------------------

    Botp Peña asked if it would be possible for him to modify the PickAxe 2
    PDF. (The second edition of Programming Ruby.) Also, "is it legal to
    change it?"

    "I want to put notes, extra samples, links, references, etc... and maybe
    include interactive forms".

    Sascha Ebach did an experiment, and found that it did work.

    Dave Thomas responded,
    |
    | Feel free to annotate to your heart's content. If you had a paper book,
    | we wouldn't stop you writing in the margins. Why would we stop you with
    | a PDF?
    |
    | As you say, it would be wrong to distribute your PDF (annotated or not),
    | but what you do with it in the privacy of your own home is your business
    | :)

    RubyConf 2005 Registration now open
    -----------------------------------

    Chad Fowler announced that registrations for the Fifth International Ruby
    Conference - RubyConf 2005 - were now open.

    "Pre-registration numbers are amazingly high in contrast to years past.
    All signs point to this year's conference standing out as a turning
    point."

    The conference this year is in San Diego, California, and is held October
    14-16.

    yield does not take a block
    ---------------------------

    Daniel Brockman noted that under Ruby 1.9.0, the following are not
    allowed:

    ----
    yield { .. }
    yield &..
    ----

    However, these are:

    ----
    Proc.new.call { .. }
    Proc.new.call &..
    ----

    "This is an oversight, right?"

    Nobu thought that it was, and posted a patch to enable the first two
    forms.

    Matz wasn't so sure: "yield is a keyword to pass a value (and control) to
    the block attached to the method. I feel strange when I see yield passes a
    block to an outer block."

    James Britt asked "Is that good strange or bad strange?"

    Matz: "I feel bad strange. Do you?"

    James Britt: "No. Good strange."

    Daniel Brockman: "I feel strange when I see these are not equivalent".

    Remember, "your least strangeness is NOT Matz' least strangeness!"
    (the cult of _why).

    ruby-dev summary 26325-26385
    ----------------------------

    Masayoshi TAKAHASHI posted the latest summary of the Japanese list
    ruby-dev.

    XMLRPC and shebang lines were discussed.

    Dynamic languages and the CLR
    -----------------------------

    Michael Campbell posted a link to an article by Joel Pobar discussing
    techniques for implementing dynamic languages on the .NET CLR.

    Fault Tolerant DRb?
    -------------------

    Kirk Haines began "Assume you are using a DRb service for....something. It
    doesn't matter what." How could you make the service work in a fault
    tolerant way?

    Ara.T.Howard replied "i've done tons of ha (high availability) setups
    before for stateful and stateless machines. suffice it to say it is almost
    un-imaginably complex."

    He pointed out a couple of things which must be considered, and said
    "these problems are solved - but it's still amazingly hard to get right.
    check out the linux-ha project".

    Ara also linked to the rb_spread project, which allows Ruby to participate
    in Spread reliable multicast groups.

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

    An empty section
    Apart from this paragraph
    Sorry about that
    Tim Sutherland, Jul 12, 2005
    #1
    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
    Replies:
    0
    Views:
    122
    Tim Sutherland
    Jan 5, 2005
  2. Tim Sutherland
    Replies:
    0
    Views:
    130
    Tim Sutherland
    Feb 27, 2005
  3. Tim Sutherland

    Ruby Weekly News 21st - 27th March 2005

    Tim Sutherland, Mar 28, 2005, in forum: Ruby
    Replies:
    16
    Views:
    234
    Saynatkari
    Apr 3, 2005
  4. Tim Sutherland
    Replies:
    0
    Views:
    104
    Tim Sutherland
    Nov 30, 2005
  5. Tim Sutherland
    Replies:
    2
    Views:
    146
    Tim Sutherland
    Jul 12, 2006
Loading...

Share This Page