[Rprotobuf-commits] r874 - papers/jss

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Sun Mar 16 23:44:21 CET 2014


Author: edd
Date: 2014-03-16 23:44:21 +0100 (Sun, 16 Mar 2014)
New Revision: 874

Modified:
   papers/jss/article.Rnw
   papers/jss/article.bib
Log:
first pass concerning JSS comments

- cite all software: added Rserve
- "replication more accessible": huh?
- sentence style for \section, \subsection
- sentence style for \caption
- sentence style for column captions in tables
- quote argument to data() and library() 
- remove comments from quoted code
- adjust linebreak of first code example table
- reference to 'Springer-Verlag'
- title style for references


Modified: papers/jss/article.Rnw
===================================================================
--- papers/jss/article.Rnw	2014-03-11 03:51:59 UTC (rev 873)
+++ papers/jss/article.Rnw	2014-03-16 22:44:21 UTC (rev 874)
@@ -242,7 +242,7 @@
 \begin{center}
 \includegraphics[width=\textwidth]{figures/protobuf-distributed-system-crop.pdf}
 \end{center}
-\caption{Example protobuf usage}
+\caption{Example ussage of Protocol Buffers.}
 \label{fig:protobuf-distributed-usecase}
 \end{figure}
 
@@ -252,7 +252,8 @@
 Protocol Buffer in \proglang{R} that is then serialized and sent over the network to a
 remote server.  The server would then deserialize the message, act on the
 request, and respond with a new Protocol Buffer over the network. 
-The key difference to, say, a request to an \pkg{Rserve} instance is that
+The key difference to, say, a request to an \pkg{Rserve} 
+\citep{Urbanek:2003:Rserve,CRAN:Rserve} instance is that
 the remote server may be implemented in any language, with no
 dependence on \proglang{R}.
 
@@ -278,34 +279,36 @@
 
 \noindent
 \begin{table}
-\begin{tabular}{p{.40\textwidth}p{0.55\textwidth}}
+\begin{tabular}{p{0.45\textwidth}p{0.5\textwidth}}
 \toprule
-Schema : \texttt{addressbook.proto} & Example \proglang{R} Session\\
+Schema : \texttt{addressbook.proto} & Example \proglang{R} session\\
 \cmidrule{1-2}
 \begin{minipage}{.40\textwidth}
 \vspace{2mm}
 \begin{example}
 package tutorial;
 message Person {
- required string name = 1;
- required int32 id = 2;
- optional string email = 3;
- enum PhoneType {
-   MOBILE = 0; HOME = 1;
-   WORK = 2;
- }
- message PhoneNumber {
-   required string number = 1;
-   optional PhoneType type = 2;
- }
- repeated PhoneNumber phone = 4;
+  required string name = 1;
+  required int32 id = 2;
+  optional string email = 3;
+  enum PhoneType {
+    MOBILE = 0; 
+    HOME = 1;
+    WORK = 2;
+  }
+  message PhoneNumber {
+    required string number = 1;
+    optional PhoneType type = 2;
+  }
+  repeated PhoneNumber phone = 4;
 }
 \end{example}
 \vspace{2mm}
 \end{minipage} & \begin{minipage}{.55\textwidth}
 <<echo=TRUE>>=
-library(RProtoBuf)
-p <- new(tutorial.Person,id=1,name="Dirk")
+library("RProtoBuf")
+p <- new(tutorial.Person, id=1,
+         name="Dirk")
 p$name
 p$name <- "Murray"
 cat(as.character(p))
@@ -335,7 +338,7 @@
 on the named fields of the specified message type, as described in the
 next section.
 
-\section{Basic Usage: Messages and descriptors}
+\section{Basic usage: Messages and descriptors}
 \label{sec:rprotobuf-basic}
 
 This section describes how to use the \proglang{R} API to create and manipulate
@@ -463,17 +466,17 @@
 @
 
 \texttt{serialize} can also be called in a more traditional
-object oriented fashion using the dollar operator:
+object oriented fashion using the dollar operator.
 
 <<>>=
