2007년 05월 19일
Code can be an art.
Creative Commons in Seoul의 코드잼. Distributed "Code can be an art."입니다. ㅋㅋ.
처음 하나는 "erl -name s1 -noshell -eval 'ccs_jam:seed()"로 실행하고 두 번째 부터는 "erl -name s2 -noshell -eval 'ccs_jam:join(s1@juno.local)'" 식으로 이름을 바꾸어서 실행하면 때를 지어 돌아가며 "Code can be an art."를 색색으로 노래합니다.

처음 하나는 "erl -name s1 -noshell -eval 'ccs_jam:seed()"로 실행하고 두 번째 부터는 "erl -name s2 -noshell -eval 'ccs_jam:join(s1@juno.local)'" 식으로 이름을 바꾸어서 실행하면 때를 지어 돌아가며 "Code can be an art."를 색색으로 노래합니다.

-module(ccs_jam).
-export([seed/0, join/1]).
next_word(Word) ->
case Word of
"Code" ->
"can";
"can" ->
"be";
"be" ->
"an";
"an" ->
"art";
"art" ->
".";
"." ->
"Code"
end.
seed() ->
Seed = spawn(fun() -> loop() end),
pg2:create(ccs_jam),
pg2:join(ccs_jam, Seed),
Seed ! ".".
join(Node) ->
net_kernel:connect_node(Node),
NewMember = spawn(fun() -> loop() end),
case pg2:join(ccs_jam, NewMember) of
{error, _} ->
timer:sleep(1000),
pg2:join(ccs_jam, NewMember);
ok ->
ok
end.
loop() ->
receive
Word ->
NextWord = next_word(Word),
io:format("\e[~wm~s ", [29 + random:uniform(10), NextWord]),
timer:sleep(100),
Members = pg2:get_members(ccs_jam),
lists:nth(random:uniform(length(Members)), Members) ! NextWord,
loop()
end.
# by | 2007/05/19 03:51 | Erlang | 트랙백 | 덧글(0)







☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]