[#390749] Why are there so many similar/identical methods in core classes — Kassym Dorsel <k.dorsel@...>

Let's look at the Array class and start with method aliases.

14 messages 2011/12/02

[#390755] Inverse Operation of Module#include — Su Zhang <su.comp.lang.ruby@...>

Hi list,

21 messages 2011/12/02
[#390759] Re: Inverse Operation of Module#include — Ryan Davis <ryand-ruby@...> 2011/12/02

[#390764] Re: Inverse Operation of Module#include — Isaac Sanders <isaacbfsanders@...> 2011/12/02

I would suggest an Adapter pattern use here. IF there is something that has

[#390876] black magical hash element vivification — Chad Perrin <code@...>

Ruby (1.9.3p0 to be precise, installed with RVM) is not behaving as I

12 messages 2011/12/05

[#390918] WEB SURVEY about Ruby Community — Intransition <transfire@...>

Did any one else get this survey request?

14 messages 2011/12/07

[#390976] Confusing results from string multiplication — Rob Marshall <robmarshall@...>

Hi,

19 messages 2011/12/08

[#391019] How can I do h["foo"] += "bar" if h["foo"] does not exist? — "Andrew S." <andrewinfosec@...>

Hi there,

13 messages 2011/12/09

[#391027] reading from file without end-of-lines — Janko Muzykant <umrzykus@...>

hi,

20 messages 2011/12/09
[#391028] Re: reading from file without end-of-lines — Gavin Sinclair <gsinclair@...> 2011/12/09

> i'm trying to read a few text values from single file:

[#391031] Re: reading from file without end-of-lines — Robert Klemme <shortcutter@...> 2011/12/09

On Fri, Dec 9, 2011 at 9:58 AM, Gavin Sinclair <gsinclair@gmail.com> wrote:

[#391042] Re: reading from file without end-of-lines — Gavin Sinclair <gsinclair@...> 2011/12/09

On Fri, Dec 9, 2011 at 8:18 PM, Robert Klemme

[#391135] I need advice on what to do next. — Nathan Kossaeth <system_freak_2004@...>

I am new to programming. I read the ebook "Learn to Program" by Chris

23 messages 2011/12/12

[#391216] perf optimization using profile results — Chuck Remes <cremes.devlist@...>

I need some help with optimizing a set of libraries that I use. They are ffi-rzmq, zmqmachine and rzmq_brokers (all up on github).

13 messages 2011/12/13
[#391218] Re: perf optimization using profile results — Chuck Remes <cremes.devlist@...> 2011/12/13

On Dec 13, 2011, at 9:57 AM, Chuck Remes wrote:

[#391234] Re: perf optimization using profile results — Charles Oliver Nutter <headius@...> 2011/12/14

A couple quick observations.

[#391238] Re: perf optimization using profile results — Chuck Remes <cremes.devlist@...> 2011/12/14

On Dec 13, 2011, at 7:03 PM, Charles Oliver Nutter wrote:

[#391324] ruby 1.9 threading performance goes non-linear — Joel VanderWerf <joelvanderwerf@...>

12 messages 2011/12/16
[#391325] Re: ruby 1.9 threading performance goes non-linear — Eric Wong <normalperson@...> 2011/12/16

Joel VanderWerf <joelvanderwerf@gmail.com> wrote:

[#391420] Accessing class instance variables from an instance? — "Shareef J." <shareef@...>

Hi there,

26 messages 2011/12/20
[#391454] Re: Accessing class instance variables from an instance? — Khat Harr <myphatproxy@...> 2011/12/21

Actually, now that I'm thinking about it the existing behavior sort of

[#391456] Re: Accessing class instance variables from an instance? — Josh Cheek <josh.cheek@...> 2011/12/21

On Tue, Dec 20, 2011 at 9:42 PM, Khat Harr <myphatproxy@hotmail.com> wrote:

[#391545] Kernel#exit raises an exception? — Khat Harr <myphatproxy@...>

While I was working on embedding an interpreter I wrote a function to

13 messages 2011/12/24

[#391618] rvmsh: An easy installer for RVM — Bryan Dunsmore <dunsmoreb@...>

I have recently begun work on a project called [rvmsh]

12 messages 2011/12/29

[#391783] Mailspam — Gunther Diemant <g.diemant@...>

Is there a way to stop this mailspam of Luca (Mail)?

12 messages 2011/12/29

[#391790] What’s the standard way of implementing #hash for value objects in Ruby? — Nikolai Weibull <now@...>

Hi!

23 messages 2011/12/29
[#391792] Re: What’s the standard way of implementing #hash for value objects in Ruby? — Gunther Diemant <g.diemant@...> 2011/12/29

I think you can't access instance variables from a class method, so

[#391793] Re: What’s the standard way of implementing #hash for value objects in Ruby? — Nikolai Weibull <now@...> 2011/12/29

On Thu, Dec 29, 2011 at 15:52, Gunther Diemant <g.diemant@gmx.net> wrote:

[#391811] Re: What’s the standard way of implementing #hash for value objects in Ruby? — Robert Klemme <shortcutter@...> 2011/12/29

On Thu, Dec 29, 2011 at 4:06 PM, Nikolai Weibull <now@bitwi.se> wrote:

[#391812] Re: What’s the standard way of implementing #hash for value objects in Ruby? — Nikolai Weibull <now@...> 2011/12/29

On Fri, Dec 30, 2011 at 00:26, Robert Klemme <shortcutter@googlemail.com> w=

[#391816] Re: What’s the standard way of implementing #hash for value objects in Ruby? — Josh Cheek <josh.cheek@...> 2011/12/30

On Thu, Dec 29, 2011 at 5:47 PM, Nikolai Weibull <now@bitwi.se> wrote:

[#391833] Re: What’s the standard way of implementing #hash for value objects in Ruby? — Robert Klemme <shortcutter@...> 2011/12/30

On Fri, Dec 30, 2011 at 12:47 AM, Nikolai Weibull <now@bitwi.se> wrote:

Re: Searching an array for a pattern derived from another array

From: Chaim Keren-Tzion <chaim@...>
Date: 2011-12-13 20:32:21 UTC
List: ruby-talk #391225
I must say that Ruby is very elegant! I've been scripting in bash for years
but haven't used oop languages nearly as much and this is beyond!

The code was needed for a chef cookbook that will set the servers in our
network to use the preferred connection to our syslog server. (Can't
utilize DNS for this)
The three lines below will do all the decision making.

  servers = node[:syslogserver][:ip].map {|ip| IPAddr.new(ip)}
  nics = node.network.interfaces.map { |p, f| f[:addresses].keys
}.flatten.delete_if{|x| x =~ /(.*):(.*)/ }.map {|ip| IPAddr.new("#{ip}/16")}
  rsyslog_server = servers.detect {|ip| nics.any? {|nic| nic.include? ip }
}.to_s

Note: "node[:syslogserver][:ip]" are attributes that I define in a "role"
"node.network.interfaces.map { |p, f| f[:addresses].keys }.flatten" will
get me the mac addresses and ips on the client that chef is running on
then I clean it up by removing the mac addresses (and perhaps the IPV6
addresses that will show up one day?) with "delete_if{|x| x =~ /(.*):(.*)/
}"

Thanks guys!!

Chaim

On Tue, Dec 13, 2011 at 3:13 PM, Rob Biedenharn
<rob@agileconsultingllc.com>wrote:

>
> On Dec 13, 2011, at 5:12 AM, Robert Klemme wrote:
>
> > On Tue, Dec 13, 2011 at 12:41 AM, Chaim Keren-Tzion
> > <chaim@intercomp.co.il> wrote:
> >> Hi,
> >> I've just started using Ruby last week and have a somewhat complex task
> to
> >> complete in a short amount of time and nobody local to ask.
> >>
> >> Here is what I'm trying to find:
> >> Given two arrays containing IP addresses like the ones below, how would
> I
> >> search for the first element in 'servers' that pattern matches and
> element
> >> in 'nics' where only the first 2 parts of the IP addresses need to
> match,
> >> like 192.168.*.* or 10.14.*.* or 98.139.*.*
> >>
> >> servers = Array["192.168.0.251","10.14.0.142","98.139.180.149"]
> >> nics = Array["10.10.0.255","173.194.37.16","10.14.0.170"]
> >>
> >> I've got some kind of beginning with the code below but I'm stuck. Any
> >> hints?
> >>
> >> ----------------
> >> log_server = "nothing"
> >>
> >> until log_server != "nothing" servers.each |thisip| do
> >>
> >> # Consider only the first two parts of the 'thisip' IP address
> (192.168.*.*
> >> or 10.14.*.* or 98.139.*.*)
> >> # Compare it with each element in 'nics'
> >> # Set 'log_server' equal to the first value of 'thisip' that pattern
> >> matches an element in 'nics'
> >> log_server = thisip
> >>
> >> end
> >> ----------------
> >
> > I would approach this like this:
> >
> > 1. Write a method which receives two arguments (servers and nics of
> course).
> > 2. Let the method start by preparing the data, i.e. #map both arrays
> > into something which is quicker to match.
> > 3. iterate by doing servers_converted.each or maybe
> > servers_converted.each_with_index and returning from the method on
> > first match.
> > 4. return nil at the end of the method (nothing found) or raise an
> > exception depending on the wanted semantics
> >
> > Now, how to do the matching?  I would not use regular expressions for
> > the matching as you really want to match numeric values.  Conversion
> > could use ip.scan(/\d+/).map(&:to_i).  You could use Array#[] to
> > obtain a two element Array from a four element Array.
> >
> > You could as well search for a gem which deals with IP addresses.
> > Since the problem is so common chances are that such a beast exists.
> >
> > Kind regards
> >
> > robert
> >
> > --
> > remember.guy do |as, often| as.you_can - without end
> > http://blog.rubybestpractices.com/
> >
>
> Rather than search for a gem, look no further than the standard library
> and you'll come across the IPAddr library. (It's been in there long before
> 1.9.3 so you're almost certain to have it.)
>
> $ irb
> irb(main):001:0> RUBY_VERSION
> => "1.9.3"
> irb(main):002:0> require 'ipaddr'
> irb(main):003:0> servers = ["192.168.0.251", "10.14.0.142",
>  "98.139.180.149"].map {|ip| IPAddr.new(ip)}
> irb(main):004:0> nics    = [ "10.10.0.255", "173.194.37.16", "10.14.0.170"
>   ].map {|ip| IPAddr.new("#{ip}/16")}
> irb(main):005:0> log_server = servers.detect {|ip| nics.any? {|nic|
> nic.include? ip } }
> => #<IPAddr: IPv4:10.14.0.142/255.255.255.255>
> irb(main):006:0> log_server.to_s
> => "10.14.0.142"
>
> The /16 added to the mapping of nics is the number of bits in the network
> mask.
>
> So translating Robert's approach:
>
> 1. Write a methods that receives two arguments, servers and nics (as
> arrays of IP strings). (Optionally, a third argument that gives the bits in
> the netmask, perhaps defaulting to 16.)
> 2. map the Strings to IPAddrs
> 3. detect (find) the first server having an IPAddr that is included in the
> nic's network.
> 4. (there is no step 4 ;-)
>
> -Rob
>
>
>

In This Thread

Prev Next