-# serialize to a file
 p$serialize(tf1)
-# serialize to a binary connection
 con <- file(tf2, open = "wb")
 p$serialize(con)
 close(con)
 @
 
+Here, we first serialize to a file \code{tf1} before we serialize to a binary
+connection to file \code{tf2}.
 
 \subsection{Parsing messages}
 
@@ -504,10 +507,9 @@
 writeLines(as.character(message))
 @
 
-Finally, the payload of the message can be used:
+Finally, the raw vector payload of the message can be used:
 
 <<>>=
-# reading the raw vector payload of the message
 payload <- readBin(tf1, raw(0), 5000)
 message <- read(tutorial.Person, payload)
 @
@@ -517,17 +519,17 @@
 object:
 
 <<>>=
-# reading from a file
 message <- tutorial.Person$read(tf1)
-# reading from a binary connection
 con <- file(tf2, open = "rb")
 message <- tutorial.Person$read(con)
 close(con)
-# read from the payload
 message <- tutorial.Person$read(payload)
 @
 
+Here we read first from a file, then from a binary connection and lastly from
+a message payload.
 
+
 \section{Under the hood: S4 classes, methods, and pseudo methods}
 \label{sec:rprotobuf-classes}
 
@@ -548,11 +550,8 @@
 \centering
 \begin{tabular}{lccl}
 \toprule
-\textbf{Class}      & 
-     \textbf{Slots} & 
-     \textbf{Methods} & 
-     \textbf{Dynamic Dispatch}\\
-\cmidrule{1-4}
+Class               & Slots & Methods & Dynamic dispatch\\
+\cmidrule{2-4}
 Message             & 2 & 20 & yes (field names)\\
 Descriptor          & 2 & 16 & yes (field names, enum types, nested types)\\
 FieldDescriptor     & 4 & 18 & no\\
@@ -562,7 +561,7 @@
 \bottomrule
 \end{tabular}
 \caption{\label{class-summary-table}Overview of class, slot, method and
-  dispatch relationships}
+  dispatch relationships.}
 \end{table}
 
 The \CRANpkg{Rcpp} package
@@ -591,7 +590,7 @@
 classes, plus \emph{dynamic dispatch} on names or types specific to a given
 object.  This functionality is implemented with the
 \texttt{.DollarNames} S3 generic function defined in the \pkg{utils}
-package.
+package that is included with \pronglang{R} \citep{r}.
 
 \subsection{Messages}
 
@@ -612,14 +611,15 @@
 \begin{small}
 \begin{tabular}{lp{10cm}}
 \toprule
