[Rprotobuf-commits] r553 - in papers: . rjournal
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Mon Dec 16 17:26:21 CET 2013
Author: murray
Date: 2013-12-16 17:26:21 +0100 (Mon, 16 Dec 2013)
New Revision: 553
Added:
papers/rjournal/
papers/rjournal/Makefile
papers/rjournal/RJournal.sty
papers/rjournal/RJwrapper.brf
papers/rjournal/RJwrapper.tex
papers/rjournal/eddelbuettel-francois-stokely.bib
papers/rjournal/eddelbuettel-francois-stokely.tex
Log:
Add boilerplate for an R Journal article. Hadley's ggmap one from the
last issue was nearly 20 pages, so I think we'll be fine length wise.
Added: papers/rjournal/Makefile
===================================================================
--- papers/rjournal/Makefile (rev 0)
+++ papers/rjournal/Makefile 2013-12-16 16:26:21 UTC (rev 553)
@@ -0,0 +1,15 @@
+all: clean RJwrapper.pdf
+
+clean:
+ rm -fr RJwrapper.pdf
+ rm -fr RJwrapper.out
+ rm -fr RJwrapper.aux
+ rm -fr RJwrapper.log
+ rm -fr RJwrapper.bbl
+ rm -fr RJwrapper.blg
+
+RJwrapper.pdf: RJwrapper.tex eddelbuettel-francois-stokely.tex RJournal.sty
+ pdflatex RJwrapper.tex
+ bibtex RJwrapper
+ pdflatex RJwrapper.tex
+ pdflatex RJwrapper.tex
Added: papers/rjournal/RJournal.sty
===================================================================
--- papers/rjournal/RJournal.sty (rev 0)
+++ papers/rjournal/RJournal.sty 2013-12-16 16:26:21 UTC (rev 553)
@@ -0,0 +1,335 @@
+% Package `RJournal' to use with LaTeX2e
+% Copyright (C) 2010 by the R Foundation
+% Copyright (C) 2013 by the R Journal
+%
+% Originally written by Kurt Hornik and Friedrich Leisch with subsequent
+% edits by the editorial board
+
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{RJournal}[2013/08/27 v0.13 RJournal package]
+
+\RequirePackage{tikz}
+
+% Overall page layout, fonts etc -----------------------------------------------
+
+% Issues of of \emph{The R Journal} are created from the standard \LaTeX{}
+% document class \pkg{report}.
+
+\RequirePackage{geometry}
+\geometry{a4paper,
+ textwidth=14cm, top=1cm, bottom=1cm,
+ includehead,includefoot,centering,
+ footskip=1.5cm}
+\raggedbottom
+
+\RequirePackage{fancyhdr}
+\fancyhead{}
+\fancyheadoffset{2cm}
+\fancyhead[L]{\textsc{\RJ at sectionhead}}
+\fancyhead[R]{\thepage}
+\fancyfoot{}
+\fancyfoot[L]{The R Journal Vol. \RJ at volume/\RJ at number, \RJ at month}
+\fancyfoot[R]{ISSN 2073-4859}
+\pagestyle{fancy}
+
+% We use the following fonts (all with T1 encoding):
+%
+% rm & palatino
+% tt & inconsolata
+% sf & helvetica
+% math & palatino
+
+\RequirePackage{microtype}
+
+\RequirePackage[scaled=0.92]{helvet}
+\RequirePackage{palatino,mathpazo}
+\RequirePackage[scaled=1.02]{inconsolata}
+\RequirePackage[T1]{fontenc}
+
+\RequirePackage[hyphens]{url}
+\RequirePackage[pagebackref]{hyperref}
+\renewcommand{\backref}[1]{[p#1]}
+
+% Dark blue colour for all links
+\RequirePackage{color}
+\definecolor{link}{rgb}{0.45,0.51,0.67}
+\hypersetup{
+ colorlinks,%
+ citecolor=link,%
+ filecolor=link,%
+ linkcolor=link,%
+ urlcolor=link
+}
+
+% Give the text a little room to breath
+\setlength{\parskip}{3pt}
+\RequirePackage{setspace}
+\setstretch{1.05}
+
+% Issue and article metadata ---------------------------------------------------
+
+% Basic front matter information about the issue: volume, number, and
+% date.
+
+\newcommand{\volume}[1]{\def\RJ at volume{#1}}
+\newcommand{\volnumber}[1]{\def\RJ at number{#1}}
+\renewcommand{\month}[1]{\def\RJ at month{#1}}
+\renewcommand{\year}[1]{\def\RJ at year{#1}}
+
+
+% Individual articles correspond to
+% chapters, and are contained in |article| environments. This makes it
+% easy to have figures counted within articles and hence hyperlinked
+% correctly.
+
+% An article has an author, a title, and optionally a subtitle. We use
+% the obvious commands for specifying these. Articles will be put in certain
+% journal sections, named by \sectionhead.
+
+\newcommand {\sectionhead} [1]{\def\RJ at sectionhead{#1}}
+\renewcommand{\author} [1]{\def\RJ at author{#1}}
+\renewcommand{\title} [1]{\def\RJ at title{#1}}
+\newcommand {\subtitle} [1]{\def\RJ at subtitle{#1}}
+
+% Control appearance of titles: make slightly smaller than usual, and
+% suppress section numbering. See http://tex.stackexchange.com/questions/69749
+% for why we don't use \setcounter{secnumdepth}{-1}
+
+\usepackage[medium]{titlesec}
+\usepackage{titletoc}
+\titleformat{\section} {\normalfont\large\bfseries}{}{0em}{}
+\titleformat{\subsection}{\normalfont\normalsize\bfseries}{}{0em}{}
+\titlecontents{chapter} [0em]{}{}{}{\titlerule*[1em]{.}\contentspage}
+
+% Article layout ---------------------------------------------------------------
+
+% Environment |article| clears the article header information at its beginning.
+% We use |\FloatBarrier| from the placeins package to keep floats within
+% the article.
+\RequirePackage{placeins}
+\newenvironment{article}{\author{}\title{}\subtitle{}\FloatBarrier}{\FloatBarrier}
+
+% Refereed articles should have an abstract, so we redefine |\abstract| to
+% give the desired style
+
+\renewcommand{\abstract}[1]{%
+\setstretch{1}%
+\noindent%
+\small%
+\textbf{Abstract} #1
+}
+
+% The real work is done by a redefined version of |\maketitle|. Note
+% that even though we do not want chapters (articles) numbered, we
+% need to increment the chapter counter, so that figures get correct
+% labelling.
+
+\renewcommand{\maketitle}{%
+\noindent
+ \chapter{\RJ at title}\refstepcounter{chapter}
+ \ifx\empty\RJ at subtitle
+ \else
+ \noindent\textbf{\RJ at subtitle}
+ \par\nobreak\addvspace{\baselineskip}
+ \fi
+ \ifx\empty\RJ at author
+ \else
+ \noindent\textit{\RJ at author}
+ \par\nobreak\addvspace{\baselineskip}
+ \fi
+ \@afterindentfalse\@nobreaktrue\@afterheading
+}
+
+% Now for some ugly redefinitions. We do not want articles to start a
+% new page. (Actually, we do, but this is handled via explicit
+% \newpage
+%
+% The name at of@eq is a hack to get hyperlinks to equations to work
+% within each article, even though there may be multiple eq.(1)
+% \begin{macrocode}
+\renewcommand\chapter{\secdef\RJ at chapter\@schapter}
+\providecommand{\nohyphens}{%
+ \hyphenpenalty=10000\exhyphenpenalty=10000\relax}
+\newcommand{\RJ at chapter}{%
+ \edef\name at of@eq{equation.\@arabic{\c at chapter}}%
+ \renewcommand{\@seccntformat}[1]{}%
+ \@startsection{chapter}{0}{0mm}{%
+ -2\baselineskip \@plus -\baselineskip \@minus -.2ex}{\p@}{%
+ \phantomsection\normalfont\huge\bfseries\raggedright}}
+
+% Book reviews should appear as sections in the text and in the pdf bookmarks,
+% however we wish them to appear as chapters in the TOC. Thus we define an
+% alternative to |\maketitle| for reviews.
+\newcommand{\review}[1]{
+ \pdfbookmark[1]{#1}{#1}
+ \section*{#1}
+ \addtocontents{toc}{\protect\contentsline{chapter}{#1}{\thepage}{#1.1}}
+}
+
+% We want bibliographies as starred sections within articles.
+%
+\RequirePackage[sectionbib,round]{natbib}
+\bibliographystyle{abbrvnat}
+
+% Equations, figures and tables are counted within articles, but we do
+% not show the article number. For equations it becomes a bit messy to avoid
+% having hyperref getting it wrong.
+
+% \numberwithin{equation}{chapter}
+\renewcommand{\theequation}{\@arabic\c at equation}
+\renewcommand{\thefigure}{\@arabic\c at figure}
+\renewcommand{\thetable}{\@arabic\c at table}
+
+% Issue layout -----------------------------------------------------------------
+
+% Need to provide our own version of |\tableofcontents|. We use the
+% tikz package to get the rounded rectangle. Notice that |\section*|
+% is really the same as |\chapter*|.
+\renewcommand{\contentsname}{Contents}
+\renewcommand\tableofcontents{%
+ \vspace{1cm}
+ \section*{\contentsname}
+ { \@starttoc{toc} }
+}
+
+\renewcommand{\titlepage}{%
+ \thispagestyle{empty}
+ \hypersetup{
+ pdftitle={The R Journal Volume \RJ at volume/\RJ at number, \RJ at month \RJ at year},%
+ pdfauthor={R Foundation for Statistical Computing},%
+ }
+ \noindent
+ \begin{center}
+ \fontsize{50pt}{50pt}\selectfont
+ The \raisebox{-8pt}{\includegraphics[height=77pt]{Rlogo-4}}\hspace{10pt}
+ Journal
+
+ \end{center}
+ {\large \hfill Volume \RJ at volume/\RJ at number, \RJ at month{} \RJ at year \quad}
+
+ \rule{\textwidth}{1pt}
+ \begin{center}
+ {\Large A peer-reviewed, open-access publication of the \\
+ R Foundation for Statistical Computing}
+ \end{center}
+
+ % And finally, put in the TOC box. Note the way |tocdepth| is adjusted
+ % before and after producing the TOC: thus, we can ensure that only
+ % articles show up in the printed TOC, but that in the PDF version,
+ % bookmarks are created for sections and subsections as well (provided
+ % that the non-starred forms are used).
+ \setcounter{tocdepth}{0}
+ \tableofcontents
+ \setcounter{tocdepth}{2}
+ \clearpage
+}
+
+% Text formatting --------------------------------------------------------------
+
+\newcommand{\R}{R}
+\newcommand{\address}[1]{\addvspace{\baselineskip}\noindent\emph{#1}}
+\newcommand{\email}[1]{\href{mailto:#1}{\normalfont\texttt{#1}}}
+
+% Simple font selection is not good enough. For example, |\texttt{--}|
+% gives `\texttt{--}', i.e., an endash in typewriter font. Hence, we
+% need to turn off ligatures, which currently only happens for commands
+% |\code| and |\samp| and the ones derived from them. Hyphenation is
+% another issue; it should really be turned off inside |\samp|. And
+% most importantly, \LaTeX{} special characters are a nightmare. E.g.,
+% one needs |\~{}| to produce a tilde in a file name marked by |\file|.
+% Perhaps a few years ago, most users would have agreed that this may be
+% unfortunate but should not be changed to ensure consistency. But with
+% the advent of the WWW and the need for getting `|~|' and `|#|' into
+% URLs, commands which only treat the escape and grouping characters
+% specially have gained acceptance
+
+\DeclareRobustCommand\code{\bgroup\@noligs\@codex}
+\def\@codex#1{\texorpdfstring%
+{{\normalfont\ttfamily\hyphenchar\font=-1 #1}}%
+{#1}\egroup}
+\newcommand{\kbd}[1]{{\normalfont\texttt{#1}}}
+\newcommand{\key}[1]{{\normalfont\texttt{\uppercase{#1}}}}
+\DeclareRobustCommand\samp{`\bgroup\@noligs\@sampx}
+\def\@sampx#1{{\normalfont\texttt{#1}}\egroup'}
+\newcommand{\var}[1]{{\normalfont\textsl{#1}}}
+\let\env=\code
+\newcommand{\file}[1]{{`\normalfont\textsf{#1}'}}
+\let\command=\code
+\let\option=\samp
+\newcommand{\dfn}[1]{{\normalfont\textsl{#1}}}
+% \acronym is effectively disabled since not used consistently
+\newcommand{\acronym}[1]{#1}
+\newcommand{\strong}[1]{\texorpdfstring%
+{{\normalfont\fontseries{b}\selectfont #1}}%
+{#1}}
+\let\pkg=\strong
+\newcommand{\CRANpkg}[1]{\href{http://CRAN.R-project.org/package=#1}{\pkg{#1}}}%
+\let\cpkg=\CRANpkg
+\newcommand{\ctv}[1]{\href{http://CRAN.R-project.org/view=#1}{\emph{#1}}}
+\newcommand{\BIOpkg}[1]{\href{http://www.bioconductor.org/packages/release/bioc/html/#1.html}{\pkg{#1}}}
+
+% Example environments ---------------------------------------------------------
+\RequirePackage{fancyvrb}
+\RequirePackage{alltt}
+
+\DefineVerbatimEnvironment{example}{Verbatim}{}
+\renewenvironment{example*}{\begin{alltt}}{\end{alltt}}
+
+% Support for output from Sweave, and generic session style code
+% These used to have fontshape=sl for Sinput/Scode/Sin, but pslatex
+% won't use a condensed font in that case.
+
+\DefineVerbatimEnvironment{Sinput}{Verbatim}{fontsize=\small}
+\DefineVerbatimEnvironment{Soutput}{Verbatim}{fontsize=\small}
+\DefineVerbatimEnvironment{Scode}{Verbatim}{fontsize=\small}
+\DefineVerbatimEnvironment{Sin}{Verbatim}{fontsize=\small}
+\DefineVerbatimEnvironment{Sout}{Verbatim}{fontsize=\small}
+\newenvironment{Schunk}{}{}
+
+% Mathematics ------------------------------------------------------------------
+
+% The implementation of |\operatorname| is similar to the mechanism
+% \LaTeXe{} uses for functions like sin and cos, and simpler than the
+% one of \AmSLaTeX{}. We use |\providecommand| for the definition in
+% order to keep the one of the \pkg{amstex} if this package has
+% already been loaded.
+% \begin{macrocode}
+\providecommand{\operatorname}[1]{%
+ \mathop{\operator at font#1}\nolimits}
+\RequirePackage{amsfonts}
+
+\renewcommand{\P}{%
+ \mathop{\operator at font I\hspace{-1.5pt}P\hspace{.13pt}}}
+\newcommand{\E}{%
+ \mathop{\operator at font I\hspace{-1.5pt}E\hspace{.13pt}}}
+\newcommand{\VAR}{\operatorname{var}}
+\newcommand{\COV}{\operatorname{cov}}
+\newcommand{\COR}{\operatorname{cor}}
+
+% Figures ----------------------------------------------------------------------
+
+\RequirePackage[font=small,labelfont=bf]{caption}
+
+% Wide environments for figures and tables -------------------------------------
+\RequirePackage{environ}
+
+% An easy way to make a figure span the full width of the page
+\NewEnviron{widefigure}[1][]{
+\begin{figure}[#1]
+\advance\leftskip-2cm
+\begin{minipage}{\dimexpr\textwidth+4cm\relax}%
+ \captionsetup{margin=2cm}
+ \BODY
+\end{minipage}%
+\end{figure}
+}
+
+\NewEnviron{widetable}[1][]{
+\begin{table}[#1]
+\advance\leftskip-2cm
+\begin{minipage}{\dimexpr\textwidth+4cm\relax}%
+ \captionsetup{margin=2cm}
+ \BODY
+\end{minipage}%
+\end{table}
+}
Added: papers/rjournal/RJwrapper.brf
===================================================================
--- papers/rjournal/RJwrapper.brf (rev 0)
+++ papers/rjournal/RJwrapper.brf 2013-12-16 16:26:21 UTC (rev 553)
@@ -0,0 +1,2 @@
+\backcite {R}{{1}{2.1}{section.2.1}}
+\backcite {R}{{1}{2.1}{section.2.1}}
Added: papers/rjournal/RJwrapper.tex
===================================================================
--- papers/rjournal/RJwrapper.tex (rev 0)
+++ papers/rjournal/RJwrapper.tex 2013-12-16 16:26:21 UTC (rev 553)
@@ -0,0 +1,24 @@
+\documentclass[a4paper]{report}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{RJournal}
+\usepackage{amsmath,amssymb,array}
+\usepackage{booktabs}
+
+%% load any required packages here
+
+\begin{document}
+
+%% do not edit, for illustration only
+\sectionhead{Contributed research article}
+\volume{XX}
+\volnumber{YY}
+\year{20ZZ}
+\month{AAAA}
+
+%% replace RJtemplate with your article
+\begin{article}
+ \input{eddelbuettel-francois-stokely}
+\end{article}
+
+\end{document}
Added: papers/rjournal/eddelbuettel-francois-stokely.bib
===================================================================
--- papers/rjournal/eddelbuettel-francois-stokely.bib (rev 0)
+++ papers/rjournal/eddelbuettel-francois-stokely.bib 2013-12-16 16:26:21 UTC (rev 553)
@@ -0,0 +1,168 @@
+ at inproceedings{cantrill2004dynamic,
+ title={Dynamic Instrumentation of Production Systems.},
+ author={Cantrill, Bryan and Shapiro, Michael W and Leventhal, Adam H and others},
+ booktitle={USENIX Annual Technical Conference, General Track},
+ pages={15--28},
+ year={2004}
+}
+ at article{swain1991color,
+ title={Color indexing},
+ author={Swain, Michael J and Ballard, Dana H},
+ journal={International journal of computer vision},
+ volume={7},
+ number={1},
+ pages={11--32},
+ year={1991},
+ publisher={Springer}
+}
+ at article{rubner2000earth,
+ title={The earth mover's distance as a metric for image retrieval},
+ author={Rubner, Yossi and Tomasi, Carlo and Guibas, Leonidas J},
+ journal={International Journal of Computer Vision},
+ volume={40},
+ number={2},
+ pages={99--121},
+ year={2000},
+ publisher={Springer}
+}
+ at book{kullback1997information,
+ title={Information theory and statistics},
+ author={Kullback, Solomon},
+ year={1997},
+ publisher={Courier Dover Publications}
+}
+ at inproceedings{puzicha1997non,
+ title={Non-parametric similarity measures for unsupervised texture segmentation and image retrieval},
+ author={Puzicha, Jan and Hofmann, Thomas and Buhmann, Joachim M},
+ booktitle={Computer Vision and Pattern Recognition, 1997. Proceedings., 1997 IEEE Computer Society Conference on},
+ pages={267--272},
+ year={1997},
+ organization={IEEE}
+}
+ at inproceedings{fang1999computing,
+ title={Computing Iceberg Queries Efficiently.},
+ author={Fang, Min and Shivakumar, Narayanan and Garcia-Molina, Hector and Motwani, Rajeev and Ullman, Jeffrey D},
+ booktitle={Internaational Conference on Very Large Databases (VLDB'98), New York, August 1998},
+ year={1999},
+ organization={Stanford InfoLab}
+}
+ at Manual{emdist,
+ title = {emdist: Earth Mover's Distance},
+ author = {Simon Urbanek and Yossi Rubner},
+ year = {2012},
+ note = {R package version 0.3-1},
+ url = {http://CRAN.R-project.org/package=emdist},
+}
+ at article{pearson1895contributions,
+ title={Contributions to the mathematical theory of evolution. II. Skew variation in homogeneous material},
+ author={Pearson, Karl},
+ journal={Philosophical Transactions of the Royal Society of London. A},
+ volume={186},
+ pages={343--414},
+ year={1895},
+ publisher={JSTOR}
+}
+ at Manual{rprotobuf,
+ title = {RProtoBuf: R Interface to the Protocol Buffers API},
+ author = {Romain Francois and Dirk Eddelbuettel and Murray Stokely},
+ note = {R package version 0.2.6},
+ year = {2012},
+ url = {http://cran.r-project.org/web/packages/RProtoBuf/index.html},
+}
+ at Manual{r,
+ title = {R: A Language and Environment for Statistical Computing},
+ author = {{R Core Team}},
+ organization = {R Foundation for Statistical Computing},
+ address = {Vienna, Austria},
+ year = {2012},
+ note = {{ISBN} 3-900051-07-0},
+ url = {http://www.R-project.org/},
+ }
+ at article{dean2008mapreduce,
+ title={MapReduce: simplified data processing on large clusters},
+ author={Dean, Jeffrey and Ghemawat, Sanjay},
+ journal={Communications of the ACM},
+ volume={51},
+ number={1},
+ pages={107--113},
+ year={2008},
+ publisher={ACM}
+}
+ at article{bostock2011d3,
+ title={D$^3$ Data-Driven Documents},
+ author={Bostock, Michael and Ogievetsky, Vadim and Heer, Jeffrey},
+ journal={Visualization and Computer Graphics, IEEE Transactions on},
+ volume={17},
+ number={12},
+ pages={2301--2309},
+ year={2011},
+ publisher={IEEE}
+}
+% celebrated article in this field. Also see the parallel paragraph.
+ at article{Manku:1998:AMO:276305.276342,
+ author = {Manku, Gurmeet Singh and Rajagopalan, Sridhar and Lindsay, Bruce G.},
+ title = {Approximate medians and other quantiles in one pass and with limited memory},
+ journal = {SIGMOD Rec.},
+ issue_date = {June 1998},
+ volume = {27},
+ number = {2},
+ month = jun,
+ year = {1998},
+ issn = {0163-5808},
+ pages = {426--435},
+ numpages = {10},
+ url = {http://doi.acm.org/10.1145/276305.276342},
+ doi = {10.1145/276305.276342},
+ acmid = {276342},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+}
+% Has a section on protocol buffers
+ at article{Pike:2005:IDP:1239655.1239658,
+ author = {Pike, Rob and Dorward, Sean and Griesemer, Robert and Quinlan, Sean},
+ title = {Interpreting the data: Parallel analysis with Sawzall},
+ journal = {Sci. Program.},
+ issue_date = {October 2005},
+ volume = {13},
+ number = {4},
+ month = oct,
+ year = {2005},
+ issn = {1058-9244},
+ pages = {277--298},
+ numpages = {22},
+ acmid = {1239658},
+ publisher = {IOS Press},
+ address = {Amsterdam, The Netherlands, The Netherlands},
+}
+ at Manual{protobuf,
+ title = {Protocol Buffers: Developer Guide},
+ author = {Google},
+ year = {2012},
+ url = {http://code.google.com/apis/protocolbuffers/docs/overview.html}
+}
+ at article{sturges1926choice,
+ title={The choice of a class interval},
+ author={Sturges, Herbert A},
+ journal={Journal of the American Statistical Association},
+ volume={21},
+ number={153},
+ pages={65--66},
+ year={1926}
+}
+ at article{scott1979optimal,
+ title={On optimal and data-based histograms},
+ author={Scott, David W},
+ journal={Biometrika},
+ volume={66},
+ number={3},
+ pages={605--610},
+ year={1979},
+ publisher={Biometrika Trust}
+}
+ at book{scott2009multivariate,
+ title={Multivariate density estimation: theory, practice, and visualization},
+ author={Scott, David W},
+ volume={383},
+ year={2009},
+ publisher={Wiley. com}
+}
Added: papers/rjournal/eddelbuettel-francois-stokely.tex
===================================================================
--- papers/rjournal/eddelbuettel-francois-stokely.tex (rev 0)
+++ papers/rjournal/eddelbuettel-francois-stokely.tex 2013-12-16 16:26:21 UTC (rev 553)
@@ -0,0 +1,156 @@
+% !TeX root = RJwrapper.tex
+\title{RProtoBuf: Efficient Cross-Language Data Serialization in R}
+\author{by Dirk Eddelbuettel, Romain Fran\c{c}ois, and Murray Stokely}
+
+\maketitle
+
+\abstract{Modern data collection and analysis pipelines often involve
+ a sophisticated mix of applications written in general purpose and
+ specialized programming languages. Protocol Buffers are a popular
+ method of serializing structured data between applications. The
+ \textbf{RProtoBuf} package provides a complete interface to this
+ library.
+TODO keep it less than 150 words.
+}
+
+\section{Introduction}
+
+Comparison with what people start with in R : CSV
+comparison with what is only slightly better: JSON
+
+Introductory section which may include references in parentheses
+\citep{R}, or cite a reference such as \citet{R} in the text.
+
+Protocol buffers are a language-neutral, platform-neutral, extensible
+way of serializing structured data for use in communications
+protocols, data storage, and more.
+
+Protocol Buffers offer key features such as an efficient data interchange
+format that is both language- and operating system-agnostic yet uses a
+lightweight and highly performant encoding, object serialization and
+de-serialization as well data and configuration management. Protocol
+buffers are also forward compatible: updates to the \texttt{proto}
+files do not break programs built against the previous specification.
+
+While benchmarks are not available, Google states on the project page that in
+comparison to XML, protocol buffers are at the same time \textsl{simpler},
+between three to ten times \textsl{smaller}, between twenty and one hundred
+times \textsl{faster}, as well as less ambiguous and easier to program.
+
+The protocol buffers code is released under an open-source (BSD) license. The
+protocol buffer project (\url{http://code.google.com/p/protobuf/})
+contains a C++ library and a set of runtime libraries and compilers for
+C++, Java and Python.
+
+With these languages, the workflow follows standard practice of so-called
+Interface Description Languages (IDL)
+(c.f. \href{http://en.wikipedia.org/wiki/Interface_description_language}{Wikipedia
+ on IDL}). This consists of compiling a protocol buffer description file
+(ending in \texttt{.proto}) into language specific classes that can be used
+to create, read, write and manipulate protocol buffer messages. In other
+words, given the 'proto' description file, code is automatically generated
+for the chosen target language(s). The project page contains a tutorial for
+each of these officially supported languages:
+\url{http://code.google.com/apis/protocolbuffers/docs/tutorials.html}
+
+Besides the officially supported C++, Java and Python implementations, several projects have been
+created to support protocol buffers for many languages. The list of known
+languages to support protocol buffers is compiled as part of the
+project page: \url{http://code.google.com/p/protobuf/wiki/ThirdPartyAddOns}
+
+The protocol buffer project page contains a comprehensive
+description of the language: \url{http://code.google.com/apis/protocolbuffers/docs/proto.html}
+
+%This section may contain a figure such as Figure~\ref{figure:rlogo}.
+%
+%\begin{figure}[htbp]
+% \centering
+% \includegraphics{Rlogo}
+% \caption{The logo of R.}
+% \label{figure:rlogo}
+%\end{figure}
+
+\section{Dynamic use: Protocol Buffers and R}
+
+This section describes how to use the R API to create and manipulate
+protocol buffer messages in R, and how to read and write the
+binary \emph{payload} of the messages to files and arbitrary binary
+R connections.
+
+\subsection{Importing proto files}
+
+In contrast to the other languages (Java, C++, Python) that are officially
+supported by Google, the implementation used by the \texttt{RProtoBuf}
+package does not rely on the \texttt{protoc} compiler (with the exception of
+the two functions discussed in the previous section). This means that no
+initial step of statically compiling the proto file into C++ code that is
+then accessed by R code is necessary. Instead, \texttt{proto} files are
+parsed and processed \textsl{at runtime} by the protobuf C++ library---which
+is much more appropriate for a dynamic language.
+
+The \texttt{readProtoFiles} function allows importing \texttt{proto}
+files in several ways.
+
+% Example code snippet.
+% TODO(mstokely): Remove this.
+\begin{example}
+ x <- 1:10
+ result <- myFunction(x)
+\end{example}
+
+\section{Related work on IDLs (greatly expanded from what you have)}
+
+\section{Design tradeoffs: reflection vs proto compiler (not addressed
+ at all in current vignettes)}
+
+\subsection{Performance considerations}
+
+TODO RProtoBuf is quite flexible and easy to use for interactive
+analysis, but it is not designed for certain classes of operations one
+might like to do with protocol buffers. For example, taking a list of
+10,000 protocol buffers, extracting a named field from each one, and
+computing a aggregate statistics on those values would be extremely
+slow with RProtoBuf, and while this is a useful class of operations,
+it is outside of the scope of RProtoBuf. We should be very clear
+about this to clarify the goals and strengths of RProtoBuf and its
+reflection and object mapping.
+
+\subsection{Serialization comparison}
+
+TODO comparison of protobuf serialization sizes/times for various vectors. Compared to R's native serialization. Discussion of the RHIPE approach of serializing any/all R objects, vs more specific protocol buffers for specific R objects.
+
+\section{Basic usage example - tutorial.Person}
+
+\section{Application: distributed Data Collection with MapReduce}
+
+We could describe a common MapReduce pattern of having the MR written
+in another language output protocol buffers that are later pulled into
+R. There is some text about this in section 2 of
+http://cran.r-project.org/web/packages/HistogramTools/vignettes/HistogramTools.pdf
+
+\section{Application: Sending/receiving Interaction With Servers}
+
+\section{Summary}
+
+This file is only a basic article template. For full details of \emph{The R Journal} style and information on how to prepare your article for submission, see the \href{http://journal.r-project.org/latex/RJauthorguide.pdf}{Instructions for Authors}.
+
+\bibliography{eddelbuettel-francois-stokely}
+
+\address{Author One\\
+ Affiliation\\
+ Address\\
+ Country}
+\email{author1 at work}
+
+\address{Author Two\\
+ Affiliation\\
+ Address\\
+ Country}
+\email{author2 at work}
+
+\address{Murray Stokely\\
+ Google, Inc.\\
+ 1600 Amphitheatre Parkway\\
+ Mountain View, CA 94043\\
+ USA}
+\email{mstokely at google.com}
More information about the Rprotobuf-commits
mailing list