[#387246] newbie question — sunny parker <info@2020proj.com>

i am coming from php and dont seem to quite understand how ruby works

13 messages 2011/09/01

[#387330] installing naive bayes classifier — aya abdelsalam <ayoya_91@...>

Hello

10 messages 2011/09/02

[#387344] Beginner needing help - Writing right-angle triangle program — Kane Williams <theburrick@...>

I've been going through a Haskell tutorial (Just to see what it's like)

12 messages 2011/09/03

[#387356] Which version should I download? — Vladimir Van Bauenhoffer <cluny_gisslaren@...>

Im new to programming and Im thinking of downloading and starting with

17 messages 2011/09/03

[#387392] loops problem — jack jones <shehio_22@...>

for (j = @array.length ; j > counter ; j = j-1) # counter is a variable

13 messages 2011/09/04

[#387469] posts on Unix systems programming — Eric Wong <normalperson@...>

I would like to do a series of mailing list posts on the subject of Unix

28 messages 2011/09/06

[#387530] Unexpected behavior of Ruby array — Suvankar Satpati <suvankar.17@...>

I was going through the exercises at http://rubykoans.com/ and got

11 messages 2011/09/08

[#387544] Executing the output of a look — dwight schrute <spambocks@...>

Hi,

14 messages 2011/09/08

[#387586] Creating a hash from two arrays — simon harrison <simonharrison.uk@...>

Hi. Can anyone help with this? I'd like to end with a hash like so:

15 messages 2011/09/09

[#387596] newbie ruby installation malloc issue — "mark e." <mark_f_edwards@...>

hi all -

12 messages 2011/09/09

[#387614] how to write data in binary to a file? — frank hi <yw_hi@163.com>

Hi,

11 messages 2011/09/10

[#387646] How do I make output generate a float without an excess numbers of decimal places? — Kane Williams <theburrick@...>

For example, my current code is

11 messages 2011/09/11

[#387725] Any downsides to writing paranthesises? — Vladimir Van Bauenhoffer <cluny_gisslaren@...>

Im a newbie programmer who is trying to learn Ruby after having just

18 messages 2011/09/12

[#387811] Get interpreter path — Michal Suchanek <hramrach@...>

Hello,

26 messages 2011/09/14
[#387842] Re: Get interpreter path — Phillip Gawlowski <cmdjackryan@...> 2011/09/14

On Wed, Sep 14, 2011 at 3:35 PM, Michal Suchanek <hramrach@centrum.cz> wrote:

[#387844] Re: Get interpreter path — Michal Suchanek <hramrach@...> 2011/09/14

On 14 September 2011 20:47, Phillip Gawlowski <cmdjackryan@gmail.com> wrote:

[#387814] Tough Ruby Homework — Rory Pascua <rorypascua@...>

I'm trying to take a long piece of text, find a word, and get that word

18 messages 2011/09/14

[#387853] Can I Safely Use Rubinius While Learning? — Aaron Jackson <jacksonaaronc@...>

Greetings,

18 messages 2011/09/15

[#387915] Some newbie questions — Vladimir Van Bauenhoffer <cluny_gisslaren@...>

I got some newbie questions which I would very much appreciate if

14 messages 2011/09/15

[#388003] Ruby Speed Question — Kevin Anon <oblivious.sage@...>

Wrote my first Ruby program recently for a class assignment where we had

12 messages 2011/09/18

[#388078] appending \n to each element in an array — Joe Collins <joec_49@...>

I have an array

13 messages 2011/09/20

[#388123] Turning on a special program at special time and turning off the computer at another special time — "amir e." <aef1370@...>

I decided to write a program in RUBY wherein these items have been done

11 messages 2011/09/21
[#388124] Re: Turning on a special program at special time and turning off the computer at another special time — andrew mcelroy <sophrinix@...> 2011/09/21

That sounds like a program a special program a terrorist would write. Are

[#388198] Conditional statements with multiple arguments — "Thomas B." <sinixlol@...>

Good afternoon everyone,

18 messages 2011/09/24

[#388203] Ruby 1.9.3 RC1 is out — "Yuki Sonoda (Yugui)" <yugui@...>

-----BEGIN PGP SIGNED MESSAGE-----

19 messages 2011/09/24
[#388208] Re: [ANN] Ruby 1.9.3 RC1 is out — Quintus <sutniuq@...> 2011/09/24

-----BEGIN PGP SIGNED MESSAGE-----

[#388209] Re: [ANN] Ruby 1.9.3 RC1 is out — Chris White <cwprogram@...> 2011/09/24

[#388214] Re: [ANN] Ruby 1.9.3 RC1 is out — Quintus <sutniuq@...> 2011/09/24

-----BEGIN PGP SIGNED MESSAGE-----

[#388216] Re: [ANN] Ruby 1.9.3 RC1 is out — Yusuke Endoh <mame@...> 2011/09/24

Hello,

[#388248] Looking for better/familiar approach to command line opts — "Perl J." <perljunkie@...>

So I guess the warning to the reader upfront is... I'm a bit of a Perl

14 messages 2011/09/25

[#388333] Get all classes from a list of files — Jeroen van Ingen <jeroeningen@...>

I have a list of ruby files. I would like to create objects from all

11 messages 2011/09/28

[#388342] Ruby Syntax @keywords ||= [ ] — Bhavesh Sharma <sharmabhavesh@...>

Sorry if this comes across as a dumb question, but what does the

11 messages 2011/09/28

[#388366] IO.readlines will not accept variable with file name Why? — Joda jenson <jodajen2@...>

I am fairly new to Ruby and I am stuck on this. Would someone have a

13 messages 2011/09/29
[#388368] Re: IO.readlines will not accept variable with file name Why? — Robert Klemme <shortcutter@...> 2011/09/29

On Thu, Sep 29, 2011 at 11:14 AM, Joda jenson <jodajen2@yahoo.com> wrote:

File::BINARY does not behave as advertised. How do I help to fix this?

From: Cameron Pope <camerooni@...>
Date: 2011-09-12 16:47:11 UTC
List: ruby-talk #387719
I noticed some anamolous behavior opening files with the file mode
flags. If the default internal encoding is set, when using the file
mode flags to open a file, the file's external encoding is set to
something other than ASCII-8BIT, which can cause binary file
operations (such as Marshal.dump) to blow up.

Please forgive the long message, and let me know if it would be more
appropriate to open some issues, but since I've never posted an Ruby
issue before, I wanted to make sure I was not being naive and that I
understand what is really going on.

Here is a simple example of what I mean:

  #/usr/bin/env ruby
  Encoding.default_internal = 'UTF-8'

  File.open('test',File::CREAT | File::RDWR | File::BINARY) do |f|
    # This should be ASCII-8BIT, right? At least according to io.c, line 10792
    puts "Integer Flags Encoding: #{f.external_encoding.to_s}"
  end

  File.open('test2','w+b') do |f|
    # This actually is ASCII-8BIT
    puts "String Mode Encoding: #{f.external_encoding.to_s}"
  end

And running it:

  file-binary-test cpope$  ruby simple_file_test.rb
  Integer Flags Encoding: UTF-8
  String Mode Encoding: ASCII-8BIT

I don't think that is the intended behavior. If I look at IO.c in the
latest Ruby code snapshot:

  --- io.c (last night's snapshot)
  10792 #ifndef O_BINARY
  10793 # define  O_BINARY 0
  10794 #endif
  10795     /* disable line code conversion and make ASCII-8BIT */
  10796     rb_file_const("BINARY", INT2FIX(O_BINARY));

As one can see above, first of all, File::BINARY will be zero in every
case that I can suss out in the Ruby source code - there is nowhere in
the 1.9.x codebase I can see that defines O_BINARY to be anything but
zero, and as was empirically demonstrated above, opening a file with
this constant will not set the encoding to ASCII-8BIT. What is really
bad about this is when using the integer flags to open a file, there
is not a good way to check if a developer intended for a it to be
opened as a binary file. There is, of course, a way to manually
specify the encoding for a file opened with the integer flags, which
would be the right thing to do in the case above.

So my first question is: How do we address this deficiency? I can't
think of a better way than to document the 'catch' with using the
integer flags in this case. I've noticed that many of the File
constants aren't documented, so I'm happy to give it a shot if that's
the best approach.

But this brings us to another issue. There are some places in the Ruby
standard library that depend on File::BINARY actually opening a file
suitable for writing Binary data. For example, in PStore:

At the top of lib/pstore.rb
   96 class PStore
   97   binmode = defined?(File::BINARY) ? File::BINARY : 0
   98   RDWR_ACCESS = File::RDWR | File::CREAT | binmode
   99   RD_ACCESS = File::RDONLY | binmode
  100   WR_ACCESS = File::WRONLY | File::CREAT | File::TRUNC | binmode

These flags are passed to the bottlenecks that open the data file for
reading and writing. Because it is using the integer constants to
define how the file is opened, it's not hard to make PStore blow up in
the course or normal operation. To conserve space, I've put some
sample code in this gist: https://gist.github.com/1211614

So my second thought is that this is an issue with the PStore library,
and that it would be appropriate to modify the file bottlenecks so
they explicitly specify ASCII-8BIT as the file encoding. Is there any
reason that I'm off target and I should not log that as an issue with
a test and a patch?

Apologies in advance if I am using the wrong forum or am totally
off-base with my questions.

Thank you for your time,
Cameron

In This Thread

Prev Next