[#70464] ljust, rjust... — "Chris Pine" <nemo@...>

Just thought I would run these ideas by everyone:

11 messages 2003/05/01

[#70502] temporary redirection of stdout — Andrew Walrond <andrew@...>

I'm new to ruby, so forgive any obvious stupididity, but can anyone

20 messages 2003/05/02

[#70535] SWIG on Solaris problem — Jim Freeze <jim@...>

Hi folks.

14 messages 2003/05/02

[#70594] Why is PHP so popular? What can we learn from the PHP camp? — ptkwt@...1.aracnet.com (Phil Tomson)

....and what can we learn from PHP's rapid rise to success?

99 messages 2003/05/05
[#70641] Re: Why is PHP so popular? What can we learn from the PHP camp? — Andreas Schwarz <usenet@...> 2003/05/05

Aredridel wrote:

[#70652] A wishlist for a "Ruby Standard Library" — Aredridel <aredridel@...> 2003/05/05

A wishlsit for a "Ruby Standard Library":

[#70655] Re: A wishlist for a "Ruby Standard Library" — Brian Candler <B.Candler@...> 2003/05/05

On Tue, May 06, 2003 at 07:39:54AM +0900, Aredridel wrote:

[#70673] Re: A wishlist for a "Ruby Standard Library" — Mark Wilson <mwilson13@...> 2003/05/06

[snipped many wonderful things.]

[#70759] Testing for a class existence — "Gennady" <gfb@...>

Does anybody know an easy way to test for a class/module existence in =

15 messages 2003/05/06

[#70770] capture output — "Simon Strandgaard" <0bz63fz3m1qt3001@...>

I have seen much talking about this topic, but no working code!

68 messages 2003/05/06
[#70929] Re: IO.pipe + thread = hangs (was: Re: capture output) — "Robert Klemme" <bob.news@...> 2003/05/08

[#71741] Named Pipes — Mark Firestone <nedry@...> 2003/05/19

What is the recommended procedure for using named pipes in Ruby. Does one

[#71745] Re: Named Pipes — Brian Candler <B.Candler@...> 2003/05/19

On Mon, May 19, 2003 at 06:33:17PM +0900, Mark Firestone wrote:

[#70842] Symbiosis offer: trade Ruby for German :-) — Mauricio Fern疣dez <batsman.geo@...>

17 messages 2003/05/07

[#70865] access a variables name? — "meinrad.recheis" <my.name.here@...>

is it possible to access the variable-name of an object?

14 messages 2003/05/07

[#70891] Syck 0.25 + YAML.rb -- Objects in plain-text — why the lucky stiff <ruby-talk@...>

..my faithful friends..

20 messages 2003/05/07

[#70919] petition for raa-install to be included in 1.8 — ptkwt@...1.aracnet.com (Phil Tomson)

Similar to the YamlInRuby petition which has now closed.

14 messages 2003/05/08
[#70920] Re: petition for raa-install to be included in 1.8 — Sam Roberts <sroberts@...> 2003/05/08

I just looked again, and remember why I don't know anything about

[#70921] Re: petition for raa-install to be included in 1.8 — why the lucky stiff <ruby-talk@...> 2003/05/08

You can find a tutorial on using raa-install (as well as its API) at:

[#70985] Can a global be a constant? — Jim Freeze <jim@...>

Hi

36 messages 2003/05/08
[#71001] Re: Can a global be a constant? — "Hal E. Fulton" <hal9000@...> 2003/05/08

----- Original Message -----

[#71003] Re: Can a global be a constant? — Jim Freeze <jim@...> 2003/05/08

On Friday, 9 May 2003 at 8:23:52 +0900, Hal E. Fulton wrote:

[#71007] Re: Can a global be a constant? — dblack@... 2003/05/08

Hi --

[#71036] Re: Regexp: why does (re)* return only last repetition? — "Robert Klemme" <bob.news@...>

21 messages 2003/05/09
[#71209] Re: Regexp: why does (re)* return only last repetition? — "Robert Klemme" <bob.news@...> 2003/05/12

[#71225] Re: Regexp: why does (re)* return only last repetition? — Austin Ziegler <austin@...> 2003/05/12

On Mon, 12 May 2003 17:39:19 +0900, Robert Klemme wrote:

[#71229] Re: Regexp: why does (re)* return only last repetition? — Brian Candler <B.Candler@...> 2003/05/12

On Mon, May 12, 2003 at 10:18:00PM +0900, Austin Ziegler wrote:

[#71266] Re: Regexp: why does (re)* return only last repetition? — Austin Ziegler <austin@...> 2003/05/12

On Mon, 12 May 2003 23:51:44 +0900, Brian Candler wrote:

[#71042] TCP Sockets — Dominik Werder <dwerder@...>

Hi there,

28 messages 2003/05/09
[#71089] Re: TCP Sockets — Tom Felker <tcfelker@...> 2003/05/09

On Fri, 2003-05-09 at 05:40, Dominik Werder wrote:

[#71543] Re: TCP Sockets — Dominik Werder <dwerder@...> 2003/05/16

>> How can I tell how many bytes can be read from an IO object without

[#71547] Re: TCP Sockets — Brian Candler <B.Candler@...> 2003/05/16

On Fri, May 16, 2003 at 05:14:17PM +0900, Dominik Werder wrote:

[#71550] Re: TCP Sockets — Dominik Werder <dwerder@...> 2003/05/16

my problem is not the http protocol itself (not at this time :) but the IO-

[#71551] Re: TCP Sockets — Brian Candler <B.Candler@...> 2003/05/16

On Fri, May 16, 2003 at 07:20:30PM +0900, Dominik Werder wrote:

[#71553] Re: TCP Sockets — Dominik Werder <dwerder@...> 2003/05/16

> Maybe, but threads are really the "ruby way" to solve this problem.

[#71557] Re: TCP Sockets — Brian Candler <B.Candler@...> 2003/05/16

On Fri, May 16, 2003 at 07:53:39PM +0900, Dominik Werder wrote:

[#71562] Re: TCP Sockets — Dominik Werder <dwerder@...> 2003/05/16

> That would mean mixing the binary streams in a non-deterministic way,

[#71107] RCR for child execution — Brian Candler <B.Candler@...>

Looking on RubyGarden it seems that the RCR process there is "resting", so

99 messages 2003/05/10
[#71122] Re: RCR for child execution — "Simon Strandgaard" <0bz63fz3m1qt3001@...> 2003/05/10

On Sun, 11 May 2003 01:50:49 +0900, Brian Candler wrote:

[#71126] Re: RCR for child execution — Brian Candler <B.Candler@...> 2003/05/10

On Sun, May 11, 2003 at 01:27:31AM +0900, Simon Strandgaard wrote:

[#71364] Re: RCR for child execution — "Simon Strandgaard" <0bz63fz3m1qt3001@...> 2003/05/13

On Tue, 13 May 2003 21:11:08 +0000, ahoward wrote:

[#71385] Re: RCR for child execution — matz@... (Yukihiro Matsumoto) 2003/05/14

Hi,

[#71152] Is Rubygarden's wiki restricted to English? — Mauricio Fern疣dez <batsman.geo@...>

20 messages 2003/05/11
[#71160] Re: Is Rubygarden's wiki restricted to English? — "Hal E. Fulton" <hal9000@...> 2003/05/11

----- Original Message -----

[#71165] Re: Is Rubygarden's wiki restricted to English? — Mauricio Fern疣dez <batsman.geo@...> 2003/05/11

On Mon, May 12, 2003 at 12:40:26AM +0900, Hal E. Fulton wrote:

[#71189] efficiency advice needed — "meinrad.recheis" <my.name.here@...>

hi,

12 messages 2003/05/11

[#71297] State Pattern Implementation — "Robert Klemme" <bob.news@...>

22 messages 2003/05/13

[#71361] Objects VS Datastructures — Simon Vandemoortele <deliriousREMOVEUPPERCASETEXTTOREPLY@...>

19 messages 2003/05/13

[#71447] Embedding/GC/heap corruption problem — "Jan Bernhardt" <j.bernhardt@...>

Hi,

22 messages 2003/05/14

[#71488] Test::Unit sequencing — Brian Candler <B.Candler@...>

A question for more experienced Test::Unit users.

23 messages 2003/05/15
[#71492] Re: Test::Unit sequencing — Anders Bengtsson <ndrsbngtssn@...> 2003/05/15

--- Brian Candler <B.Candler@pobox.com> wrote:

[#71508] Re: Test::Unit sequencing — ahoward <ahoward@...> 2003/05/15

On Thu, 15 May 2003, [iso-8859-1] Anders Bengtsson wrote:

[#71510] RCR: $INCLUDED global var — martindemello@... (Martin DeMello)

$INCLUDED = (__FILE__ != $0)

25 messages 2003/05/15
[#71515] Re: RCR: $INCLUDED global var — matz@... (Yukihiro Matsumoto) 2003/05/15

Hi,

[#71525] Re: RCR: $INCLUDED global var — ahoward <ahoward@...> 2003/05/15

On Fri, 16 May 2003, Yukihiro Matsumoto wrote:

[#71520] public/protected/private syntax — Guillaume Marcais <guslist@...>

I tend to find the public/protected/private keywords in Ruby a little odd.

27 messages 2003/05/15
[#71540] Re: public/protected/private syntax — "Robert Klemme" <bob.news@...> 2003/05/16

[#71573] Re: public/protected/private syntax — Guillaume Marcais <guillaume.marcais@...> 2003/05/16

On Friday 16 May 2003 03:38 am, you wrote:

[#71595] Re: public/protected/private syntax — Austin Ziegler <austin@...> 2003/05/16

On Fri, 16 May 2003 23:33:21 +0900, Guillaume Marcais wrote:

[#71560] gzip cgi compression — Dominik Werder <dwerder@...>

Is zlib compatible with HTTP-gzip-output-compression?

14 messages 2003/05/16

[#71636] select strange behavier — "Simon Strandgaard" <0bz63fz3m1qt3001@...>

'select' is suppose to watch some file-descriptors and when an event

22 messages 2003/05/17

[#71673] An Object Going Out Of Scope — "vinita Papur" <gkapur@...>

A quick question. How can one discern when an object goes out of scope?

46 messages 2003/05/18
[#71678] Re: An Object Going Out Of Scope — "MikkelFJ" <mikkelfj-anti-spam@...> 2003/05/18

[#71680] Re: An Object Going Out Of Scope — Mauricio Fern疣dez <batsman.geo@...> 2003/05/18

On Sun, May 18, 2003 at 06:08:43PM +0900, MikkelFJ wrote:

[#71681] ruby garbage collection — "Gaffer" <gaffer@...> 2003/05/18

i need this for a realtime game application which has embedded ruby -- after

[#71683] Re: ruby garbage collection — Mauricio Fern疣dez <batsman.geo@...> 2003/05/18

On Sun, May 18, 2003 at 08:35:11PM +0900, Gaffer wrote:

[#71685] Re: ruby garbage collection — "Gaffer" <gaffer@...> 2003/05/18

strange, i found the rb_gc call on my own and called that to good effect

[#71688] Re: ruby garbage collection — "Simon Strandgaard" <0bz63fz3m1qt3001@...> 2003/05/18

On Sun, 18 May 2003 22:10:18 +0900, Gaffer wrote:

[#71689] Re: ruby garbage collection — "Gaffer" <gaffer@...> 2003/05/18

i think its actually the GC cleaning up matrix and vector classes (my own

[#71691] Re: ruby garbage collection — "Simon Strandgaard" <0bz63fz3m1qt3001@...> 2003/05/18

On Sun, 18 May 2003 22:39:17 +0900, Gaffer wrote:

[#71692] Re: ruby garbage collection — "Gaffer" <gaffer@...> 2003/05/18

i'm pretty sure i've tracked down the cause, this is my first time embedding

[#71695] Re: ruby garbage collection — "Simon Strandgaard" <0bz63fz3m1qt3001@...> 2003/05/18

On Sun, 18 May 2003 23:48:28 +0900, Gaffer wrote:

[#71948] How I'd like method-wrapping to work... — "Hal E. Fulton" <hal9000@...>

OK, I read Matz's blog entries as well as I could.

16 messages 2003/05/21

[#72030] why is "does" missing from this sub!-stitution? — Dave Oshel <dcoshel@...>

[~/Desktop] dave$ cat foobar.rb ; foobar.rb

19 messages 2003/05/22
[#72037] Re: why is "does" missing from this sub!-stitution? — Dave Oshel <dcoshel@...> 2003/05/22

In article <20030522202818.GA24497@student.ei.uni-stuttgart.de>,

[#72056] Naive CGI question — "Hal E. Fulton" <hal9000@...>

I'm betting this is either impossible

15 messages 2003/05/23

[#72134] Problem compiling extension on Solaris — "Tim Hunter" <cyclists@...>

I have an user who is trying to build RMagick on Solaris with Ruby 1.6.8.

22 messages 2003/05/25
[#72262] Re: Problem compiling extension on Solaris — Daniel Berger <djberge@...> 2003/05/27

[#72150] Binary Tree vs. Hash — Xiangrong Fang <xrfang@...>

Hi ruby fans,

47 messages 2003/05/26

[#72184] Project Directory Structure — Jim Freeze <jim@...>

Hi:

47 messages 2003/05/26
[#72218] Re: Project Directory Structure — "MikkelFJ" <mikkelfj-anti-spam@...> 2003/05/26

[#72222] Re: Project Directory Structure — Jim Freeze <jim@...> 2003/05/26

Thanks everyone for your input so far.

[#72244] Re: Project Directory Structure — Robert Feldt <feldt@...> 2003/05/27

On Tue, 27 May 2003, Jim Freeze wrote:

[#72260] Re: Project Directory Structure — Jim Freeze <jim@...> 2003/05/27

On Tuesday, 27 May 2003 at 18:26:53 +0900, Robert Feldt wrote:

[#72265] Re: Project Directory Structure — Jim Freeze <jim@...> 2003/05/27

Thanks for all the input. A description of the Project

[#72269] Re: Project Directory Structure — Robert Feldt <feldt@...> 2003/05/27

On Wed, 28 May 2003, Jim Freeze wrote:

[#72274] RCR: unpack/pack Bignum — Robert Feldt <feldt@...>

I'm sure this has been discussed before and maybe there are good reasons

27 messages 2003/05/27
[#72375] Re: RCR: unpack/pack Bignum — Robert Feldt <feldt@...> 2003/05/28

No one seems to be interested in this issue so I'll have to reply to

[#72381] Re: RCR: unpack/pack Bignum — nobu.nokada@... 2003/05/28

Hi,

[#72394] Re: RCR: unpack/pack Bignum — Robert Feldt <feldt@...> 2003/05/29

On Thu, 29 May 2003 nobu.nokada@softhome.net wrote:

[#72403] Re: RCR: unpack/pack Bignum — nobu.nokada@... 2003/05/29

Hi,

[#72600] What is BER compression? (was RCR: unpack/pack Bignum) — Sam Roberts <sroberts@...> 2003/05/31

Is it documented anywhere, what this 'w' template is useful for?

[#72371] Windows Installer for Ruby 1.8.0 (CVS) — Andrew Hunt <andy@...>

Hi all,

16 messages 2003/05/28

[#72388] Array.extend versus instance.extend — "Simon Strandgaard" <0bz63fz3m1qt3001@...>

I want to install 'shift_until_kind_of' in the global Array class

18 messages 2003/05/29

[#72420] Metakit for Ruby - Would you want it? — bobx@... (Bob)

I have a gentleman in England who I have been talking with who is

23 messages 2003/05/29

[#72439] Iteration - last detection — "Orion Hunter" <orion2480@...>

Is there any built in functionality for iteration that will allow me to

41 messages 2003/05/29
[#72510] Re: Iteration - last detection — Carlos <angus@...> 2003/05/30

> Is there any built in functionality for iteration that will allow me to

[#72577] IF statement in ruby 1.8.0 (2003-05-26) [i386-mswin32] — "Shashank Date" <sdate@...>

Just when I thought that I had perfectly understood the IF statement in

14 messages 2003/05/31

Re: [Q]: CGI::Session

From: Tom Danielsen <tom@...>
Date: 2003-05-30 01:38:41 UTC
List: ruby-talk #72484
On 30.05 04:02, Anders Borch wrote:
| gabriele renzi wrote:
| >il Thu, 29 May 2003 08:14:35 +0900, Tom Danielsen <tom@mnemonic.no> ha
| >scritto::
| >
| >
| >>A couple of questions about CGI::Session :
| >>
| >>- why is only the first part of the MD5 sum used in
| >>the session_id ?
| 
| someone (a russian security expert) told me that you can safely use a 
| substring of an MD5 sum in stead of the entire MD5 sum since every bit 
| in the MD5 sum will change value if the source data changes.

As far as I know any 64-bit part of the hash is as good as any
other.  But why not use the full 128-bit hash?  Performance?
I modified session.rb to use the full hash, and it seems to
work ok.  (Better collision resistance).

| 
| >>
| >>- why does CGI::Session::FileStore write the session
| >>variables as text, instead of using Marshal ?
| >>
| 
| good question.

Well, I had to try....  but I ran into something that I don't
understand.  Perhaps 0330 is not the time my brain is at it's
best?

I created a MarshaledFileStore class (slightly modified FileStore),
but it won't work for some mysterious reason :

[Sat May 31 03:26:37 2003] [error] mod_ruby: error in ruby
/usr/local/lib/ruby/1.8/cgi/session.rb:155:in `dump': singleton can't be dumped (TypeError)
        from /usr/local/lib/ruby/1.8/cgi/session.rb:155:in `update'
        from /usr/local/lib/ruby/1.8/cgi/session.rb:161:in `close'
        from /usr/local/lib/ruby/1.8/cgi/session.rb:96:in `close'
        from /www/htdocs/app1.rbx:45
        from /usr/local/lib/ruby/1.8/apache/ruby-run.rb:70:in `load'
        from /usr/local/lib/ruby/1.8/apache/ruby-run.rb:70:in `handler'

This is what the hash looks like (output from my modified session.rb) :

/www% more /tmp/h.h
class of @hash is 'Hash'
{"name"=>"test", "visited"=>8}
'name' (String) => 'test' (String)
'visited' (String) => '8' (Fixnum)
/www% 

So......singleton ??

And here is the modified session.rb :

regards,
    Tom


------------- cut -------------
# Copyright (C) 2001  Yukihiro "Matz" Matsumoto
# Copyright (C) 2000  Network Applied Communication Laboratory, Inc.
# Copyright (C) 2000  Information-technology Promotion Agency, Japan

require 'cgi'

class CGI
  class Session

    attr_reader :session_id

    def Session::callback(dbman)
      lambda{
	dbman[0].close unless dbman.empty?
      }
    end

    def Session::create_new_id
      require 'digest/md5'
      md5 = Digest::MD5::new
      md5.update(String(Time::now))
      md5.update(String(rand(0)))
      md5.update(String($$))
      md5.update('foobar')
      ### TOM md5.hexdigest[0,16]
      md5.hexdigest
    end

    def initialize(request, option={})
      session_key = option['session_key'] || '_session_id'
      id, = option['session_id']
      unless id
	if option['new_session']
	  id = Session::create_new_id
	end
      end
      unless id
	id, = request[session_key]
        id = id.read if id.respond_to?(:read)
	unless id
	  id, = request.cookies[session_key]
	end
	unless id
	  if option.key?('new_session') and not option['new_session']
	    raise ArgumentError, "session_key `%s' should be supplied"%session_key
	  end
	  id = Session::create_new_id
	end
      end
      @session_id = id
      dbman = option['database_manager'] || FileStore
      @dbman = dbman::new(self, option)
      request.instance_eval do
	@output_hidden = {session_key => id}
	@output_cookies =  [
          Cookie::new("name" => session_key,
		      "value" => id,
		      "expires" => option['session_expires'],
		      "domain" => option['session_domain'],
		      "secure" => option['session_secure'],
		      "path" => if option['session_path'] then
				  option['session_path']
		                elsif ENV["SCRIPT_NAME"] then
				  File::dirname(ENV["SCRIPT_NAME"])
				else
				  ""
				end)
        ]
      end
      @dbprot = [@dbman]
      ObjectSpace::define_finalizer(self, Session::callback(@dbprot))
    end

    def [](key)
      unless @data
	@data = @dbman.restore
      end
      @data[key]
    end

    def []=(key, val)
      unless @write_lock
	@write_lock = true
      end
      unless @data
	@data = @dbman.restore
      end
      @data[key] = val
    end

    def update
      @dbman.update
    end

    def close
      @dbman.close
      @dbprot.clear
    end

    def delete
      @dbman.delete
      @dbprot.clear
    end







    class MarshaledFileStore
      def check_id(id)
	/[^0-9a-zA-Z]/ =~ id.to_s ? false : true
      end

      def initialize(session, option={})
	dir = option['tmpdir'] || ENV['TMP'] || '/tmp'
	prefix = option['prefix'] || ''
	id = session.session_id
	unless check_id(id)
	  raise ArgumentError, "session_id `%s' is invalid" % id
	end
	path = dir+"/"+prefix+id
	path.untaint
	unless File::exist? path
	  @hash = {}
	end
	begin
	  @f = open(path, "r+")
	rescue Errno::ENOENT
	  @f = open(path, "w+")
	end
      end

      def restore
	unless @hash
	  @hash = {}
	  @f.flock File::LOCK_EX
	  @f.rewind
	  @hash = Marshal.load(@f)
	end
	@hash
      end

      def update
	return unless @hash
	@f.rewind
		File.open("/tmp/h.h","w+") { |f|
			f.print "class of @hash is '#{@hash.class.to_s}'\n"
			f.print @hash.inspect + "\n"
			@hash.each { |k,v|
				f.print "'#{k.to_s}' (#{k.class.to_s}) => '#{v.to_s}' (#{v.class.to_s})\n"
			}
		}
	Marshal.dump(@hash, @f)
	@f.truncate @f.tell
      end

      def close
	return if @f.closed?
	update
	@f.close
      end

      def delete
	path = @f.path
	@f.close
	File::unlink path
      end
    end











    class FileStore
      def check_id(id)
	/[^0-9a-zA-Z]/ =~ id.to_s ? false : true
      end

      def initialize(session, option={})
	dir = option['tmpdir'] || ENV['TMP'] || '/tmp'
	prefix = option['prefix'] || ''
	id = session.session_id
	unless check_id(id)
	  raise ArgumentError, "session_id `%s' is invalid" % id
	end
	path = dir+"/"+prefix+id
	path.untaint
	unless File::exist? path
	  @hash = {}
	end
	begin
	  @f = open(path, "r+")
	rescue Errno::ENOENT
	  @f = open(path, "w+")
	end
      end

      def restore
	unless @hash
	  @hash = {}
	  @f.flock File::LOCK_EX
	  @f.rewind
	  for line in @f
	    line.chomp!
	    k, v = line.split('=',2)
	    @hash[CGI::unescape(k)] = CGI::unescape(v)
	  end
	end
	@hash
      end

      def update
	return unless @hash
	@f.rewind
	for k,v in @hash
	  @f.printf "%s=%s\n", CGI::escape(k), CGI::escape(String(v))
	end
	@f.truncate @f.tell
      end

      def close
	return if @f.closed?
	update
	@f.close
      end

      def delete
	path = @f.path
	@f.close
	File::unlink path
      end
    end












    class MemoryStore
      GLOBAL_HASH_TABLE = {}

      def initialize(session, option=nil)
	@session_id = session.session_id
	GLOBAL_HASH_TABLE[@session_id] ||= {}
      end

      def restore
	GLOBAL_HASH_TABLE[@session_id]
      end

      def update
	# don't need to update; hash is shared
      end

      def close
	# don't need to close
      end

      def delete
	GLOBAL_HASH_TABLE.delete(@session_id)
      end
    end
  end
end




In This Thread