-\textbf{Slot} & \textbf{Description} \\
+Slot & Description \\
 \cmidrule(r){2-2}
 \texttt{pointer} & External pointer to the \texttt{Message} object of the \proglang{C++} protobuf library. Documentation for the
 \texttt{Message} class is available from the Protocol Buffer project page. \\
 %(\url{http://code.google.com/apis/protocolbuffers/docs/reference/cpp/google.protobuf.message.html#Message}) \\
 \texttt{type} & Fully qualified name of the message. For example a \texttt{Person} message
 has its \texttt{type} slot set to \texttt{tutorial.Person} \\[.3cm]
-\textbf{Method} & \textbf{Description} \\
+
+Method & Description \\
 \cmidrule(r){2-2}
 \texttt{has} & Indicates if a message has a given field.   \\
 \texttt{clone} & Creates a clone of the message \\
@@ -646,7 +646,7 @@
 \hline
 \end{tabular}
 \end{small}
-\caption{\label{Message-methods-table}Description of slots and methods for the \texttt{Message} S4 class}
+\caption{\label{Message-methods-table}Description of slots and methods for the \texttt{Message} S4 class.}
 \end{table}
 
 \subsection{Descriptors}
@@ -668,12 +668,12 @@
 \texttt{readProtoFiles}.}.
 
 <<>>=
-tutorial.Person$email # field descriptor
+tutorial.Person$email 
 
-tutorial.Person$PhoneType # enum descriptor
+tutorial.Person$PhoneType 
 
-tutorial.Person$PhoneNumber # nested type descriptor
-# same as
+tutorial.Person$PhoneNumber 
+
 tutorial.Person.PhoneNumber
 @
 
@@ -685,14 +685,15 @@
 \begin{small}
 \begin{tabular}{lp{10cm}}
 \toprule
-\textbf{Slot} & \textbf{Description} \\
+Slot & Description \\
 \cmidrule(r){2-2}
 \texttt{pointer} & External pointer to the \texttt{Descriptor} object of the \proglang{C++} proto library. Documentation for the
 \texttt{Descriptor} class is available from the Protocol Buffer project page.\\
 %\url{http://code.google.com/apis/protocolbuffers/docs/reference/cpp/google.protobuf.descriptor.html#Descriptor} \\
 \texttt{type} & Fully qualified path of the message type. \\[.3cm]
 %
-\textbf{Method} & \textbf{Description} \\
+
+Method & Description \\
 \cmidrule(r){2-2}
 \texttt{new} & Creates a prototype of a message described by this descriptor.\\
 \texttt{read} & Reads a message from a file or binary connection.\\
@@ -719,7 +720,7 @@
 \bottomrule
 \end{tabular}
 \end{small}
-\caption{\label{Descriptor-methods-table}Description of slots and methods for the \texttt{Descriptor} S4 class}
+\caption{\label{Descriptor-methods-table}Description of slots and methods for the \texttt{Descriptor} S4 class.}
 \end{table}
 
 \subsection{Field descriptors}
@@ -736,14 +737,15 @@
 \begin{small}
 \begin{tabular}{lp{10cm}}
 \toprule
-\textbf{Slot} & \textbf{Description} \\
+Slot & Description \\
 \cmidrule(r){2-2}
 \texttt{pointer} & External pointer to the \texttt{FieldDescriptor} \proglang{C++} variable \\
 \texttt{name} & Simple name of the field \\
 \texttt{full\_name} & Fully qualified name of the field \\
 \texttt{type} & Name of the message type where the field is declared \\[.3cm]
 %
-\textbf{Method} & \textbf{Description} \\
+
+Method & Description \\
 \cmidrule(r){2-2}
 \texttt{as.character} & Character representation of a descriptor\\
 \texttt{toString} & Character representation of a descriptor (same as \texttt{as.character}) \\
@@ -767,7 +769,7 @@
 \end{tabular}
 \end{small}
 \caption{\label{fielddescriptor-methods-table}Description of slots and
-  methods for the \texttt{FieldDescriptor} S4 class}
+  methods for the \texttt{FieldDescriptor} S4 class.}
 \end{table}
 
 
@@ -798,14 +800,15 @@
 \begin{small}
 \begin{tabular}{lp{10cm}}
 \toprule
-\textbf{Slot} & \textbf{Description} \\
+Slot & Description \\
 \cmidrule(r){2-2}
 \texttt{pointer} & External pointer to the \texttt{EnumDescriptor} \proglang{C++} variable \\
 \texttt{name} & Simple name of the enum \\
 \texttt{full\_name} & Fully qualified name of the enum \\
 \texttt{type} & Name of the message type where the enum is declared \\[.3cm]
 %
-\textbf{Method} & \textbf{Description} \\
+
+Method & Description \\
 \cmidrule(r){2-2}
 \texttt{as.list} & return a named
 integer vector with the values of the enum and their names.\\
@@ -823,7 +826,8 @@
 \bottomrule
 \end{tabular}
 \end{small}
-\caption{\label{enumdescriptor-methods-table}Description of slots and methods for the \texttt{EnumDescriptor} S4 class}
+\caption{\label{enumdescriptor-methods-table}Description of slots and methods
+  for the \texttt{EnumDescriptor} S4 class.} 
 \end{table}
 
 \subsection{Enum value descriptors}
@@ -848,13 +852,14 @@
 \begin{small}
 \begin{tabular}{lp{10cm}}
 \toprule
-\textbf{Slot} & \textbf{Description} \\
+Slot & Description \\
 \cmidrule(r){2-2}
 \texttt{pointer} & External pointer to the \texttt{EnumValueDescriptor} \proglang{C++} variable \\
 \texttt{name} & simple name of the enum value \\
 \texttt{full\_name} & fully qualified name of the enum value \\[.3cm]
 %
-\textbf{Method} & \textbf{Description} \\
+
+Method & Description \\
 \cmidrule(r){2-2}
 \texttt{number} & return the number of this EnumValueDescriptor. \\
 \texttt{name} & Return the name of the enum value descriptor.\\
@@ -866,7 +871,7 @@
 \end{tabular}
 \end{small}
 \caption{\label{EnumValueDescriptor-methods-table}Description of slots
-  and methods for the \texttt{EnumValueDescriptor} S4 class}
+  and methods for the \texttt{EnumValueDescriptor} S4 class.}
 \end{table}
 
 \subsection{File descriptors}
