From drf28 at cornell.edu  Tue Aug  2 16:11:12 2011
From: drf28 at cornell.edu (Daniel Fuka)
Date: Tue, 2 Aug 2011 10:11:12 -0400
Subject: [Rd] example package for devel newcomers
In-Reply-To: <201108020301.16636@spsconsultoria.com>
References: <201107311845.50264@spsconsultoria.com>
	<CAB9w6Xz=etsY70+ZkxJ5XRR5P9BKe6ehZqch9+bdqhzE6Ra2+Q@mail.gmail.com>
	<201108020301.16636@spsconsultoria.com>
Message-ID: <CAB9w6Xw9TCTJ9uW2GE=QaGn0HbO4jf-8gWeA-T5w1-F4DxzftA@mail.gmail.com>

Howdy again Alexandre,

This sounds interesting and valuable, though might be touching some
areas of R that makes me think others should chime in. I have a
history of encouraging behavior that is sometimes not supported by the
general public. First search does not find a project currently trying
to accomplish what you are trying to do, though someone else might
know of a similar project.

Now that I have absolved myself of responsibility {: -)  . I think
this would be kind of kewl/useful. But, I wonder if it might actually
be easier to embed one of the well tested and secured mini-apache web
servers into R, which would accomplish much of what you want to do,
and I think remove several of the questions you have. It does destroy
the "any WCMS" desire you have in a), but I think that it accomplishes
b,c,d,f, with the ability to develop out e as you interface the 2. It
also might be an easier first package type project, which will get you
used to the development environment, and it can support all OS's out
of the box.

I played with http://appwebserver.org/ this morning, and think you
might be able to frame a simple package, and do not see any major
issues in porting/wrapper'ing it yet in the first 15 minutes of
playing with it.

Could others please chime in and bail me out or shoot me down, which
ever is best?

Enjoy,
dan



On Tue, Aug 2, 2011 at 2:01 AM, Alexandre Aguiar
<asaguiar at spsconsultoria.com> wrote:
> Em Segunda 01 Agosto 2011, voc? escreveu:
>> Is there a preferred language you would like to use in your package
>> development? I randomly downloaded packages until I found some that
>> helped me along my way, and might be able to help you pick one. If you
>> are just looking at building a package of R functions and data you
>> have developed, possibly the following example will get you started
>> till you feel comfortable with the "Writing R Extensions"
>> documentation (http://cran.r-project.org/doc/manuals/R-exts.pdf):
>
> Dan, your message is cool. Well, here is what my project is about: it is a
> package to embed php into R. Named Rphp for now. It is mostly done from
> scratch. I have loved R-exts.pdf. Great stuff.
>
> Why embed php into R? My primary purpose is to use web content management
> systems (WCMS) ready and extensively tested code from R cgi scripts.
> Someone more experienced with php might think of other uses. My approach
> is RAD(ical) and innovative (IMextremelyHO :-D) because:
> a) *any* php based WCMS can be used from R code with no php or html
> coding;
> b) output fully compliant with the website appearance;
> c) WCMS automatic upgrades and interfaces changes (skins or themes) will
> be so unlikey to cause need for maintenance in R cgi scripts;
> d) R cgi scripts will not demand changes in php code;
> e) the builtin php session support obviates the need for any special
> session coding by R (likely non-web) programmers;
> f) potential for improved analysis of web databases and even of systems
> surveillance tasks.
>
> During my explorations of the R interface for extensions and the time
> spent in this tiny project, some questions emerged.
>
> 1. my code uses no recursion but I do not really know what is inside php
> code. Stack size could be a concern. Has any of you there ever needed to
> allocate a new stack for a package? Is it better to wait for complaints
> (if anyone ever would like to try this package...)?
>
> 2. can R_registerRoutines be called more than once within the same library
> (the same DllInfo data) so that it can reconfigure itself on the fly?
>
> 3. Is it safe (I guess it is) to "re-export" a function pointer retrieved
> with R_GetCCallable?
>
> 4. when loading a second library (in this case libphp5.so) is it better to
> put it in the package library directory and load it using the 'char
> *path' member of DllInfo? Using a second library has implications:
> a) a given R setup can be limited to the user space without root access;
> b) in the case of desktops where someone might use Rphp, most systems do
> not have libphp5.so installed by default and installing it frequently
> means to install apache and all (many) related packages;
> c) many sysadmins do not have root access but can compile their own php
> version;
> d) building the libphp5.so may not be an easy task for many.
>
> 5. Similar to 3, is it safe to "export" functions of the second library?
> libphp5.so will not be registered to R and has some interesting functions
> that can be "exported" directly or as pointers within Rphp library. A
> stub function can be used.
>
> 6. related to 4, with the many machine architectures and operating systems
> around I think it is neither desirable nor feasible to distribute
> precompiled libphp5.so versions; the package itself can download (wget
> and curl are everywhere) and compile php. Compiling php is not a lengthy
> task (6m12.9s in my quadcore desktop) but is a lot tricky and demands
> several development packages not installed by default in desktop systems.
> Their installations would require root access. What is the suggested
> approach to deploy libphp5.so?
>
> 7. I do not know how to produce a version for windows if requested. I have
> only an old MSC++ 97 and lcc (current) and have xp in a virtual box. This
> concern includes php. Can I get help regarding windows in this list? It
> might mean actual work: adapting code, compiling, packaging, etc. Not
> sure what is needed.
>
> 8. system safety does not seem a concern regarding this use of php, but...
> Any suggestions?
>
> I guess some manual steps will be necessary because of potential security
> breaches related to the use of a second library. Patching php to produce
> a special build to be used as the package library would not be a trivial
> task and would demand updates at every new php version. Something I can't
> assure I can do. And would have to distribute the whole php source code:
> still have to study php licensing scheme.
>
> BTW, I copied Rdynpriv.h by hand to my include path to get access
> to 'struct _DllInfo' definition. The R install process did not copy this
> file. Am I doing something wrong here?
>
> Sorry for the lengthy message. Thanx for your help.
>
> --
>
>
> Alexandre
>
> --
> Alexandre Santos Aguiar, MD, SCT
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>



[Rd] example package for devel newcomers
Daniel Fuka