[#397988] Help with sqlite3 please — Kaye Ng <lists@...>

I'm on Windows 7 Ultimate, 64-bit

18 messages 2012/08/03
[#397989] Re: Help with sqlite3 please — Chris Hulan <chris.hulan@...> 2012/08/03

sqlite is not ruby, so you should look for a sqlite group ;)

[#397990] Re: Help with sqlite3 please — Kaye Ng <lists@...> 2012/08/03

> However it looks like you have 'SQL' at the beginning of your CREATE

[#398031] Gem install or usage problem in shared environment — Tom Moulton <lists@...>

I am moving to a Westhost shared CPanel account and I am trying to set

17 messages 2012/08/04
[#398077] Re: Gem install or usage problem in shared environment — Tom Moulton <lists@...> 2012/08/06

I got a solution from WestHost and it may help others:

[#398086] Re: Gem install or usage problem in shared environment — Ryan Davis <ryand-ruby@...> 2012/08/07

[#398088] Re: Gem install or usage problem in shared environment — Tom Moulton <lists@...> 2012/08/07

Ryan Davis wrote in post #1071503:

[#398043] Redefining constants for a given instance only — "Andrea Dallera" <andrea@...>

Hello,=0A=0A=C2=A0 =C2=A0 let's say we have two empty classes:=0A=0Aclass=

9 messages 2012/08/05

[#398063] Join with ActiveRecord using non-standard schema — Tedi Roca <lists@...>

Hi,

13 messages 2012/08/06

[#398135] Help with database-related code pls — Kaye Ng <lists@...>

Hi guys! This is just a part of the code of a program that can load a

12 messages 2012/08/08

[#398190] How do you order your class methods? — masta Blasta <lists@...>

Just getting some layout ideas from other fellow devs.

11 messages 2012/08/10

[#398245] namespace instance methods? — John Doe <lists@...>

I have a large class with many instance methods that I want to

14 messages 2012/08/13

[#398287] Idea: def ... end returns the symbolized version of the newly-defined method, instead of nil — Peter <lumbergh@...>

This would allow useful syntax constructs such as this:

9 messages 2012/08/13

[#398362] case vs if-else — ajay paswan <lists@...>

Which one is faster?

20 messages 2012/08/16

[#398385] A Ruby class is never closed — Rubyist Rohit <lists@...>

Is it true that a Ruby class definition is never closed? Even after

18 messages 2012/08/16

[#398504] How to create an EXecutable file (Linux) — Fosiul Alam <lists@...>

Hi

13 messages 2012/08/22

[#398506] Save a file by clicking on a link — ajay paswan <lists@...>

I clicked a link to download a file using ruby, now I see the open-save

41 messages 2012/08/22

[#398641] force child threads run paralelly? — ajay paswan <lists@...>

I have created two child thread using main thread- child1 and child2.

19 messages 2012/08/28
[#398644] Re: force child threads run paralelly? — ajay paswan <lists@...> 2012/08/28

Ruby version:

[#398648] Re: force child threads run paralelly? — Tony Arcieri <tony.arcieri@...> 2012/08/28

On Tue, Aug 28, 2012 at 7:19 AM, ajay paswan <lists@ruby-forum.com> wrote:

[#398684] Can I do this with Ruby and sqlite alone? — Kaye Ng <lists@...>

Hi guys.

16 messages 2012/08/29

Re: working with large binary strings?

From: Sung Pae <sungpae@...>
Date: 2012-08-01 08:04:25 UTC
List: ruby-talk #397939
bob hope <lists@ruby-forum.com> writes:

> The goal is, with 4 random strings, to make a 4th random string that
> xors to 0 for each row with the other strings.

I have no idea what you're trying to accomplish, but here are some tips:

> I don't know how to concatenate with a number so that is why I make it
> a string here.

Strings are the proper format for transferring and storing binary data.
You just have to work on them in chunks.

> require "securerandom"
> require "openssl"
>
> a = SecureRandom.random_bytes(1_000_000).unpack("B*")[0]
> b = SecureRandom.random_bytes(1_000_000).unpack("B*")[0]
> c = SecureRandom.random_bytes(1_000_000).unpack("B*")[0]
> d = SecureRandom.random_bytes(1_000_000).unpack("B*")[0]

SecureRandom.random_bytes returns a string with each byte containing
a random value from 0x00 to 0xff. You are converting each byte into
an 8-byte string representation of this number, which is incredibly
wasteful.

    SecureRandom.random_bytes(len).unpack('C*')

will return the string as an array of `len` unsigned integers, which you
can then XOR without any more string conversions.

>  vsb = ""
>  100_000.times do |x|

Why 100,000 when you have created strings of 8,000,000 characters in
length?

>  puts x
>  column = a[x].to_i ^ b[x].to_i ^ c[x].to_i ^ d[x].to_i ^ 0

This code actually XORs a single _bit_ at a time.

If you have arrays of integers, you can XOR byte(s) at a time without
string conversions.

Also, n XOR 0 always returns n, so that part does nothing. If this is an
important part of your algorithm, I think you need to think this through
a bit longer.

>  case column
>  when 0
>    vsb << 0.to_s
>    else
>    vsb << 1.to_s
>  end

This is very circuitous. You already have the value 0 or 1, so just push
it onto `vsb` directly!

> end
>
> puts vsb.to_i

Why does vsb need to be a number? Numbers larger than your CPU's native
bit size are very inefficient to work with. Binary data should be passed
around as a string.

If I am understanding you, this is what you want: [1]

    len = 1_000_000
    a, b, c, d = 4.times.map { SecureRandom.random_bytes(len).unpack 'L*' }
    (len/4).times.map { |i| a[i] ^ b[i] ^ c[i] ^ d[i] }.pack 'L*'

However, this is totally useless, since the input is random, and 4
random inputs XORed together are equivalent to a single random input.

If you're planning on supplying your own data, this smells an awful lot
like home-rolled encryption, which is either admirable or horrifying
depending on your goal.

HTH
guns

[1]: Note that I am chunking the string into 32-bit unsigned longs for
     performance


In This Thread