@@ -877,14 +882,15 @@
 \begin{small}
 \begin{tabular}{lp{10cm}}
 \toprule
-\textbf{Slot} & \textbf{Description} \\
+Slot & Description \\
 \cmidrule(r){2-2}
 \texttt{pointer} & external pointer to the \texttt{FileDescriptor} object of the \proglang{C++} proto library. Documentation for the
 \texttt{FileDescriptor} class is available from the Protocol Buffer project page:
 \url{http://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.descriptor.html#FileDescriptor} \\
 \texttt{filename} & fully qualified pathname of the \texttt{.proto} file.\\
 \texttt{package} & package name defined in this \texttt{.proto} file.\\[.3cm]
-\textbf{Method} & \textbf{Description} \\
+
+Method & Description \\
 \cmidrule(r){2-2}
 \texttt{name} & Return the filename for this FileDescriptorProto.\\
 \texttt{package} & Return the file-level package name specified in this FileDescriptorProto.\\
@@ -895,7 +901,7 @@
 \bottomrule
 \end{tabular}
 \end{small}
-\caption{\label{filedescriptor-methods-table}Description of slots and methods for the \texttt{FileDescriptor} S4 class}
+\caption{\label{filedescriptor-methods-table}Description of slots and methods for the \texttt{FileDescriptor} S4 class.}
 \end{table}
 
 The class \emph{FileDescriptor} represents file descriptors in \proglang{R}.
@@ -1313,7 +1319,7 @@
 \begin{center}
 \includegraphics[width=\textwidth]{figures/histogram-mapreduce-diag1.pdf}
 \end{center}
-\caption{Diagram of MapReduce histogram generation pattern}
+\caption{Diagram of MapReduce histogram generation pattern.}
 \label{fig:mr-histogram-pattern1}
 \end{figure}
 
@@ -1352,42 +1358,39 @@
 This generates a Python module called \texttt{histogram\_pb2.py}, containing both the 
 descriptor information as well as methods to read and manipulate the histogram 
 message data.  The following simple Python script uses this generated
-module to create a histogram and write out the Protocol Buffer
+module to create a histogram (to which breakpoints and binned data are
+added), and writes out the Protocol Buffer
 representation to a file:
 
 \begin{Code}
 from histogram_pb2 import HistogramState;
 
-# Create empty Histogram message
 hist = HistogramState()
 
-# Add breakpoints and binned data set.
 hist.counts.extend([2, 6, 2, 4, 6])
 hist.breaks.extend(range(6))
 hist.name="Example Histogram Created in Python"
 
-# Output the histogram
 outfile = open("/tmp/hist.pb", "wb")
 outfile.write(hist.SerializeToString())
 outfile.close()
 \end{Code}
 
 The Protocol Buffer can then be read into \proglang{R} and converted to a native
-\proglang{R} histogram object for plotting:
+\proglang{R} histogram object for plotting. Here, the schema is read first,
+then the (serialized) histogram is read into the variable \code{hist} which
+is then converted a histogram object which is display as a plot.
 
 \begin{Code}
-library(RProtoBuf)
-library(HistogramTools)
+library("RProtoBuf")
+library("HistogramTools")
 
-# Read the Histogram schema
 readProtoFiles(package="HistogramTools")
 
-# Read the serialized histogram file.
 hist <- HistogramTools.HistogramState$read("/tmp/hist.pb")
 hist
 [1] "message of type 'HistogramTools.HistogramState' with 3 fields set"
 
-# Convert to native R histogram object and plot
 plot(as.histogram(hist))
 \end{Code}
 
@@ -1405,7 +1408,7 @@
 large-scale studies of distributed storage systems
 \citep{sciencecloud,janus}.
 
-\section{Application: Data Interchange in web Services}
+\section{Application: Data interchange in web services}
 \label{sec:opencpu}
 
 As described earlier, the primary application of Protocol Buffers is data
@@ -1466,15 +1469,12 @@
 verify that the object was transferred without loss of information.
 
 <<eval=FALSE>>=
-# Load packages
-library(RProtoBuf)
-library(httr)
+library("RProtoBuf")
+library("httr")
 
-# Retrieve and parse message
 req <- GET('https://public.opencpu.org/ocpu/library/MASS/data/Animals/pb')
 output <- unserialize_pb(req$content)
 
-# Check that no information was lost
 identical(output, MASS::Animals)
 @
 
@@ -1494,15 +1494,12 @@
 module. 
 
 \begin{verbatim}
-# Import modules
 import urllib2
 from rexp_pb2 import REXP
 
-# Retrieve message
 req = urllib2.Request('https://public.opencpu.org/ocpu/library/MASS/data/Animals/pb')
 res = urllib2.urlopen(req)
         
-# Parse rexp.proto message
 msg = REXP()
 msg.ParseFromString(res.read())
 print(msg)
@@ -1538,9 +1535,8 @@
 are contained within a list.
 
 <<eval=FALSE>>=
-#requires httr >= 0.2.99
-library(httr)
-library(RProtoBuf)
+library("httr")       #requires httr >= 0.2.99
+library("RProtoBuf")
 
 args <- list(n=42, mean=100)
 payload <- serialize_pb(args, NULL)
@@ -1553,7 +1549,6 @@
   )
 )
 
