EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov
PHONE :: 303.497.6469
A flower falls, even though we love it;
and a weed grows, even though we do not love it. --Dogen
---------- Forwarded message ----------
Date: Thu, 15 Jul 2004 09:33:35 -0700 (PDT)
To: Ara.T.Howard <Ara.T.Howard@noaa.gov>
Subject: scripting language
Hey A-
I'm investigating alternative scripting languages. We
currently use Perl almost exclusively (except
sometimes some ksh) but would like to consider a
language that is friendlier with the JVM. It also has
to have an LDAP API and an Oracle API, without
requiring C coding (we don't have C coders here).
My first task is to write a trivial script that
selects one row from an Oracle database. I installed
ruby for windows. I downloaded & installed ruby DBD,
which says it requires ruby OCI, which doesn't come in
binary form (i.e. requires me to compile it with a c
compiler, which I don't have on my windows box).
That's probably more rigamarole than several of these
other languages require. And the libraries themselves
seem to be mostly alpha software with the last update
sometime in 2003.
I'm struck by the elegance of ruby and I'd really like
to try and make it work, but am having a hard time
fitting it into the production realities of our shop.
I'm getting the impression that a C shop could really
take the language and run with it, but a
cobol/SQL/java shop like ours may be out of luck. Do
you have any encouraging words/links before I move on?
I'm investigating alternative scripting languages. We
currently use Perl almost exclusively (except
sometimes some ksh) but would like to consider a
language that is friendlier with the JVM. It also has
to have an LDAP API and an Oracle API, without
requiring C coding (we don't have C coders here).
Well, first of all, he should take a look at zsh if they use ksh.
Secondly, it seems a bit odd to me that a cobol/SQL/Java shop wouldn't even be able to compile C code. I assume there's no programming in getting the Ruby OCI to work, just compiling. I suppose if they're on Windows instead of Linux, OS X or a BSD then they might not have a C compiler handy. *shrug*
I guess it's common for Windows packages to be distributed as compiled binaries, but from a brief glance, this Ruby OCI interface seems to be geared more towards Unixish users (it's distributed as a tar.gz file).
Maybe Ruby just isn't what they need, but I would bet that it wouldn't be too hard to find a kind soul to compile the API for them if they don't want to bother with installing a compiler.
I'm investigating alternative scripting languages. We
currently use Perl almost exclusively (except
sometimes some ksh) but would like to consider a
language that is friendlier with the JVM. It also has
to have an LDAP API and an Oracle API, without
requiring C coding (we don't have C coders here).
I hesitate to suggest a language other than Ruby, but if they want something
that's friendly with the JVM, I wonder if they should be looking at Groovy?
> EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov
> PHONE :: 303.497.6469
> A flower falls, even though we love it;
> and a weed grows, even though we do not love it. | --Dogen
Date: Thu, 15 Jul 2004 09:33:35 -0700 (PDT)
To: Ara.T.Howard <Ara.T.Howard@noaa.gov>
Subject: scripting language
Hey A-
I'm investigating alternative scripting languages. We
currently use Perl almost exclusively (except
sometimes some ksh) but would like to consider a
language that is friendlier with the JVM. It also has
to have an LDAP API and an Oracle API, without
requiring C coding (we don't have C coders here).
My first task is to write a trivial script that
selects one row from an Oracle database. I installed
ruby for windows. I downloaded & installed ruby DBD,
which says it requires ruby OCI, which doesn't come in
binary form (i.e. requires me to compile it with a c
compiler, which I don't have on my windows box).
That's probably more rigamarole than several of these
other languages require. And the libraries themselves
seem to be mostly alpha software with the last update
sometime in 2003.
I'm struck by the elegance of ruby and I'd really like
to try and make it work, but am having a hard time
fitting it into the production realities of our shop.
I'm getting the impression that a C shop could really
take the language and run with it, but a
cobol/SQL/java shop like ours may be out of luck. Do
you have any encouraging words/links before I move on?
Has anyone ever reverse-engineered a network protocol before? It would certainly be nice to have a "pure-ruby" driver for Oracle, so that it could be used right out of the box on any platform, like the thin JDBC drivers for Oracle.
I took a glance at some of the packets exchanged with our Oracle db here and it looks like it might not be too difficult to come up with... but then again, I'm probably hopelessly naive on this score, having never even attempted to reverse engineer a protocol before. In fact, I don't even know what the legal issues surrounding this would be.
Isn't there source code for the oci oracle protocol out there? A lot
of open source projects have that option. I'm thinking of PHP. You
might want to look at the source before you try reverse-engineering
anything.
Ara.T.Howard wrote:
>
> got this from a friend... any thoughts?
>
> -a
> --
> ===============================================================================
>
> > EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov
> > PHONE :: 303.497.6469
> > A flower falls, even though we love it;
> > and a weed grows, even though we do not love it. | --Dogen
> ===============================================================================
>
>
> ---------- Forwarded message ----------
> Date: Thu, 15 Jul 2004 09:33:35 -0700 (PDT)
> To: Ara.T.Howard <Ara.T.Howard@noaa.gov>
> Subject: scripting language
>
> Hey A-
>
> I'm investigating alternative scripting languages. We
> currently use Perl almost exclusively (except
> sometimes some ksh) but would like to consider a
> language that is friendlier with the JVM. It also has
> to have an LDAP API and an Oracle API, without
> requiring C coding (we don't have C coders here).
>
> My first task is to write a trivial script that
> selects one row from an Oracle database. I installed
> ruby for windows. I downloaded & installed ruby DBD,
> which says it requires ruby OCI, which doesn't come in
> binary form (i.e. requires me to compile it with a c
> compiler, which I don't have on my windows box).
>
> That's probably more rigamarole than several of these
> other languages require. And the libraries themselves
> seem to be mostly alpha software with the last update
> sometime in 2003.
>
> I'm struck by the elegance of ruby and I'd really like
> to try and make it work, but am having a hard time
> fitting it into the production realities of our shop.
> I'm getting the impression that a C shop could really
> take the language and run with it, but a
> cobol/SQL/java shop like ours may be out of luck. Do
> you have any encouraging words/links before I move on?
Has anyone ever reverse-engineered a network protocol before? It would
certainly be nice to have a "pure-ruby" driver for Oracle, so that it
could be used right out of the box on any platform, like the thin JDBC
drivers for Oracle.
I took a glance at some of the packets exchanged with our Oracle db here
and it looks like it might not be too difficult to come up with... but
then again, I'm probably hopelessly naive on this score, having never
even attempted to reverse engineer a protocol before. In fact, I don't
even know what the legal issues surrounding this would be.
it's not so much not wanting to bother it's 'which compiler to
install'
how many ruby modules have vc++ source, how many use cygwin,
mingw32 (standalone), lcc, pelles, etc.
i'd say the 'standard' for c code under windows is vc++, but that
costs money, and if the source code doesn't include the appropriate
makefile (or project file).
when it comes to ruby, if the module doesn't include vc++
source/makefile, or a windows binary, i have to let it go, no matter
how much i want to use it.
···
On Fri, 16 Jul 2004 02:16:36 +0900, you wrote:
I suppose if they're on
Windows instead of Linux, OS X or a BSD then they might not have a C
compiler handy. *shrug*
I guess it's common for Windows packages to be distributed as compiled
if they don't want to bother with installing a compiler.
Isn't there source code for the oci oracle protocol out there? A lot
of open source projects have that option. I'm thinking of PHP. You
might want to look at the source before you try reverse-engineering
anything.
Well, looking at the OCI stuff in PHP, it looks like it relies on the Oracle client being installed as well. It then makes API calls into the Oracle client libraries to connect to and query the database.
What I would like is to remove the Oracle client as a dependency, just as the Oracle JDBC (thin) client does. The thin (as opposed to the oci) Oracle JDBC client implements in pure Java the network protocols that communicate with the Oracle database server.
This means that the thin client will ultimately be less responsive than the oci client, but its GREAT for working on your own machine.
I'm hoping that something like this can be written for Ruby, in Ruby, without the need to create an extension module in C to bridge into the Oracle OCI stuff (which is what the current ruby oracle module does).
I'm not volunteering to write it--I've got too much on my plate already--I was just wondering if anyone else has thought about doing this.
when it comes to ruby, if the module doesn't include vc++
source/makefile, or a windows binary, i have to let it go, no matter
how much i want to use it.
Modules that use the 'mkmf' library to generate their own makefiles
should support whatever compiler was used to build your installation
of Ruby. If the author hasn't used 'mkmf', or has specifically blocked
builds on Windows, there may be a good reason (i.e., compatibility
problems beyond compilers).
Lennon
···
On Mon, 19 Jul 2004 06:06:38 +0900, tony summerfelt <snowzone5@hotmail.com> wrote:
I don't do any direct work with Oracle anymore; if I were to do so, I
might look at reverse engineering this -- but I also spent the last
little while to see if anyone has come up with an open source Oracle
thin driver; it appears not.
Carl Youngblood wrote:
> Isn't there source code for the oci oracle protocol out there? A lot
> of open source projects have that option. I'm thinking of PHP. You
> might want to look at the source before you try reverse-engineering
> anything.
>
Well, looking at the OCI stuff in PHP, it looks like it relies on the
Oracle client being installed as well. It then makes API calls into the
Oracle client libraries to connect to and query the database.
What I would like is to remove the Oracle client as a dependency, just
as the Oracle JDBC (thin) client does. The thin (as opposed to the oci)
Oracle JDBC client implements in pure Java the network protocols that
communicate with the Oracle database server.
This means that the thin client will ultimately be less responsive than
the oci client, but its GREAT for working on your own machine.
I'm hoping that something like this can be written for Ruby, in Ruby,
without the need to create an extension module in C to bridge into the
Oracle OCI stuff (which is what the current ruby oracle module does).
I'm not volunteering to write it--I've got too much on my plate
already--I was just wondering if anyone else has thought about doing this.
Couldn't the thin client be written in C and then wrapped in every
scripting language imaginable? If so, *is* there an Oracle thin
client library written in C already?
Gavin
···
On Friday, July 16, 2004, 5:25:47 AM, Jamis wrote:
What I would like is to remove the Oracle client as a dependency, just
as the Oracle JDBC (thin) client does. The thin (as opposed to the oci)
Oracle JDBC client implements in pure Java the network protocols that
communicate with the Oracle database server.
This means that the thin client will ultimately be less responsive than
the oci client, but its GREAT for working on your own machine.
I'm hoping that something like this can be written for Ruby, in Ruby,
without the need to create an extension module in C to bridge into the
Oracle OCI stuff (which is what the current ruby oracle module does).
Isn't there source code for the oci oracle protocol out there? A lot
of open source projects have that option. I'm thinking of PHP. You
might want to look at the source before you try reverse-engineering
anything.
Well, looking at the OCI stuff in PHP, it looks like it relies on the
Oracle client being installed as well. It then makes API calls into the
Oracle client libraries to connect to and query the database.
What I would like is to remove the Oracle client as a dependency, just
as the Oracle JDBC (thin) client does. The thin (as opposed to the oci)
Oracle JDBC client implements in pure Java the network protocols that
communicate with the Oracle database server.
This means that the thin client will ultimately be less responsive than
the oci client, but its GREAT for working on your own machine.
I'm hoping that something like this can be written for Ruby, in Ruby,
without the need to create an extension module in C to bridge into the
Oracle OCI stuff (which is what the current ruby oracle module does).
I'm not volunteering to write it--I've got too much on my plate
already--I was just wondering if anyone else has thought about doing this.
I don't do any direct work with Oracle anymore; if I were to do so, I
might look at reverse engineering this -- but I also spent the last
little while to see if anyone has come up with an open source Oracle
thin driver; it appears not.
-austin
Are there dynamic libraries that do this? If the API is documented, maybe its just a matter of creating Ruby wrappers using ext/dl or swig.
On Friday, July 16, 2004, 5:25:47 AM, Jamis wrote:
What I would like is to remove the Oracle client as a dependency, just
as the Oracle JDBC (thin) client does. The thin (as opposed to the oci)
Oracle JDBC client implements in pure Java the network protocols that
communicate with the Oracle database server.
This means that the thin client will ultimately be less responsive than
the oci client, but its GREAT for working on your own machine.
I'm hoping that something like this can be written for Ruby, in Ruby,
without the need to create an extension module in C to bridge into the
Oracle OCI stuff (which is what the current ruby oracle module does).
Couldn't the thin client be written in C and then wrapped in every
scripting language imaginable? If so, *is* there an Oracle thin
client library written in C already?
Gavin
The client *could*, of course be written in C. To my knowledge, such an implementation does not exist. (Might be a neat project, in fact.)
However, that still doesn't address the OP's original concern: lack of a compiler made a C extension impractical. A *pure Ruby* implementation would still be most convenient, though not as efficient.
This may sound heretical on a Ruby mailing list, but it sounds like
what they need is *not* Ruby. If they're a Java shop, and are using
backends (Oracle, LDAP) which are already well-supported on the Java
platform, it seems like investing heavily in a C-based language
runtime probably won't be in their best interests.
I second the earlier recommendation to consider Groovy, and think
JRuby could work as well.
"Gavin Sinclair" <gsinclair@soyabean.com.au> schrieb im Newsbeitrag
news:37-1673990922.20040716083653@soyabean.com.au...
> What I would like is to remove the Oracle client as a dependency, just
> as the Oracle JDBC (thin) client does. The thin (as opposed to the
oci)
> Oracle JDBC client implements in pure Java the network protocols that
> communicate with the Oracle database server.
> This means that the thin client will ultimately be less responsive
than
> the oci client, but its GREAT for working on your own machine.
> I'm hoping that something like this can be written for Ruby, in Ruby,
> without the need to create an extension module in C to bridge into the
> Oracle OCI stuff (which is what the current ruby oracle module does).
Couldn't the thin client be written in C and then wrapped in every
scripting language imaginable? If so, *is* there an Oracle thin
client library written in C already?
AFAIK there is a lib containing the OCI code (pure C). So IMHO it should
be feasible to build a shared lib for each platform supported by Oracle
and link Oracle's code in.
Then there's still the legal issue. I figure Oracle could be grateful for
each added language with built in Oracle support.
But I may be wrong.
robert
···
On Friday, July 16, 2004, 5:25:47 AM, Jamis wrote:
Isn't there source code for the oci oracle protocol out there? A lot
of open source projects have that option. I'm thinking of PHP. You
might want to look at the source before you try reverse-engineering
anything.
Well, looking at the OCI stuff in PHP, it looks like it relies on the
Oracle client being installed as well. It then makes API calls into the
Oracle client libraries to connect to and query the database.
What I would like is to remove the Oracle client as a dependency, just
as the Oracle JDBC (thin) client does. The thin (as opposed to the oci)
Oracle JDBC client implements in pure Java the network protocols that
communicate with the Oracle database server.
This means that the thin client will ultimately be less responsive than
the oci client, but its GREAT for working on your own machine.
I'm hoping that something like this can be written for Ruby, in Ruby,
without the need to create an extension module in C to bridge into the
Oracle OCI stuff (which is what the current ruby oracle module does).
I'm not volunteering to write it--I've got too much on my plate
already--I was just wondering if anyone else has thought about doing this.
I don't do any direct work with Oracle anymore; if I were to do so, I
might look at reverse engineering this -- but I also spent the last
little while to see if anyone has come up with an open source Oracle
thin driver; it appears not.
-austin
Are there dynamic libraries that do this? If the API is documented, maybe its just a matter of creating Ruby wrappers using ext/dl or swig.
That's just the thing... in order to use the API, you have to have the oracle client installed. What if you don't have access to the oracle client? What if you don't want to install it? It is, after all, quite large. What if (*gasp*) you're using an OS that isn't supported by the oracle client?
What I am referring to is a pure Ruby client that communicates via TCP with the Oracle database server, wherever it may be.
There are already ruby modules that communicate with oracle via its API. The problem is that the OP doesn't have access to a compiler and the oracle modules aren't distributed in binary form. Thus, a pure Ruby solution would (IMO) be desirable.
I bet that ethereal would come in handy for reverse engineering the
protocol. Just set it up to capture the network traffic, run a bunch
of queries on a machine that has the client installed and then dump
the traffic to a file for detailed analysis.
Long time ago I wrote a oracle client module using Ruby/DL which connected to oracle via Oracle OCI API. There was also a DBD wrapper for this module, so I could use it via DBI interface. So if you do not have a compiler installed but you have Oracle client installed, you can use this module. At that time I tested it only on my WinXP box, and since this is the pure ruby module there are some performance drawbacks as well.
On Friday, July 16, 2004, 5:25:47 AM, Jamis wrote:
What I would like is to remove the Oracle client as a dependency, just
as the Oracle JDBC (thin) client does. The thin (as opposed to the oci)
Oracle JDBC client implements in pure Java the network protocols that
communicate with the Oracle database server.
This means that the thin client will ultimately be less responsive than
the oci client, but its GREAT for working on your own machine.
I'm hoping that something like this can be written for Ruby, in Ruby,
without the need to create an extension module in C to bridge into the
Oracle OCI stuff (which is what the current ruby oracle module does).
Couldn't the thin client be written in C and then wrapped in every
scripting language imaginable? If so, *is* there an Oracle thin
client library written in C already?
Gavin
The client *could*, of course be written in C. To my knowledge, such an implementation does not exist. (Might be a neat project, in fact.)
However, that still doesn't address the OP's original concern: lack of a compiler made a C extension impractical. A *pure Ruby* implementation would still be most convenient, though not as efficient.
Lennon Day-Reynolds <rcoder@gmail.com> wrote in message news:<5d4c6124040715163445c0fa21@mail.gmail.com>...
This may sound heretical on a Ruby mailing list, but it sounds like
what they need is *not* Ruby. If they're a Java shop, and are using
backends (Oracle, LDAP) which are already well-supported on the Java
platform, it seems like investing heavily in a C-based language
runtime probably won't be in their best interests.
I second the earlier recommendation to consider Groovy, and think
JRuby could work as well.