Windowsã«Erlangãã€ã³ã¹ããŒã«ãã
Erlangã®ã€ã³ã¹ããŒã«ã¯éåžžã«ç°¡åã§ãã æåã«ã å ¬åŒãµã€ããããã£ã¹ããªãã¥ãŒã·ã§ã³ãããŠã³ããŒãããŸã ã R12B-5ã®ææ°ããŒãžã§ã³ã§ããWindowsãã€ããªåïŒããã¥ã¡ã³ããå«ãïŒãå¿ èŠã§ãã ãã¹ã¿ãŒãã-ããã¹ãŠã®ããã°ã©ã ããã€ã³ã¹ããŒã«ãããšãErlang OTP R12Bã¢ã€ãã ã衚瀺ããããã®äžã«Erlangãµãã¢ã€ãã ã衚瀺ãããŸãã ãããéžæãããšãååã®ãªãããŒããã·ã§ã«ãšãšãã«èµ·åããŸãããã®ã·ã§ã«ã§ã¯ãç§ã®äŸããã®ããã«ããã§ã«Erlangianã³ãŒããå®è¡ã§ããŸãã ãããŒãããšããèšèã¯ãããŒãããšèš³ãããŠããŸããããã·ã¢èªã®æ£åŒå称ã¯ãŸã 確ç«ãããŠããªãããããããŒãããšããååãå®ããŸãã
Mac OS Xããã³Linuxçšã®Erlangãã€ã³ã¹ããŒã«ããããã®ãªã³ã¯ã以äžã«ç€ºããŸãã
ã€ã³ã¹ããŒã«ãå®äºããã«ã¯ãWindowsç°å¢å€æ°ã«æ¬¡ã®å€æ°ãç»é²ããå¿ èŠããããŸãã
1. Erlangãã€ã³ã¹ããŒã«ããããã£ã¬ã¯ããªãžã®ãã¹ïŒ
ERL_TOP = CïŒ\ Program Files \ erl5.6.5
åããã¹ã§ããã \ binãè¿œå ãããŠããŸãã CïŒ\ Program Files \ erl5.6.5 \ binãPATHå€æ°ã«æžã蟌ãå¿ èŠããããŸãïŒãŸã ãªãå ŽåïŒ
2.次ã®äŸã®ããã«ãHOMEå€æ°ããŸã ç»é²ãããŠããªãå ŽåïŒ
HOME = CïŒ\ Documents and Settings \ tolik
3.ãµãŒãããŒãã£ã®Erlangã©ã€ãã©ãªãžã®ãã¹ãããã«ç»é²ããããšããå§ãããŸãã
ERL_LIBS = CïŒ\ Work \ erl_libs
å°æ¥çã«ã¯ãErlang / OTPãã£ã¹ããªãã¥ãŒã·ã§ã³ã«å«ãŸããŠããªããã¹ãŠã®ãµãŒãããŒãã£ã©ã€ãã©ãªããã®ãã£ã¬ã¯ããªã«é 眮ããŠãã ããã ããã«ãããæ°ããããŒãžã§ã³ã®Erlang / OTPãç°¡åã«ã€ã³ã¹ããŒã«ãããµãŒãããŒãã£ã®ã©ã€ãã©ãªãåé 眮ããã«å€ãããŒãžã§ã³ãåé€ã§ããŸãã ãšããã§ãErlang / OTPã®æ°ããããŒãžã§ã³ã¯å¹Žã«2åãªãªãŒã¹ãããŸãã
æåŸã«ãHOMEãã£ã¬ã¯ããªã«ãã¡ã€ã«ã.erlang.cookieããäœæããŸãã ããã¯ãããšãã°ãAMMVFJKDTENSFHDJDGDERSWãã®ããã«ãããã¹ãCookieã1è¡ã§ä¿åããéåžžã®ããã¹ããã¡ã€ã«ã§ãã ãã®Cookieã¯ãããŒããçžäºäœçšãããšãã«äœ¿çšãããŸãã å®éã«ã¯ã2ã€ã®ããŒãã¯ãåãCookieãæã£ãŠããå Žåã«ã®ã¿çžäºã«å¯Ÿè©±ã§ããŸãã ããã€ãã®ããŒãã®çžäºäœçšã«ãŸã é¢å¿ããªãå Žåã¯ããã®æé ãã¹ãããããŠãã ããã
åãHOMEãã£ã¬ã¯ããªã§ãErlangã«ã³ãŒããèšè¿°ã§ãã ".erlang"ãã¡ã€ã«ãäœæãããšäŸ¿å©ã§ãããã®ãã¡ã€ã«ã¯ããã®ã³ã³ãã¥ãŒã¿ãŒã§ããŒããèµ·åãããšãã«èªåçã«å®è¡ãããŸãã éåžžãã³ãŒãã¯ãã®ãã¡ã€ã«ã«æžã蟌ãŸããã¢ããªã±ãŒã·ã§ã³ã®å®è¡å¯èœãã¡ã€ã«ãžã®ãã¹ãæ€çŽ¢ãªã¹ãã«è¿œå ããŸãã
code:add_pathz(" ebin ").
ããã§ããerlããšå ¥åããã ãã§ãã³ãã³ãã©ã€ã³ããçŽæ¥ããŒããèµ·åã§ããŸãã ã·ã§ã«ãªãã§ããŸãã¯ããŒã¢ã³ãšããŠããŒããå®è¡ã§ããŸãã ã·ã§ã«ãªãã§ããŒããèµ·åããå Žåã2çªç®ã®ããŒãïŒå¥ã®ã³ã³ãã¥ãŒã¿ãŒäžã§å®è¡å¯èœïŒãå®è¡ããããšã§æ¥ç¶ã§ããŸãïŒ
erl -name test@192.168.0.11 -remsh main@192.168.0.11
ããã§ã main @ 192.168.0.11ã¯æ¥ç¶å ã®ããŒãã®ååã§ããã test @ 192.168.0.11ã¯æ°ããããŒãã®ååã§ãã æ¥ç¶åŸãæåã®ããŒãã«ãããã®ããã«ãã¹ãŠã®ã³ãã³ããå®è¡ã§ããŸãã
èµ·åãã©ã¡ãŒã¿ãŒã®è©³çŽ°ã«ã€ããŠã¯ã erlã¢ãžã¥ãŒã«ãåç §ããŠãã ããã
éçºç°å¢ãšããŠã®Emacs
æè¿ãŸã§ãErlangããã°ã©ã ãèšè¿°ããã³ãããã°ããããã®ã»ãŒå¯äžã®äŸ¿å©ãªæ¹æ³ã¯ã Distelãšçµã¿åãããEmacs ïŒéåžžã®ããã¹ããšãã£ã¿ãŒãšééããããïŒã§ããã ãã·ã¢èªã§äž¡æ¹ã®ããã±ãŒãžãã»ããã¢ããããŠæäœããããã®ããªãè¯ãæ瀺ãããã«ãããŸã ã çŸåšã®éçºç°å¢ãšæ¯èŒãããšãå€ä»£ã®æç«ã®ããã«èŠããŸãããç§ãã¡ã®ä»äºã§ã¯ãŸã 䜿çšããŠããŸãã
æ°ããéçºç°å¢ïŒerlIDE
Emacsã眮ãæããããã«ãæ°ããerlIDEéçºç°å¢ãéçºãããŠããŸãã çŸåšã®ããŒãžã§ã³0.4.3ã¯æ¢ã«ååã«å®å®ããŠããã以åã®ããŒãžã§ã³ã®ããã«èœã¡ãŸããã ãããã¬ãã³ã³ããã¹ããã«ããã·ã³ãã«ãªã³ãŒãããã²ãŒã·ã§ã³ãæ§æã®åŒ·èª¿è¡šç€ºãªã©ãææ°ã®IDEã®ã»ãšãã©ãã¹ãŠã®éåžžã®ããŒã«ãå«ãŸããŠããŸãã ã€ã³ã¹ããŒã«æé ã¯ååã«è©³çŽ°ã«æžãããŠãããéåžžã¯è³ªåãããŸããã erlIDEã¯Eclipseã®ãã©ã°ã€ã³ãšããŠæ©èœããããããŸãã³ã³ãã¥ãŒã¿ãŒã«Javaãã€ã³ã¹ããŒã«ãïŒããŒãžã§ã³6以äžãæãŸããïŒã次ã«Eclipseãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã Javaéçºè åãã®Eclipse IDEïŒ85 MBïŒã§ååã§ãã Windowsã§ã¯ãEmacsã«æ £ããªãããã«ãããã«erlIDEããå§ããããšããå§ãããŸãã
ããŠãèšèªãã®ãã®ã«æ»ããŸãããã
æåã®ã¢ããªã±ãŒã·ã§ã³ãäœæãã
æåã«ããããžã§ã¯ãããããã©ã«ããŒãäœæããŸãã ãã®äžã«ã次ã®ãµããã©ã«ããŒãäœæããå¿ èŠããããŸãã
- ebin-ã³ã³ãã€ã«ãããã³ãŒãïŒ.beamïŒã¯ããã«çœ®ãããŸã
- src-ã¢ããªã±ãŒã·ã§ã³ãœãŒã¹ïŒ.erlïŒ
- include-ããããŒãã¡ã€ã«ïŒ.hrlïŒ
- doc-ããã¥ã¡ã³ã
- priv-ã¢ããªã±ãŒã·ã§ã³ãåäœããå¿ èŠãããããä»ã®ãã©ã«ããŒã«ã¯å«ãŸããŠããªããã®ä»ãã¹ãŠ
ããã¯ãOTPãæšå¥šããæšæºã¢ããªã±ãŒã·ã§ã³æ§é ã§ãã ã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒããã©ã«ããŒã§ã次ã®å 容ã®emakefileãäœæããŸãã
{"src/*", [debug_info, {i, "include"}, {outdir, "ebin"}]}.
次ã«ãã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒããã©ã«ããŒã«ããããŒãã·ã§ã«ã§ãã³ãã³ãmakeïŒallïŒïŒãå®è¡ããã ãã§ããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã¢ãžã¥ãŒã«ãåã³ã³ãã€ã«ã§ããŸãã
ãebinããµããã©ã«ããŒã§ããããã次ã®å 容ã®your_application.appãã¡ã€ã«ãäœæããå¿ èŠããããŸãã
{application, your_application.app,
[{description, "Test application"},
{vsn, "1"},
{modules, [you_application, you_application_sup]},
{registered, []},
{applications, [kernel, stdlib, sasl]},
{mod, {your_application,[]}}
]}.
æåŸã«ããsrcããã©ã«ããŒã«ãæå°éã®ã³ã³ãã³ããå«ãã¡ã€ã³ãããžã§ã¯ããã¡ã€ã«you_application.erlãäœæããå¿ èŠããããŸãã
-module(you_application).
-behaviour(application).
-export([start/2, stop/1]).
start(_Type, _Args) ->
your_application_sup:start_link().
stop(_State) ->
ok.
ãããã£ãŠãErlangã§æå°éã®ã¢ããªã±ãŒã·ã§ã³ãäœæããŸãããããããŸã§ã®ãšããäœãããŠããŸããã ãŸããã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã¹ãŒããŒãã€ã¶ãŒã¯ãŸã å®è£ ãããŠããŸããïŒããã«ã€ããŠã¯åŸã§èª¬æããŸãïŒã ã¢ããªã±ãŒã·ã§ã³ã®äœæã®è©³çŽ°ã«ã€ããŠã¯ãOTPã®ããã¥ã¡ã³ããåç §ããŠãã ããã
ãããã¹ã¯ããã³ãŒã
Erlang / OTPã®éåžžã«äŸ¿å©ãªæ©èœã¯ãã·ã¹ãã ãåæ¢ããã«ã³ãŒãããããã¹ã¯ããã³ã°ããããšã§ãã ããã¯ã1ã€ã®ã¢ãžã¥ãŒã«ã®äŸã§ã©ã®ããã«æ©èœããŸããïŒ ããšãã°ãã¢ããªã±ãŒã·ã§ã³ã¢ãžã¥ãŒã«ã®1ã€ã§ã³ãŒããå€æŽããå®è¡äžã®ã·ã¹ãã ã§ãã®å Žã§ã³ãŒãã眮ãæããããšããŸãã Erlangã®ãã®ç¶æ³ã§ã¯ãã¢ããªã±ãŒã·ã§ã³å šäœãåæ¢ããå¿ èŠã¯ãããŸããã ããŒãã·ã§ã«ã«å ¥åããã ãã§ååã§ãïŒ
l(your_module).
ãã®ã³ãã³ããå®è¡ãããšãæ°ããã³ãŒããæ©èœããŸãã ãã詳现ã«ã¯ãErlangä»®æ³ãã·ã³ã¯ãåã¢ãžã¥ãŒã«ã®2ã€ã®ã³ããŒïŒçŸåšã®ã¢ãžã¥ãŒã«ãšä»¥åã®ã¢ãžã¥ãŒã«ïŒãã¡ã¢ãªã«ä¿åããŸãã 以åã®ããŒãžã§ã³ãä¿æããçç± ã¢ããªã±ãŒã·ã§ã³ãåæ¢ããã«æ°ããã³ãŒããæ£ããåäœããªãå Žåã«ã以åã®ããŒãžã§ã³ã«ãã°ããããŒã«ããã¯ããããã
ãã¡ãããåå¥ã®ã¢ãžã¥ãŒã«ã ãã§ãªããã¢ããªã±ãŒã·ã§ã³å šäœããªã³ã¶ãã©ã€ã§çœ®ãæããããšãã§ããŸãã ãããè¡ãã«ã¯ïŒ
- ã¢ããªã±ãŒã·ã§ã³ã¢ããã°ã¬ãŒããã¡ã€ã«ãäœæããŸãããã®ãã¡ã€ã«ã§ã¯ãå€ãããŒãžã§ã³ãæ°ããããŒãžã§ã³ã«çœ®ãæããããã®ã«ãŒã«ãšãããŒãžã§ã³ã®çœ®ãæãäžã®ã¢ãžã¥ãŒã«éã®äŸåé¢ä¿ãèŠå®ããŠããŸãã
- ãªãªãŒã¹ã¢ããã°ã¬ãŒããã¡ã€ã«ãäœæãã
- å€ãããŒãžã§ã³ã®äžã«æ°ããããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããŸã
èšäºã®ãµã€ãºãå°ããããããã«ããããã®æé ã詳现ã«èª¬æããŠããããã¥ã¡ã³ãã«éä¿¡ããŠè©³çŽ°ã確èªããŸãã
ããããè€æ°ã®ãµãŒããŒã§æ§æãããåæ£ã·ã¹ãã å šäœããããã·ã¹ãã å šäœãåæ¢ããã«ããããã¹ãŠãåæã«äº€æããå¿ èŠãããå Žåã®å¯ŸåŠæ¹æ³ã æ®å¿µãªãããErlang / OTPã¯æ¢è£œã®äŸ¿å©ãªãœãªã¥ãŒã·ã§ã³ãããã§æäŸããŠããŸããã ããã§ããOTPã¢ãžã¥ãŒã«ã«ã¯erl_boot_serverãå«ãŸããŠããŸããããã«ãããããŒãã®éå§æã«ãå¥ã®ããŒãããæ§æãã¡ã€ã«ãå«ãã¢ããªã±ãŒã·ã§ã³ã³ãŒããããŒãã§ããŸãã 次ã«ãã·ã¹ãã å šäœã®ãªãŒããŒããŒãã次ã®ããã«å®è£ ã§ããŸããæåã«ãerl_boot_serverã¢ãžã¥ãŒã«ã䜿çšããŠãèµ·åæã«ä»ã®ããŒããããŒããããã³ãŒãã§ããã¡ã€ã³ãµãŒããŒã§ã³ãŒãããããã¹ã¯ãããããŸãã ãããŠãã¡ãã»ãŒãžããã¹ãŠã®ããŒãã«éä¿¡ããŠãããŒããéè² è·ã«ããŸãã ãã®ãããªã¡ãã»ãŒãžãåä¿¡ãããšãããŒãã§initã³ãã³ããå®è¡ãããŸãïŒrestart / 0ã¯ãããŒããå®å šã«åæ¢ããã«ãªãŒããŒããŒãããŸãã éè² è·ã®åŸããã¹ãŠã®ããŒãã¯ã¡ã€ã³ãµãŒããŒããæ¢ã«æŽæ°ãããã³ãŒããååŸããŸãã ãã®ã¢ãããŒãã«ã€ããŠã¯ãAmazon EC2ã§ã®Erlangã®ã»ããã¢ãã ïŒèšäºã®2çªç®ã®éšåïŒãšAmazon EC2ã§ã®Erlangã¯ã©ã¹ã¿ãŒã®ã¢ããã°ã¬ãŒãã® 2ã€ã®èšäºã§èª¬æãããŠããŸã ã
è¡å
ãã®èšèªã®ãã1ã€ã®èå³æ·±ãæ©èœã¯ãåŸæ¥ã®èšèªã®ã€ã³ã¿ãŒãã§ã€ã¹ã«é¡äŒŒããåäœã§ãããããæ£ç¢ºã«ã¯æœè±¡ã¯ã©ã¹ã§ãã ããšãã°ãã¢ãžã¥ãŒã«ã®å é ã«
-behaviour(application).
ãèšè¿°ãããŠããå Žå
-behaviour(application).
-ããã¯2ã€ã®ããšãæå³ããŸããããžãã¯ã®äžéšã¯æ¢ã«OTPã§å®è£ ããã2çªç®ã¯ç¹å®ã®ã³ãŒã«ããã¯é¢æ°ã®ã»ãããã¢ãžã¥ãŒã«ã«å®è£ ããå¿ èŠããããŸãã ãã®å Žåãéå§æ©èœãšåæ¢æ©èœãå®è£ ããå¿ èŠããããŸãã 詳现ã«ã€ããŠã¯ã åäœã«é¢ããããã¥ã¡ã³ããéä¿¡ããŠãã ããã
ããã»ã¹ãæ»ãªãã
æåã®èšäºã§ãã§ã«è¿°ã¹ãããã«ãErlangã§æ§ç¯ãããã·ã¹ãã ã®é«ãä¿¡é Œæ§ã¯ããã¹ãŠã®ã³ãŒããã¯ã©ãã·ã¥ããªãããã«æžãããŠãããšããäºå®ã«åºã¥ããŠããŸããããã¯ãŒã¯ãããŒã«ãšã©ãŒããã£ãå Žåãåžžã«ãããç£èŠããŠãã人ãããŸãç¶æ³ãä¿®æ£ããŠã·ã¹ãã ã埩å ããããã»ã¹ã å®éãã»ãšãã©ã®å Žåãã¯ãŒã¯ãããŒã¯éåžžããšã©ãŒãçºçããå Žåã®å¯ŸåŠæ¹æ³ãæ£ç¢ºã«ææ¡ããŠããªããããåçŽã«æ»ãã§èŠ³å¯ããã»ã¹ã«ç¶æ³ãç解ãããæ¹ãããæ£ç¢ºã§ãã ããã¯æ¬¡ã®ããã«è¡ãããŸãã
- ãŸãã芳å¯ããã»ã¹ã¯ã¢ãŒã©ã³ã§æåãªã³ãã³ããå®è¡ããŸãã
process_flag(trap_exit, true).
ããã¯ããã®ããã»ã¹ãé¢é£ããã»ã¹ã®èœäžã«é¢ããã¡ãã»ãŒãžããã£ããããããšãæå³ããŸãã ãã®ã³ãã³ããå®è¡ããåŸãã¯ãŒã¯ãããŒãã¯ã©ãã·ã¥ãããšã次ã®åœ¢åŒã®ã¡ãã»ãŒãžã衚瀺ãããŸãïŒ{'EXIT', From, Reason}
ã¯èŠ³å¯ããã»ã¹ã«å°çããŸãã process_flagïŒtrap_exitãtrueïŒãå®è¡ããããã»ã¹ãéäžã§èŠã€ãããŸã§åŠçããŸãã - 次ã«ãç£èŠããã»ã¹ã¯é¢é£ããã¯ãŒã¯ãããŒãäœæããŸãã
spawn_link(?MODULE, worked_function, [Arguments]).
- 3çªç®ã«ãç£èŠããã»ã¹ã¯ã¡ãã»ãŒãžã®ãªãã¹ã³ãéå§ããŸãã
receive
{'EXIT', From, Reason} ->
supervising_function() % (. )
end
supervising_function() ->
process_flag(trap_exit, true).
spawn_link(?MODULE, worked_function, [Arguments]).
receive
{'EXIT', From, Reason} ->
supervising_function()
end
end.
建ç¯çšã¬ã³ã¬Erlang / OTP
ãã ããç£èŠããã»ã¹ãæåããèšè¿°ããããå ±æãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããããã»ã¹ãªã©ãèšè¿°ããå¿ èŠã¯ãŸã£ãããããŸããã Erlang / OTPã§ã®20幎æªæºã®èšèªéçºã§ã¯ãErlangã§æžãããã¢ããªã±ãŒã·ã§ã³ãéåžžæ§ç¯ããããä¿¡é Œæ§ã®é«ããããã°ãããåºæ¬ã³ã³ããŒãã³ãã®ã»ãããéçºãããŸããã ããã«ãããŸãïŒ
- gen_server-ã·ã¹ãã ã§ã®ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®çžäºäœçšããµããŒãããåºæ¬çãªãµãŒããŒå®è£
ã ããã§ãããµãŒããŒãã®æŠå¿µã¯äžè¬çã«åãå
¥ããããŠããæŠå¿µãšäžèŽãããã®ã§ã¯ãªããç¹å®ã®Erlang / OTPãµãŒããŒãæå³ããããšã«æ³šæããŠãã ããã éåžžãã·ã¹ãã ã§ã¯ã圌ã¯ã·ã¹ãã ã®å
±æãªãœãŒã¹ã«ã¢ã¯ã»ã¹ãã責任ããããŸãã
- gen_fsm-ã¹ããŒããã·ã³ãå®è£ ããããŒã¹ã¢ãžã¥ãŒã«
- gen_event-ã€ãã³ãåŠçæ©èœãå®è£ ããåºæ¬ã¢ãžã¥ãŒã«
- ãããŠãã¡ããã ã¹ãŒããŒãã€ã¶ãŒ -ã¢ãžã¥ãŒã«ã¯ããã®åããã»ã¹ãéå§ãåæ¢ãããã³ç£èŠããããã«èšèšãããŠããŸãã å€ãã®çè«ãæžããªãããã«ãã¹ãŒããŒãã€ã¶ãŒåæåé¢æ°ã®ç°¡åãªäŸã瀺ããŸãã
init() ->
RestartStrategy = one_for_one
MaxRestarts = 10,
MaxTimeBetRestarts = 3600,
SupFlags = {RestartStrategy, MaxRestarts, MaxTimeBetRestarts},
ChildSpecs = [{Some_Module, {Some_Module, Function, []}, permanent, TimeOut,
worker, %
[Some_Module]}],
{ok, {SupFlags, ChildSpecs}}.
ãã®ã³ãŒãã¯1ã€ã®åããã»ã¹ãéå§ããŸããåããã»ã¹ã®åèµ·åã®æ倧æ°ã¯10ã§ãé »åºŠã¯3600ããªç§ä»¥äžã§ãã
äžèšã®ãã¹ãŠã®åºæ¬ã³ã³ããŒãã³ãïŒã¹ãŒããŒãã€ã¶ãŒãé€ãïŒã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãããããªããŒãããããšãã«èªåçã«å®è¡ãããcode_changeé¢æ°ããããŸãã ãã®é¢æ°ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããããŒãžã§ã³ããå¥ã®ããŒãžã§ã³ãžã®ã¹ã ãŒãºãªç§»è¡ãæäŸããã³ãŒããäœæã§ããŸãã
æ®å¿µãªãããåã¢ãžã¥ãŒã«ã®è©³çŽ°ãªèª¬æãšãããã®éã®é¢ä¿ã«ã€ããŠã¯ãããã€ãã®èšäºãå¿ èŠã«ãªããŸããããã«ããããã¯ã èšèšã®ååãã§è©³ãã説æãããŠããŸãã ãŸãã䜿çšäŸã«ç®ãåããå¿ èŠã¯ãããŸãããErlangã§äœæããããããç¥ãããŠããã¢ããªã±ãŒã·ã§ã³ãã©ã€ãã©ãªã䜿çšããŠç¢ºèªããŠãã ããã ãããã®ã»ãšãã©ãã¹ãŠã¯ããããã®åºæ¬çãªã³ã³ããŒãã³ãã䜿çšããŠæžãããŠããŸãã
èšäºã®æåŸã«ã ã¢ãŒã©ã³ã«é¢ããåªãããŠã£ãããã£ã¢ã®èšäºãžã®ãªã³ã¯ãšãDima Smolinã«ãã£ãŠåéãããErlagã«é¢ãã2ã€ã®åªãããªãœãŒã¹ã³ã¬ã¯ã·ã§ã³ïŒ 1ã2 ïŒãæäŸããŸãã Erlangèšèªã«èå³ã®ãã人ã«ãšã£ãŠã¯ããããã®ãªã³ã¯ã¯èšèªãæ·±ãæãäžããã®ã«ååã§ãã
ç¶ç¶ããã«ã¯...
æåã®èšäºã®ããã«ãèæ ®ãã¹ããããã¯ã®ãªã¹ãã¯åããŸãŸã§ããåæ£MnesiaããŒã¿ããŒã¹ïŒErlang / OTPã®äžéšïŒã䜿çšããAmazon S3ãšAmazon EC2ã䜿çšããŠRisovaskaãµãŒããŒã§ãããã®ãã¯ãããžãŒã䜿çšããäŸã䜿çšããŸãã