R рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдпрд╣ GNU рдкреНрд░реЛрдЬреЗрдХреНрдЯ - рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдПрдХ рдореБрдХреНрдд рдУрдкрди-рд╕реЛрд░реНрд╕ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИредрдЖрд░ рдиреЗ рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдПрдХрддреНрд░ рдХрд┐рдП рд╣реИрдВ рдФрд░ рди рдХреЗрд╡рд▓ рджреЗрд╢реА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдпрд╣ рдПрд╕рдкреАрдПрд╕рдПрд╕, рд╕реНрдЯреЗрдЯрд┐рд╕реНрдЯрд┐рдХрд╛, рдПрд╕рдПрдПрд╕, рд╡реЛрд▓реНрдлреНрд░рд╛рдо рдореИрдердореЗрдЯрд┐рдХрд╛ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЬреИрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдЧрдгрд┐рддреАрдп рдкреИрдХреЗрдЬреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИред рдЖрдк рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ R рдХреЛ рдХреИрд╕реЗ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
C ++ рдореЗрдВ R рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА habrahabr рдкрд░ рдПрдХ
рд▓реЗрдЦ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдиреЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рддрд░реАрдХреЗ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ рдХрд┐ рдпрджрд┐ рдЖрдкрдХрд╛ рдХреЛрдб GPL- рд╕рдВрдЧрдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдиреНрдпрдерд╛ рд╡рд╣рд╛рдБ рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИ - Rerve рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
Rserve
Rerve рдПрдХ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА / рдпреВрдирд┐рдХреНрд╕ рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рд▓рд┐рдВрдХ рдХрд┐рдП рдмрд┐рдирд╛
рдЖрд░ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд▓реЛрдХрдкреНрд░рд┐рдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ C / C ++, Java, PHPред LGPL рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдЧреНрд░рд╛рд╣рдХ рдХреЛрдбред
R рдФрд░ Rerve рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
рдЕрдм рдпрд╣ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ:
рдбрд┐рдмрдЧ рдореЛрдб рднреА рд╣реИ
рдЬрдм рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ Rerve рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреЛрд░реНрдЯ (6311) рдкрд░ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рд╕рд░реНрд╡рд░ рдореЛрдб рдореЗрдВ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпреВрдирд┐рдХреНрд╕ рд╕реЙрдХреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --RS-socket рдлреНрд▓реИрдЧ рдХреЗ рд╕рд╛рде Rerve рдЪрд▓рд╛рдПрдВ
рдЙрдкрд▓рдмреНрдз рдЭрдВрдбреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдЯрд╛рдЗрдк рдХрд░рдХреЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
C ++ рдХреНрд▓рд╛рдЗрдВрдЯ
C ++ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ 4 рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВ:
Rconnection.h (рдпрд╣рд╛рдВ рдЙрди рд╕рднреА рд╡рд┐рдЬреНрдЮрд╛рдкрдиреЛрдВ рдХреЛ рдЬрд┐рдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ),
Rsrv.h ,
config.h (рдХреЗрд╡рд▓ Windows рдкрд░ рдЖрд╡рд╢реНрдпрдХ),
sisocks.h (рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕реЙрдХреЗрдЯ рдФрд░ рдПрдХ
Rconnection.cc ) ред рдЖрдк рдЙрди рд╕рднреА
рдХреЛ рдЧреБрдердм рдкрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ
рднрдВрдбрд╛рд░ рд╕реЗ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред
рддреЛ, рдЪрд▓рд┐рдП рдЙрд╕
рдбреЗрдореЛ рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдЬреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдореБрдЦреНрдп рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ
рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдВ: рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдореЗрдореЛрд░реА рдХреЛ Rmessage рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ "eval" рдХрд╣рддреЗ рд╕рдордп рдирд┐рд╣рд┐рдд рд╣реИред рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдорд╛рд▓рд┐рдХ Rexp рд╣реИ, рдЬрд┐рд╕реЗ eval рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕реЗ рдореБрдЦреНрдп рдХреЙрд▓ рдХрд░реЗрдВ)ред рдЖрдк рдореБрдЦреНрдп рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХреЛрдИ рдЕрдиреНрдп рд░реЗрдХреНрд╕рдкреА рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рдореБрдЦреНрдп Rexp рдХреЗ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЦреНрдп Rexp рд╕реЗ рдЬреБрдбрд╝рд╛ рдХреЛрдИ рднреА Rexp рдЕрдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЦреНрдп рд░реЗрдХреНрд╕рдкреА рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рднреА рд╕рдВрдХреЗрдд рдЕрдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбрдмрд▓рдЕрд░реЗ () рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛)ред
рд╕рдВрдХрд▓рди
рдФрд░ рднрд╛рдЧреЛ
рд╣реЛ рдЧрдпрд╛! R рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, Rconnection.h рджреЗрдЦреЗрдВред
Rserv.conf
рдореИрдВ рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ Rserv.conf рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдХрд╣реВрдВрдЧрд╛ред рдпрд╣ Rerve рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХреБрдЫ R рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ /etc/Rserv.conf рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк Rerve рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп --RS-conf рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрд▓рдЧ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Rserv.conf рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
workdir [/tmp/Rserv]
pwdfile [none=disabled]
remote enable|disable [disable]
auth required|disable [disable]
plaintext enable|disable [disable]
fileio enable|disable [enable]
interactive yes|no [yes] (since 0.6-2)
( 0.1-9):
socket [none=disabled]
port [6311]
maxinbuf [262144]
( 0.3):
maxsendbuf [0=unlimited]
uid [none]
gid [none]
su now|server|client [none] (since 0.6-1)
( 0.3-16):
source
eval
( 0.5 unix):
chroot [none]
sockmod [0=default]
umask [0]
( 0.5-3):
encoding native|utf8|latin1 [native]
Rserve C++ , . , - .
PS load-balancer Rserve: RSproxy .
UPDATE: Windows Ws2_32.lib.