[#354233] Ruby & IRC — Rajinder Yadav <devguy.ca@...>

Hi I am thinking about playing around with IRC Internert Relay Chat

16 messages 2010/01/01

[#354265] "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...>

Hello,

35 messages 2010/01/02
[#354266] Re: "Dummy" IO object to push and pull data? — Ryan Davis <ryand-ruby@...> 2010/01/02

[#354273] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/02

Ryan Davis wrote:

[#354303] Re: "Dummy" IO object to push and pull data? — Brian Candler <b.candler@...> 2010/01/02

Shay Hawkins wrote:

[#354308] Re: "Dummy" IO object to push and pull data? — Brian Candler <b.candler@...> 2010/01/02

Oh, and there is also IO.pipe, which is unidirectional under most Unix

[#354309] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/02

Brian Candler wrote:

[#354311] Re: "Dummy" IO object to push and pull data? — Caleb Clausen <vikkous@...> 2010/01/03

On 1/2/10, Shay Hawkins <gohegdeh@comcast.net> wrote:

[#354352] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/03

Caleb Clausen wrote:

[#354354] Re: "Dummy" IO object to push and pull data? — Tony Arcieri <tony@...> 2010/01/03

On Sun, Jan 3, 2010 at 3:07 PM, Shay Hawkins <gohegdeh@comcast.net> wrote:

[#354358] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/04

Tony Arcieri wrote:

[#354383] Re: "Dummy" IO object to push and pull data? — Brian Candler <b.candler@...> 2010/01/04

Shay Hawkins wrote:

[#354402] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/04

Brian Candler wrote:

[#354381] Is ruby's regex slower? — Ruby Newbee <rubynewbee@...>

Hi,

33 messages 2010/01/04
[#354384] Re: Is ruby's regex slower? — Josh Cheek <josh.cheek@...> 2010/01/04

On Mon, Jan 4, 2010 at 2:54 AM, Ruby Newbee <rubynewbee@gmail.com> wrote:

[#354387] Re: Is ruby's regex slower? — Wybo Dekker <wybo@...> 2010/01/04

[#354433] Re: Is ruby's regex slower? — Roger Pack <rogerpack2005@...> 2010/01/04

[#354448] Re: Is ruby's regex slower? — Kornelius Kalnbach <murphy@...> 2010/01/05

Roger Pack wrote:

[#354453] Re: Is ruby's regex slower? — Marnen Laibow-Koser <marnen@...> 2010/01/05

Kornelius Kalnbach wrote:

[#354461] Re: Is ruby's regex slower? — Robert Klemme <shortcutter@...> 2010/01/05

On 01/05/2010 12:37 PM, Marnen Laibow-Koser wrote:

[#354519] group in the array — Kolya17 Kolya17 <lastdrv@...>

Hi!

15 messages 2010/01/06

[#354619] Non-blocking communication between Ruby processes — Iñaki Baz Castillo <ibc@...>

Hi, I run Unicorn which is a Rack http server using N forked worker processes.

30 messages 2010/01/07
[#354622] Re: Non-blocking communication between Ruby processes — Robert Klemme <shortcutter@...> 2010/01/07

On 01/07/2010 02:18 PM, Iki Baz Castillo wrote:

[#354625] Re: Non-blocking communication between Ruby processes — Iki Baz Castillo <ibc@...> 2010/01/07

El Jueves, 7 de Enero de 2010, Robert Klemme escribi

[#354640] Re: Non-blocking communication between Ruby processes — Robert Klemme <shortcutter@...> 2010/01/07

On 01/07/2010 03:07 PM, Iki Baz Castillo wrote:

[#354643] Re: Non-blocking communication between Ruby processes — Iki Baz Castillo <ibc@...> 2010/01/07

El Jueves, 7 de Enero de 2010, Robert Klemme escribi鷓

[#354645] Re: Non-blocking communication between Ruby processes — Iki Baz Castillo <ibc@...> 2010/01/07

El Jueves, 7 de Enero de 2010, Iki Baz Castillo escribi

[#354656] Stopping String Escaping. — Phil Cooper-king <phil@...>

Hi,

14 messages 2010/01/07
[#354664] Re: Stopping String Escaping. — Brian Candler <b.candler@...> 2010/01/07

Phil Cooper-king wrote:

[#354746] Ruby editing style rules and recommendation? — Nathan Oyama <nate@...>

I asked a question 'Decimal in for loop?' and two members were kind

12 messages 2010/01/09

[#354781] The Ruby GUI debacle — Ruby Student <ruby.student@...>

Team,

40 messages 2010/01/10
[#354794] Re: The Ruby GUI debacle — James Britt <james.britt@...> 2010/01/10

Ruby Student wrote:

[#354803] Re: The Ruby GUI debacle — Ruby Student <ruby.student@...> 2010/01/11

James, I don't remember if the problems was with Netbeans or something

[#354825] Re: The Ruby GUI debacle — Florian Gilcher <flo@...> 2010/01/11

>

[#354874] bellhop 1.0.0 released — Gregory Brown <gregory.t.brown@...>

Hi folks,

12 messages 2010/01/11

[#354910] Is 'rescue' expensive ? — "R. Kumar" <sentinel.2001@...>

If i use something like:

12 messages 2010/01/12

[#354915] 3D with Ruby (Ogre ?) — Marc-antoine Kruzik <kadelfek@...>

Hello, I'm french, sorry for my mistakes.

24 messages 2010/01/12
[#354920] Re: 3D with Ruby (Ogre ?) — Brian Candler <b.candler@...> 2010/01/12

Marc-antoine Kruzik wrote:

[#354945] NOOB Question on Instance Variable — BlueHandTalking <jet@...>

I have a class photo. It belongs_to a project.

13 messages 2010/01/12

[#354974] WIN32OLE memory leaks — Chuck Remes <cremes.devlist@...>

In my ruby code I am making a call out to a COM object that is

21 messages 2010/01/12
[#354979] Re: WIN32OLE memory leaks — Luis Lavena <luislavena@...> 2010/01/12

On Jan 12, 6:19m, Chuck Remes <cremes.devl...@mac.com> wrote:

[#355014] Re: WIN32OLE memory leaks — Chuck Remes <cremes.devlist@...> 2010/01/13

[#355002] Ruby Regex — Sriram Varahan <sriram.varahan@...>

Hello,

15 messages 2010/01/13

[#355036] Recommended Reading (also: Arrays/Hashes) — Zach Bartels <no@...>

Hi all,

20 messages 2010/01/13

[#355085] How to know the OS architecture (32 or 64 bits)? — Iñaki Baz Castillo <ibc@...>

Hi, is there a reliable way under Ruby to know the OS architecture (32 or 64

27 messages 2010/01/14
[#355136] Re: How to know the OS architecture (32 or 64 bits)? — Walton Hoops <walton@...> 2010/01/15

On 1/14/2010 4:12 PM, I単aki Baz Castillo wrote:

[#355138] Re: How to know the OS architecture (32 or 64 bits)? — Walton Hoops <walton@...> 2010/01/15

On 1/15/2010 9:36 AM, Walton Hoops wrote:

[#355142] Re: How to know the OS architecture (32 or 64 bits)? — Iñaki Baz Castillo <ibc@...> 2010/01/15

El Viernes, 15 de Enero de 2010, Walton Hoops escribi坦:

[#355143] Re: How to know the OS architecture (32 or 64 bits)? — Iñaki Baz Castillo <ibc@...> 2010/01/15

El Viernes, 15 de Enero de 2010, I単aki Baz Castillo escribi坦:

[#355159] Re: How to know the OS architecture (32 or 64 bits)? — Walton Hoops <walton@...> 2010/01/15

On 1/15/2010 9:59 AM, I単aki Baz Castillo wrote:

[#355102] Float Points error — "THAKUR PRASHANT SINGH" <Prashant_Singh.Thakur@...>

Hi,

13 messages 2010/01/15

[#355228] GPGME gem - cannot figure out how to decrypt data — Daniel Frank <ruby-talk-2597@...>

Hello,

11 messages 2010/01/17

[#355266] Can't install gems (Windows) — Sal <salbass575@...>

I am unable to install any gems now on my Windows 7 machine running

25 messages 2010/01/17

[#355281] basic question: passing a modifiable argument to a routine — lalawawa <usenet@...>

Arguments to subroutines seem to be passed by value in ruby

10 messages 2010/01/18

[#355392] Creating GUI applications with Ruby 1.9.1 — Alpha Blue <jdezenzio@...>

I'm wanting to port over a GUI app I created into ruby so that it

24 messages 2010/01/19

[#355461] Looking for object.inherits?(Classname) — Xeno Campanoli <xeno.campanoli@...>

I'm looking for a way to make sure an object being passed is in some class

13 messages 2010/01/20

[#355487] Best practices when writing destructive code — Adam Akhtar <adamtemporary@...>

Im going to be making and removing lots of directories using ruby and Im

10 messages 2010/01/20

[#355530] ruby bounties--list of bounties — Roger Pack <rogerdpack2@...>

Fifth time's a charm (durn spam filters)

34 messages 2010/01/21
[#355574] Re: [ANN] ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/21

On Thu, Jan 21, 2010 at 12:07 AM, Roger Pack <rogerdpack2@gmail.com> wrote:

[#355739] Re: ruby bounties--list of bounties — Roger Pack <rogerpack2005@...> 2010/01/24

[#355742] Re: ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/24

On Sat, Jan 23, 2010 at 11:49 PM, Roger Pack <rogerpack2005@gmail.com> wrote:

[#355766] Re: ruby bounties--list of bounties — Aaron Patterson <aaron@...> 2010/01/25

On Sun, Jan 24, 2010 at 09:15:56PM +0900, Charles Oliver Nutter wrote:

[#355784] Re: ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/25

On Mon, Jan 25, 2010 at 6:29 AM, Aaron Patterson

[#355795] Re: ruby bounties--list of bounties — Mike Dalessio <mike.dalessio@...> 2010/01/25

On Mon, Jan 25, 2010 at 7:37 AM, Charles Oliver Nutter

[#355802] Re: ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/25

On Mon, Jan 25, 2010 at 6:25 PM, Mike Dalessio <mike.dalessio@gmail.com> wrote:

[#355547] Unexpected Hash#first return under Ruby1.9 — Iñaki Baz Castillo <ibc@...>

Hi, Ruby 1.9 implements "first" method for Hash (as Hash are ordered now).

12 messages 2010/01/21

[#355563] Rails ADODB.Connection Error — gregarican <greg.kujawa@...>

I know this isn't exclusively a Rails list, so I apologize in advance.

12 messages 2010/01/21

[#355600] Ruby c extensions on windows — Philliam Auriemma <phil.auriemma@...>

Hey guys,

15 messages 2010/01/22

[#355638] Argh?! :) kEND, $end and kELSE in a simple program — Jet Koten <jetkoten@...>

Hi,

15 messages 2010/01/22

[#355667] How to use WIN32OLE to Save As PDF — Joe Peck <joep@...>

Hi,

12 messages 2010/01/22

[#355797] Nested hash with arrays for default value — Glen Holcomb <damnbigman@...>

I'm trying to find a "nice" way to make a nested hash with an empty array as

12 messages 2010/01/25
[#355803] Re: Nested hash with arrays for default value — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2010/01/25

On Mon, Jan 25, 2010 at 6:48 PM, Glen Holcomb <damnbigman@gmail.com> wrote:

[#355891] Open Source Subversion Hosting — Intransition <transfire@...>

Looking for Rubyist's recommendations for free open-source Subversion

21 messages 2010/01/26
[#355892] Re: Open Source Subversion Hosting — Marnen Laibow-Koser <marnen@...> 2010/01/26

Thomas Sawyer wrote:

[#355939] can't update and install gem — Johny ben <joh13ny@...>

os:win xp

11 messages 2010/01/27

[#355962] Why does `source .bashrc` complain "command not found"? — Adam Akhtar <adamtemporary@...>

Is it just me or is this something that just cant be done?

10 messages 2010/01/27

[#356010] Use Non-Java Version of Gem — Bryan Richardson <btrichardson@...>

Hello all,

12 messages 2010/01/27

[#356042] gsub not working to replace a 'Chinese' Charater. — Ryan Smith <sunraise2005@...>

gsub not works for me when replace 'DBCS'(double byte character set)

12 messages 2010/01/28

[#356076] rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...>

rdoc_osx_dictionary version 1.0.1 has been released!

19 messages 2010/01/28
[#356082] Re: rdoc_osx_dictionary 1.0.1 Released — hi there <johnsonqu@...> 2010/01/29

If installed gems share the same class name, eg. mime-types mimetype-fu

[#356084] Re: rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...> 2010/01/29

[#356120] Re: rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...> 2010/01/29

[#356122] Re: rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...> 2010/01/29

[#356153] "require 'rubygems'" In Your Library/App/Tests Is Wrong? — Joe Wangkauf <tmo1138@...>

16 messages 2010/01/30
[#356154] Re: "require 'rubygems'" In Your Library/App/Tests Is Wrong? — Xavier Noria <fxn@...> 2010/01/30

On Sat, Jan 30, 2010 at 6:05 PM, Joe Wangkauf

[#356158] Re: "require 'rubygems'" In Your Library/App/Tests Is Wrong? — Josh Cheek <josh.cheek@...> 2010/01/30

I wonder how many people _don't_ use rubygems. What creates more work,

[#356162] Refining the use of file joins or file expand_path — Alpha Blue <jdezenzio@...>

Both bits of code process the same result which is finding .rb file

26 messages 2010/01/30
[#356177] Re: Refining the use of file joins or file expand_path — pharrington <xenogenesis@...> 2010/01/31

On Jan 30, 9:24m, Alpha Blue <jdezen...@gmail.com> wrote:

[#356179] Re: Refining the use of file joins or file expand_path — Alpha Blue <jdezenzio@...> 2010/01/31

pharrington wrote:

[#356182] Re: Refining the use of file joins or file expand_path — Ryan Davis <ryand-ruby@...> 2010/01/31

[#356183] Re: Refining the use of file joins or file expand_path — Alpha Blue <jdezenzio@...> 2010/01/31

Ryan Davis wrote:

[#356190] Inheritance related problem — "R. Kumar" <sentinel.2001@...>

Note: this is *not* a ruby bug. its a general query.

20 messages 2010/01/31

Re: Delete elements in array, break, and keep changes?

From: Robert Klemme <shortcutter@...>
Date: 2010-01-02 16:30:14 UTC
List: ruby-talk #354299
On 01/02/2010 12:28 PM, Robert Klemme wrote:
> On 01/01/2010 09:00 PM, Joe Buck wrote:
>> Alright, I won't hide you from the details. I have a map (google maps 
>> API) with data points (100,000+).
>>
>> I'm doing server side clustering of the points to limit the amount of 
>> data I send to the client (I'm using the Ruby On Rails framework).
>>
>> I start out with an array of 100,000 spots. Each spot is a hash with a 
>> :lat and :lng. I need to iterate through the array and group the spots 
>> into clusters. I break the world up into 30/30 degree clusters, so I 
>> have 72 clusters to put the spots in.
>>
>> The spots are ordered by longitude.
>>
>> Here is the code (do you use code snippet tags here?). Note that 
>> 'listings' is the array of spots ordered by longitude.
>>
>> #---------------------------------------------------------------------
>>   for i in (0..72)
>>
>>     # Move to the next block.
>>     bNextRow = (i%nRows == 0 && i!=0)
>>     cLatLngBox.topRightLat = bNextRow ? 90 : cLatLngBox.topRightLat-size
>>     cLatLngBox.topRightLng = bNextRow ? (cLatLngBox.topRightLng+size) 
>> : cLatLngBox.topRightLng
>>     cLatLngBox.botLeftLat = bNextRow ? 90-size : 
>> (cLatLngBox.botLeftLat-size)
>>     cLatLngBox.botLeftLng = bNextRow ? (cLatLngBox.botLeftLng+size) : 
>> cLatLngBox.botLeftLng
>>
>>     # Holds the index of each spot we added to a cluster. We will 
>> remove these
>>     # from the listing when done.
>>     cRemove = []
>>
>>     # Our new cluster.
>>     cluster = {:lat=>0, :lng=>0, :size=>0}
>>
>>     # Iterate through all the spots, adding them to clusters.
>>     listings.each_with_index do |listing, h|
>>       if cLatLngBox.is_in_box?(listing[:lat], listing[:lng])
>>
>>         # Add to the cluster.
>>         cluster[:size]+=1
>>         cluster[:lat]+=listing[:lat].to_f
>>         cluster[:lng]+=listing[:lng].to_f
>>
>>         # Tag the spot for removal.
>>         cRemove << h
>>       else
>>         # We cheat here. Because the spots are ordered by longitude 
>> (-180 to 180) we'll check
>>         # if the spot longitude exceeds our current max. If it does 
>> we're done with this loop.
>>         if listing[:lng].to_f > cLatLngBox.topRightLng
>>           break
>>         end
>>       end
>>     end
>>
>>     # Remove all the items that were clustered.
>>     cRemove.each do |index|
>>       listings.delete_at(index)
>>     end
>> #---------------------------------------------------------------------
>>
>> This is faster than not removing the items. But I'd like to remove 
>> them while I'm in the above loop, but still have the ability to break.
> 
> I am not sure I fully understand your requirement (partly because the 
> code seems incomplete, e.g. where does "size" come from?) but I believe 
> you might have the wrong iteration approach: as far as I understand you 
> have a large array and *every* element in that array falls into one of 
> 72 cluster spots.  Since the array is large you want to traverse it only 
> once.  So the natural thing would be to traverse the array, put every 
> element into its corresponding spot and then use the clustered 
> information.  You could use #group_by for this when on 1.8.7 or newer.
> 
> robert@fussel:~$ ruby1.8 -v
> ruby 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]
> robert@fussel:~$ ruby1.8 -e 'p (1..10).group_by{|x|x%3}'
> {0=>[3, 6, 9], 1=>[1, 4, 7, 10], 2=>[2, 5, 8]}
> robert@fussel:~$
> 
> So I would end up doing something like this:
> 
> Spot = Struct.new :lat, :lng do
>   include Comparable
> 
>   def <=>(spot)
>     to_a <=> spot.to_a
>   end
> 
>   def get_box(precision)
>     # place realistic calculation here
>     Spot.new lat.round(-1), lng.round(-1)
>   end
> end
> 
> listings = ... # filled with Spot instances
> 
> clustered = listings.group_by do |spot|
>   spot.get_box
> end
> 
> # a variant might be:
> ClusterSpot = Struct.new :lat, :lng, :count do
>   def initialize
>     self.lat = self.lng = self.count = 0
>   end
> 
>   def update(spot)
>     c = (count + 1).to_f
>     self.lat = ((lat * count) + spot.lat) / c
>     self.lng = ((lng * count) + spot.lng) / c
>     self.count += 1
>   end
> end
> 
> clustered = Hash.new do |h,k|
>   # add something to the Hash whenever the key shows
>   # up the first time
>   h[k] = ClusterSpot.new
> end
> 
> listings.each do |spot|
>   clustered[spot.get_box].update(spot)
> end

This output code belongs to the first variant.  Sorry for mixing this up 
but my concentration suffers a bit from lying sick in bed. :-(

> # output clustered information
> clustered.keys.sort.each do |cl_spot|
>   printf "%6d entries for %p\n", clustered[cl_spot].size, cl_spot
> end

Output for the second alternative could look like

clustered.sort.each do |spot, cl_spot|
   printf "lat=%8.3f lng=%8.3f\n", cl_spot
end

The main advantage of both these approaches is that they do not need a 
sorted input.  This makes them more flexible.  The single pass approach 
is useful for arbitrary large sets of data - especially when using the 
second approach where the size of the collection never grows beyond what 
will be output in the end.

Cheers

	robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

In This Thread

Prev Next