[#144186] Re: array of object insert polices — "Pe, Botp" <botp@...>

dave [mailto:dave.m@email.it] wrote:

14 messages 2005/06/01

[#144206] Implementing a Read-Only array — Gavin Kistner <gavin@...>

Right up front, let me say that I realize that I can't prevent

14 messages 2005/06/01

[#144224] Method Chaining Issues — "aartist" <aartist@...>

try this:

28 messages 2005/06/01
[#144231] Re: Method Chaining Issues — "Phrogz" <gavin@...> 2005/06/01

This is a FAQ, though no page on the RubyGarden wiki seems to address

[#144240] Re: Method Chaining Issues — Nikolai Weibull <mailing-lists.ruby-talk@...> 2005/06/01

Phrogz wrote:

[#144230] ternary operator confusion — Belorion <belorion@...>

I don't know if this is "improper" use of the ternary operator, but I

19 messages 2005/06/01
[#144233] Re: ternary operator confusion — "Phrogz" <gavin@...> 2005/06/01

true ? a.push(1) : a.push(2)

[#144257] Re: ternary operator confusion — "Marcel Molina Jr." <marcel@...> 2005/06/01

On Thu, Jun 02, 2005 at 01:40:23AM +0900, Phrogz wrote:

[#144263] Re: ternary operator confusion — Eric Mahurin <eric_mahurin@...> 2005/06/01

--- "Marcel Molina Jr." <marcel@vernix.org> wrote:

[#144453] RubyScript2Exe and GUI toolkits — Erik Veenstra <pan@...>

13 messages 2005/06/03

[#144487] Building a business case for Ruby — Joe Van Dyk <joevandyk@...>

Hi,

29 messages 2005/06/03

[#144535] ruby-dev summary 26128-26222 — Minero Aoki <aamine@...>

Hi all,

11 messages 2005/06/04

[#144579] Package, a future replacement for setup.rb and mkmf.rb — Christian Neukirchen <chneukirchen@...>

29 messages 2005/06/04

[#144672] newbie read.scan (?) question — "Bruce D'Arcus" <bdarcus.lists@...>

Hi,

16 messages 2005/06/06

[#144691] making a duck — Eric Mahurin <eric_mahurin@...>

Regarding duck-typing... Is there an easy way make a "duck"?

27 messages 2005/06/06

[#144867] ruby-wish@ruby-lang.org mailing list — dave <dave.m@...>

19 messages 2005/06/08
[#144870] Re: [PROPOSAL] ruby-wish@ruby-lang.org mailing list — "Robert Klemme" <bob.news@...> 2005/06/08

Austin Ziegler wrote:

[#144890] RubyStuff: The Ruby Shop for Ruby Programmers — James Britt <james_b@...>

Announcing the formal grand opening of Ruby Stuff: The Ruby Shop for

36 messages 2005/06/08

[#144966] python/ruby benchmark. — "\"</script>" <groleo@...>

I took a look at

78 messages 2005/06/09
[#144967] Re: python/ruby benchmark. — gabriele renzi <surrender_it@...> 2005/06/09

"</script> ha scritto:

[#144974] Re: python/ruby benchmark. — Lothar Scholz <mailinglists@...> 2005/06/09

Hello gabriele,

[#144977] Re: python/ruby benchmark. — Kent Sibilev <ksruby@...> 2005/06/09

Java is an order of magnitude faster than Ruby. The development of a

[#144980] Re: python/ruby benchmark. — Lothar Scholz <mailinglists@...> 2005/06/09

Hello Kent,

[#144983] Re: python/ruby benchmark. — "Ryan Leavengood" <mrcode@...> 2005/06/09

Lothar Scholz said:

[#145196] Re: python/ruby benchmark(don't shoot the messenger) — ptkwt@... (Phil Tomson) 2005/06/12

In article <9e7db91105061106485b68d629@mail.gmail.com>,

[#145207] Re: python/ruby benchmark(don't shoot the messenger) — Steven Jenkins <steven.jenkins@...> 2005/06/12

Phil Tomson wrote:

[#145212] Re: python/ruby benchmark(don't shoot the messenger) — Austin Ziegler <halostatue@...> 2005/06/12

On 6/12/05, Steven Jenkins <steven.jenkins@ieee.org> wrote:

[#145219] Re: python/ruby benchmark(don't shoot the messenger) — Steven Jenkins <steven.jenkins@...> 2005/06/12

Austin Ziegler wrote:

[#145223] Re: python/ruby benchmark(don't shoot the messenger) — Austin Ziegler <halostatue@...> 2005/06/12

On 6/12/05, Steven Jenkins <steven.jenkins@ieee.org> wrote:

[#145240] Re: python/ruby benchmark(don't shoot the messenger) — Steven Jenkins <steven.jenkins@...> 2005/06/12

Austin Ziegler wrote:

[#145241] Re: python/ruby benchmark(don't shoot the messenger) — Austin Ziegler <halostatue@...> 2005/06/13

On 6/12/05, Steven Jenkins <steven.jenkins@ieee.org> wrote:

[#145000] RDoc

Hi, I have a question. When I compiled ruby-1.8.2

13 messages 2005/06/09
[#145003] Re: RDoc — Eric Hodel <drbrain@...7.net> 2005/06/09

On 09 Jun 2005, at 13:55, Jesffffas Antonio Sfffe1nchez A. wrote:

[#145238] finding Hash subsets based on key value — "ee" <erik.eide@...>

Hi

17 messages 2005/06/12

[#145304] PDF::Writer 1.0 (version 1.0.1) — Austin Ziegler <halostatue@...>

= PDF::Writer

21 messages 2005/06/13
[#145411] Re: [ANN] PDF::Writer 1.0 (version 1.0.1) — Jason Foreman <threeve.org@...> 2005/06/14

No love from PDF::Writer on Mac OS X 10.4.1. I hope to get this fixed

[#145420] Re: [ANN] PDF::Writer 1.0 (version 1.0.1) — Austin Ziegler <halostatue@...> 2005/06/14

On 6/14/05, Jason Foreman <threeve.org@gmail.com> wrote:

[#145432] Re: [ANN] PDF::Writer 1.0 (version 1.0.1) — Jamis Buck <jamis@37signals.com> 2005/06/15

On Jun 14, 2005, at 5:11 PM, Austin Ziegler wrote:

[#145339] survey: what editor do you use to hack ruby? — Lowell Kirsh <lkirsh@...>

I've been having a tough time getting emacs set up properly with ruby

62 messages 2005/06/14

[#145390] Ruby and recursion (Ackermann benchmark) — ptkwt@... (Phil Tomson)

14 messages 2005/06/14

[#145586] How to make a browser in Ruby Tk — sujeet kumar <sujeetkr@...>

Hi

13 messages 2005/06/16

[#145636] Super-scalar Optimizations — "Phrogz" <gavin@...>

I was looking over the shoulder of a C++ coworker yesterday, when he

14 messages 2005/06/16

[#145677] Truth maintenance system in Ruby — "itsme213" <itsme213@...>

Anyone know of any kind of truth-maintenance system implemented in Ruby (or,

12 messages 2005/06/17

[#145720] Frameless RDoc template ('technology preview') — ES <ruby-ml@...>

Hi!

17 messages 2005/06/17

[#145779] Newbe questions... — "Chuck Brotman" <brotman@...>

In Ruby Is there a prefered (or otherwise elegant) way to do an inner &

17 messages 2005/06/18

[#145790] GC.disable not working? — Eric Mahurin <eric_mahurin@...>

From what I can tell, GC.disable doesn't work. I'm wanting to

37 messages 2005/06/18
[#145822] Re: GC.disable not working? — ts <decoux@...> 2005/06/19

>>>>> "E" == Eric Mahurin <eric_mahurin@yahoo.com> writes:

[#146024] evaluation of ruby — "Franz Hartmann" <porschefranz@...> 2005/06/21

Hello all,

[#145830] preventing instantiation — "R. Mark Volkmann" <mark@...>

What is the recommended way in Ruby to prevent other classes from creating

13 messages 2005/06/19
[#145831] Re: preventing instantiation — Gavri Fernandez <gavri.fernandez@...> 2005/06/19

On 6/19/05, R. Mark Volkmann <mark@ociweb.com> wrote:

[#145879] x==1 vs 1==x — Gavin Kistner <gavin@...>

I'm against _premature_ optimization in theory, but believe that a

19 messages 2005/06/20
[#145880] Re: x==1 vs 1==x — ts <decoux@...> 2005/06/20

>>>>> "G" == Gavin Kistner <gavin@refinery.com> writes:

[#145943] Chess Variants (II) (#36) — James Edward Gray II <james@...>

I don't want to spoil all the fun, in case anyone is still attempting

12 messages 2005/06/20

[#146038] 1. Ruby result: 101 seconds , 2. Java result:9.8 seconds, 3. Perl result:62 seconds — Michael Tan <mtan1232000@...>

Just new to Ruby since last week, running my same functional program on the windows XP(Pentium M1.5G), the Ruby version is 10 times slower than the Java version. The program is to find the prime numbers like 2, 3,5, 7, 11, 13... Are there setup issues? or it is normal?

47 messages 2005/06/21
[#146044] Re: 1. Ruby result: 101 seconds , 2. Java result:9.8 seconds, 3. Perl result:62 seconds — "Florian Frank" <flori@...> 2005/06/21

Michael Tan wrote:

[#146047] Re: 1. Ruby result: 101 seconds , 2. Java result:9.8 seconds, 3. Perl result:62 seconds — Jim Freeze <jim@...> 2005/06/21

* Florian Frank <flori@nixe.ping.de> [2005-06-22 05:40:14 +0900]:

[#146050] Re: 1. Ruby result: 101 seconds , 2. Java result:9.8 seconds, 3. Perl result:62 seconds — "Ryan Leavengood" <mrcode@...> 2005/06/21

Jim Freeze said:

[#146132] Re: 1. Ruby result: 101 seconds , 2. Java result:9.8 seconds, 3. Perl result:62 seconds — "Mark Thomas" <mrt@...> 2005/06/22

Florian Frank wrote:

[#146064] rubyscript2exe — Joe Van Dyk <joevandyk@...>

Hi,

14 messages 2005/06/21

[#146169] spidering a website to build a sitemap — Bill Guindon <agorilla@...>

I need to spider a site and build a sitemap for it. I've looked

17 messages 2005/06/22

[#146178] traits-0.4.0 - the coffee release — "Ara.T.Howard" <Ara.T.Howard@...>

15 messages 2005/06/22

[#146328] string to Class object — "R. Mark Volkmann" <mark@...>

How can I create a Class object from a String that contains the name of a class?

15 messages 2005/06/24

[#146380] Application-0.6.0 — Jim Freeze <jim@...>

CommandLine - Application and OptionParser

22 messages 2005/06/24

[#146391] ASP.NET vs Ruby on Rails — Stephen Kellett <snail@...>

HI Folks,

21 messages 2005/06/24
[#146457] Re: ASP.NET vs Ruby on Rails — "Dema" <demetriusnunes@...> 2005/06/25

Hi Stephen,

[#146425] speeding up Process.detach frequency — Joe Van Dyk <joevandyk@...>

Is there any way to speed up Process.detach? The ri documentation for

14 messages 2005/06/25

[#146483] I saw the beauty of Ruby Re: 1. Ruby result: 101 seconds , 2. Java result:9.8 seconds, 3. Perl result:62 seconds — Michael Tan <mtan1232000@...>

22 messages 2005/06/26
[#146485] Re: I saw the beauty of Ruby Re: 1. Ruby result: 101 seconds , 2. Java result:9.8 seconds, 3. Perl result:62 seconds — "Florian Frank" <flori@...> 2005/06/26

Michael Tan wrote:

[#146504] Re: I saw the beauty of Ruby Re: 1. Ruby result: 101 seconds , 2. Java result:9.8 seconds, 3. Perl result:62 seconds — Brad Wilson <dotnetguy@...> 2005/06/26

For comparison, the port of your code to (less than elegant) C#.

[#146515] Re: I saw the beauty of Ruby Re: 1. Ruby result: 101 seconds , 2. Java result:9.8 seconds, 3. Perl result:62 seconds — Florian Gro<florgro@...> 2005/06/26

Brad Wilson wrote:

[#146491] What do you want to see in a Sparklines Library? — Daniel Nugent <nugend@...>

This is sort of an interest gauging/feature request poll.

17 messages 2005/06/26
[#146506] Re: What do you want to see in a Sparklines Library? — Daniel Amelang <daniel.amelang@...> 2005/06/26

See what's already been done before you get too far.

[#146517] Re: What do you want to see in a Sparklines Library? — Daniel Nugent <nugend@...> 2005/06/26

Yup, seen the stuff on RedHanded, I was planning on writing a little

[#146562] RCM - A Ruby Configuration Management System — Michael Neumann <mneumann@...>

Hi all,

22 messages 2005/06/27

[#146630] yield does not take a block — Daniel Brockman <daniel@...>

Under ruby 1.9.0 (2005-06-23) [i386-linux], irb 0.9.5(05/04/13),

48 messages 2005/06/28
[#146666] Re: yield does not take a block — Daniel Brockman <daniel@...> 2005/06/28

Yukihiro Matsumoto <matz@ruby-lang.org> writes:

[#146680] Re: yield does not take a block — Yukihiro Matsumoto <matz@...> 2005/06/28

Hi,

[#146684] Re: yield does not take a block — Eric Mahurin <eric_mahurin@...> 2005/06/28

[#146779] Re: yield does not take a block — "Adam P. Jenkins" <thorin@...> 2005/06/29

Eric Mahurin wrote:

[#146700] Anything in new Eclipse for Rubyists? — "jfry" <jeff.fry@...>

Hey there, I know that a number of folks on the list use Eclipse as

14 messages 2005/06/28

[#146773] Programmers Contest: Fit pictures on a page — hicinbothem@...

GLOSSY: The Summer Programmer Of The Month Contest is underway!

18 messages 2005/06/29

[#146815] shift vs. slice!(0) and others — Eric Mahurin <eric_mahurin@...>

I just did some benchmarking of various ways to insert/delete

12 messages 2005/06/29

[RFC] framework of Ruby/Tk + VNC

From: Hidetoshi NAGAI <nagai@...>
Date: 2005-06-10 03:43:28 UTC
List: ruby-talk #145031
Hi, 

I'm working on a framework of Ruby/Tk + VNC. 
Its purpose is to put GUI applications of Ruby/Tk on internet view.
The concept of the framework is, 

 * Use VNC (RFB protocol)

 * A GUI application is running on a safe (safe-Tk) based 
   slave interpreter (usually, $SAFE == 4).
   If required, you can also use a non-safe based slave.

 * Never use general window managers to decrease security risk.
   Except a VNC server, only one Ruby/Tk process is running.
   # In the future, it may be expected that Ruby/Tk has 
   # RFB server functions and no VNC server is required 
   # for this purpose.

 * A canvas widget of the master interpreter works like 
   as a window manager. The canvas widget administers the 
   slave interpreter's root/toplevel widgets by window items 
   embedded them.

By comparison with using tclplugin, probably, the followings 
are advantages.

 * If the user already has a kind of VNC viewer, 
   he can use it to access the application.

 * When the user access the application by a web browser, 
   the application server can send a JAVA viewer applet. 
   Therefore, the user doesn't need to install any plugins. 

 * Even if the application uses some Tcl/Tk extensions, 
   the user doesn't need to install such extensions.

 * No need to send the source of the application.
   Funcamentally, interchanged data are only window events 
   and display images on RFB protocol. 
   So, it can decrease the cost of care for security.

Disadvantages are, 

 * Slow, because it is remote access through networks.

 * Much resources are required on the server.

A sample script based on this concept is attached 
at the end of this mail.
That requires 2005/06/08 or later version of Ruby.
Please note that, because of using multi-tk library, 
the description of script on the slave interpreter is 
almost same as the description of usual Ruby/Tk script.

Although it is an old and slow machine and is not 
decided how long term it is available to use, 
there is a server to try the sample script.
Please access 131.206.154.81:33 by VNC viewer, 
or http://131.206.154.81/ by web browser. 
Of course, Ruby is not required on user's machine.

# When by a web browser, a dialog to require password is shown. 
# Please ignore it and press the "OK" button with empty password. 

Any comments (or wish to participate in the development ;-))
are welcome.

                      Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)

---------------------------------------------------------------
The following is the sample script.
===============================================================
#!/usr/bin/env ruby
#
#  Ruby/Tk+VNC :: concept example
#
#                             by  Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
#
require 'multi-tk'
require 'singleton'

class VNC_Wall < TkCanvas
  include Singleton

  def initialize
    @new_relx = 0.4
    @new_rely = 0.4

    super(:width=>TkWinfo.screenwidth('.'), 
          :height=>TkWinfo.screenheight('.'))
    self.pack
  end

  ######################################

  class Window_Frame < TkcWindow
    def _title_bind
      @titlebar.bind('ButtonPress-1', 
                     proc{|rx, ry| 
                       @rx = rx; @ry = ry; @sx, @sy = self.coords
                       @base.raise
                     }, '%X', '%Y')

      @titlebar.bind('B1-Motion', 
                     proc{|rx, ry|
                       wx = @wall.winfo_rootx; wy = @wall.winfo_rooty
                       if rx > wx && rx < wx + @wall.width &&
                           ry > wy && ry < wy + @wall.height
                         self.coords = [@sx + (rx - @rx), @sy + (ry - @ry)]
                       end
                     }, '%X', '%Y')
    end
    private :_title_bind

    def initialize(wall, title, coords, keys={})
      @wall = wall
      @base = TkFrame.new(@wall, :borderwidth=>3, :relief=>:ridge)
      @titlebar = TkLabel.new(@base, :text=>" #{title} ", :relief=>:raised, 
                              :foreground=>'white', 
                              :background=>'midnight blue').pack(:fill=>:x)
      @container = TkFrame.new(@base, :container=>true).pack(:fill=>:both, 
                                                             :expand=>true)
      super(@wall, coords[0], coords[1], keys)
      self.window = @base
      _title_bind
    end

    def winid
      @container.winfo_id
    end

    def title(txt)
      @titlebar.text(txt)
    end
  end

  ######################################

  def new_window(title, coords, keys={})
    keys = _symbolkey2str(keys)
    keys['anchor'] = 'nw'
    Window_Frame.new(self, title, coords, keys)
  end

  def new_root(keys={})
    keys = _symbolkey2str(keys)
    coords = keys.delete('coords') || 
      [self.width * @new_relx, self.height * @new_rely]
    title  = keys.delete('title')  || 'root'
    new_window(title, coords, keys)
  end
  private :new_root

  ######################################

  class TOPLEVEL_ARG < Exception
    alias value message
  end

  ######################################

  def new_toplevel(slave_ip, top, 
                   coords=[self.width * @new_relx, self.height * @new_rely])
    w = new_window("toplevel(#{top})", coords)
    MultiTkIp.invoke_hidden(slave_ip, 'toplevel', top, '-use', w.winid)
  end

  def replace_toplevel_cmd(slave_ip)
    th = Thread.new(slave_ip){|ip|
      begin
        Thread.stop
      rescue TOPLEVEL_ARG => arg
        begin
          new_toplevel(ip, arg.value)
        rescue Exception => e
        end
        retry
      end
    }

    cmd = TkComm._get_eval_string(proc{|t|
                                    th.raise(TOPLEVEL_ARG.new(t))
                                    until slave_ip.eval_proc{TkWinfo.exist?(t)}
                                      Thread.pass
                                      Tk.update
                                    end
                                  })
    slave_ip._eval("proc toplevel {path} {#{cmd} $path}")
  end

  ######################################

  def new_slave(safe=nil, keys={}, &b)
    if safe.kind_of?(Hash)
      keys = _symbolkey2str(safe)
      safe = keys.delete('safe')
    end
    w = new_root(keys)
    ip = MultiTkIp.new_trusted_slave(safe, {:use=>w.winid}, &b)
    MultiTkIp.hide_cmd(ip, 'toplevel')
    replace_toplevel_cmd(ip)
    ip
  end
  alias new_trusted_slave new_slave

  def new_safe_slave(safe=4, keys={}, &b)
    if safe.kind_of?(Hash)
      keys = _symbolkey2str(safe)
      safe = keys.delete('safe') || 4
    end
    w = new_root(keys)
    ip = MultiTkIp.new_safe_slave(safe, {:use=>w.winid}, &b)
    replace_toplevel_cmd(ip)
    ip
  end
  alias new_safeTk new_safe_slave
end

#===============================================================

if $0 == __FILE__
  timeout = 60

  wall = VNC_Wall.instance
  wall[:background] = 'skyblue'

  #-----------------------------------------------------------

  TkcText.new(wall, 150, 50, :fill=>'navyblue', :font=>'courier -14', 
              :text=>"Ruby/Tk+VNC :: concept example")
  TkcText.new(wall, 370, 170, :text=><<EOT)
The root window of the safeTk IP is 
embedded in Master IP's frame widget.

You can move the root window by 
'Button-1 + Motion' on the titlebar.
Master IP works like as a window manager.

No window manager on the VNC server.
Running one Ruby/Tk process only.
EOT
#'
  TkcText.new(wall, 150, 300, 
              :text=>"This example will exit in #{timeout} seconds.")
  TkcText.new(wall, 350, 350, 
              :text=>"This is Master IP's canvas widget.\n\t($SAFE==#{$SAFE})")

  #-----------------------------------------------------------

  # ip = wall.new_trusted_slave(:title=>'slave root', :coords=>[50, 70]){
  # ip = wall.new_safeTk(3, :title=>'slave root', :coords=>[50, 70]){
  ip = wall.new_safeTk(:title=>'slave root', :coords=>[50, 70]){
    TkLabel.new(:text=>"safeTk interpreter's root").pack(:padx=>10, :pady=>5)

    top = nil
    cnt = 0

    b1 = TkButton.new(:text=>'create Toplevel')

    b2 = TkButton.new(:text=>'add label to the toplevel', :state=>:disabled, 
                      :command=>proc{
                        cnt += 1
                        TkLabel.new(top, 
                                    :text=>"Pressed(#{cnt})!! $SAFE=#{$SAFE}"
                                    ).pack
                      })

    b1.command = proc{
      top = TkToplevel.new
      b1[:state] = :disabled
      b2[:state] = :active
      TkLabel.new(top, 
                  :text=>'New toplevel of slaveIP').pack(:padx=>20, :pady=>30)
    }

    label = TkLabel.new(:foreground=>'red', :text=>"\n")
    timer = TkTimer.new(500, 1, proc{label.text = "\n"})
    TkButton.new(:text=>'BUTTON', 
                 :command=>proc{
                   timer.cancel
                   label.text = "button is pressed!!\n($SAFE==#{$SAFE})"
                   timer.start
                 }).pack(:padx=>5, :pady=>5, :fill=>:x)
    label.pack

    Tk.pack(b1, b2, :fill=>:x, :padx=>5, :pady=>5)
  }

  #-----------------------------------------------------------

  Tk.after(timeout * 1000){exit}
  Tk.mainloop
end


In This Thread

Prev Next