-#This is the output of stats::rnorm(n=42, mean=100)
 output <- unserialize_pb(req$content)
 print(output)
 @
@@ -1619,6 +1614,7 @@
 %\begin{appendices}
 
 \section*{Appendix: The rexp.proto schema descriptor}
+
 \label{rexp.proto}
 
 Below a print of the \texttt{rexp.proto} schema (originally designed by \cite{rhipe})

Modified: papers/jss/article.bib
===================================================================
--- papers/jss/article.bib	2014-03-11 03:51:59 UTC (rev 873)
+++ papers/jss/article.bib	2014-03-16 22:44:21 UTC (rev 874)
@@ -1,5 +1,5 @@
 @article{eddelbuettel2011rcpp,
-  title =        {Rcpp: Seamless R and C++ integration},
+  title =        {Rcpp: Seamless R and C++ Integration},
   author =       {Dirk Eddelbuettel and Romain Fran{\c{c}}ois},
   journal =      {Journal of Statistical Software},
   volume =       40,
@@ -8,14 +8,15 @@
   year =         2011
 }
 @inproceedings{dremel,
-title = {Dremel: Interactive Analysis of Web-Scale Datasets},
-author = {Sergey Melnik and Andrey Gubarev and Jing Jing Long and
-                  Geoffrey Romer and Shiva Shivakumar and Matt Tolton
-                  and Theo Vassilakis},
-year = 2010,
-URL = {http://www.vldb2010.org/accept.htm},
-booktitle = {Proc. of the 36th Int'l Conf on Very Large Data Bases},
-pages = {330-339}
+  title =        {Dremel: Interactive Analysis of Web-Scale Datasets},
+  author =       {Sergey Melnik and Andrey Gubarev and Jing Jing Long
+                  and Geoffrey Romer and Shiva Shivakumar and Matt
+                  Tolton and Theo Vassilakis},
+  year =         2010,
+  URL =          {http://www.vldb2010.org/accept.htm},
+  booktitle =    {Proc. of the 36th Int'l Conf on Very Large Data
+                  Bases},
+  pages =        {330-339}
 }
 @Manual{msgpackR,
   title =        {msgpackR: A library to serialize or unserialize data
@@ -26,11 +27,15 @@
   url =          {http://CRAN.R-project.org/package=msgpackR},
 }
 @inproceedings{sciencecloud,
-title = {Projecting Disk Usage Based on Historical Trends in a Cloud Environment},
-author  = {Murray Stokely and Amaan Mehrabian and Christoph Albrecht and Francois Labelle and Arif Merchant},
-year  = 2012,
-booktitle = {ScienceCloud 2012 Proceedings of the 3rd International Workshop on Scientific Cloud Computing},
-pages = {63--70}
+  title =        {Projecting Disk Usage Based on Historical Trends in
+                  a Cloud Environment},
+  author =       {Murray Stokely and Amaan Mehrabian and Christoph
+                  Albrecht and Francois Labelle and Arif Merchant},
+  year =         2012,
+  booktitle =    {ScienceCloud 2012 Proceedings of the 3rd
+                  International Workshop on Scientific Cloud
+                  Computing},
+  pages =        {63--70}
 }
 @inproceedings{janus,
   title =        {Janus: Optimal Flash Provisioning for Cloud Storage
@@ -58,15 +63,15 @@
   pages =        "1176--1211",
   publisher =    "Bernoulli Society for Mathematical Statistics and
                   Probability",
-  title =        "The potential and perils of preprocessing: Building
-                  new foundations",
+  title =        "The Potential and Perils of Preprocessing: Building
+                  new Foundations",
   url =          "http://dx.doi.org/10.3150/13-BEJSP16",
   volume =       19,
   year =         2013
 }
 
 @article{clinec++,
-  title =        {C++ faq},
+  title =        {C++ FAQ},
   author =       {Marshall Cline},
   journal =      {Also available as
                   http://www. parashift. com/c++-faq-lite/index. html},
@@ -91,7 +96,7 @@
 }
 
 @Manual{jsonlite,
-  title =         {jsonlite: A smarter JSON encoder/decoder for R},
+  title =         {jsonlite: A Smarter JSON Encoder/Decoder for R},
   author =        {Jeroen Ooms},
   year =          2014,
   note =          {R package version 0.9.4},
@@ -107,7 +112,7 @@
 }
 
 @Manual{int64,
-  title =        {int64: 64 bit integer types},
+  title =        {int64: 64 Bit Integer Types},
   author =       {Romain Fran{\c{c}}ois},
   year =         2011,
   note =         {R package version 1.1.2},
@@ -115,7 +120,7 @@
 }
 
 @Manual{bit64,
-  title =        {bit64: A S3 class for vectors of 64bit integers},
+  title =        {bit64: A S3 class for Vectors of 64bit Integers},
   author =       {Jens Oehlschl\"{a}gel},
   year =         2012,
   note =         {R package version 0.9-3},
@@ -126,7 +131,7 @@
   title =        {Seamless R and C++ Integration with Rcpp},
   author =       {Dirk Eddelbuettel},
   year =         2013,
-  publisher =    {Springer}
+  publisher =    {Springer-Verlag}
 }
 
 @Manual{rhipe,
@@ -146,10 +151,10 @@
 }
 
 @manual{eddelbuettel2013exposing,
-  title =        {Exposing C++ functions and classes with Rcpp
-                  modules},
+  title =        {Exposing C++ Functions and Classes with Rcpp
+                  Modules},
   author =       {Dirk Eddelbuettel and Romain Fran{\c{c}}ois},
-  year =         2013,
+  year =         2014,
   note =         {Vignette included in R package Rcpp},
   url =          {http://CRAN.R-project.org/package=Rcpp},
 }
@@ -171,7 +176,7 @@
   number =       1,
   pages =        {11--32},
   year =         1991,
-  publisher =    {Springer}
+  publisher =    {Springer-Verlag}
 }
 
 @article{rubner2000earth,
@@ -183,7 +188,7 @@
   number =       2,
   pages =        {99--121},
   year =         2000,
-  publisher =    {Springer}
+  publisher =    {Springer-Verlag}
 }
 
 @book{kullback1997information,
@@ -305,13 +310,13 @@
   author =       {{R Core Team}},
   organization = {R Foundation for Statistical Computing},
   address =      {Vienna, Austria},
-  year =         2013,
+  year =         2014,
   url =          {http://www.R-project.org/},
 }
 
 @article{dean2008mapreduce,
-  title =        {MapReduce: simplified data processing on large
-                  clusters},
+  title =        {MapReduce: Simplified Data Processing on Large
+                  Clusters},
   author =       {Jeffrey Dean and Sanjay Ghemawat},
   journal =      {Communications of the ACM},
   volume =       51,
@@ -404,7 +409,7 @@
 }
 
 @article{scott1979optimal,
-  title =        {On optimal and data-based histograms},
+  title =        {On Optimal and Data-Based Histograms},
   author =       {David W Scott},
   journal =      {Biometrika},
   volume =       66,
@@ -415,8 +420,8 @@
 }
 
 @book{scott2009multivariate,
-  title =        {Multivariate density estimation: theory, practice,
-                  and visualization},
+  title =        {Multivariate Density Estimation: Theory, Practice,
+                  and Visualization},
   author =       {David W Scott},
   volume =       383,
   year =         2009,
@@ -424,7 +429,7 @@
 }
 
 @Manual{httr,
-  title =        {httr: Tools for working with URLs and HTTP},
+  title =        {httr: Tools for Working with URLs and HTTP},
   author =       {Hadley Wickham},
   year =         2012,
   note =         {R package version 0.2},
@@ -432,8 +437,8 @@
 }
 
 @Manual{opencpu,
-  title =        {OpenCPU system for embedded statistical computation
-                  and reproducible research},
+  title =        {OpenCPU System for Embedded Statistical Computation
+                  and Reproducible Research},
   author =       {Jeroen Ooms},
   year =         2013,
   note =         {R package version 1.2.2},
@@ -441,8 +446,8 @@
 }
 
 @article{shafranovich2005common,
-  title =        {Common format and mime type for comma-separated
-                  values (csv) files},
+  title =        {Common Format and Mime Type for Comma-Separated
+                  Values (csv) Files},
   author =       {Yakov Shafranovich},
   year =         2005,
   url =          {http://tools.ietf.org/html/rfc4180}
@@ -452,7 +457,7 @@
   title =        {XML and Web Technologies for Data Sciences with R},
   author =       {Deborah Nolan and Duncan {Temple Lang}},
   year =         2013,
-  publisher =    {Springer}
+  publisher =    {Springer-Verlag}
 }
 
 @Manual{nlme,
@@ -462,3 +467,23 @@
   note =         {R package version 3.1-113},
   url =          {http://CRAN.R-project.org/package=nlme},
 }
+
+ at Manual{CRAN:Rserve,
+  title =	 {Rserve: Binary R server},
+  author =	 {Simon Urbanek},
+  year =	 2013,
+  note =	 {R package version 1.7-3},
+  url =		 {http://CRAN.R-Project.org/package=Rserve}
+}
+
+ at InProceedings{Urbanek:2003:Rserve,
+  author =	 {Simon Urbanek},
+  title =	 {{Rserve}: A Fast Way to Provide {R} Functionality to
+                  Applications},
+  booktitle	= {Proceedings of the 3rd International Workshop on Distributed
+                   Statistical Computing, Vienna, Austria},
+  editor	= {Kurt Hornik and Friedrich Leisch and Achim Zeileis},
+  year		= {2003},
+  url		= {http://www.ci.tuwien.ac.at/Conferences/DSC-2003/Proceedings/},
+  note		= {{ISSN 1609-395X}}
+}



More information about the Rprotobuf-commits mailing list