SlideShare ist ein Scribd-Unternehmen logo
1 von 54
Erlang,[object Object],2008 아꿈사Annual Summary,[object Object],현수명,[object Object],soomong80@gmail.com,[object Object],http://soomong.tistory.com,[object Object]
30분 동안 Erlang에서 가장 중요한것들만 효과적으로 전달하자.,[object Object],Erlang언어를 처음 접하는 사람들에게 새로운 언어의 장점을 소개함으로써 사고의 폭을 넓힐 수 있다면 성공.,[object Object]
Erlang?,[object Object],병행성,[object Object],멀티코어,[object Object],분산,[object Object],무정지,[object Object]
Erlang ?,[object Object],Ericsson 에서 초기개발되어 사용,[object Object],함수형 언어 가운데 산업에서 쓰이는 유일한 언어,[object Object],자체 Erlang shell 지원,[object Object],Everything is a process.,[object Object],운영체제의 프로세스가 아니라 얼랭 언어 자체의 프로세스.,[object Object]
$ erl,[object Object],1> 1+2.,[object Object],3,[object Object],2> A = 5.,[object Object],5,[object Object],3> X = hello.,[object Object],hello,[object Object],4> X.,[object Object],hello,[object Object]
애텀,[object Object],불변의 값.,[object Object],1> hello.,[object Object],hello,[object Object],2> rectangle.,[object Object],rectangle,[object Object]
fun,[object Object],익명함수,[object Object],F = fun(X) -> (2 * X) end.,[object Object],인자 X 가 들어왔을때 2*X 를 수행해서 결과를 돌려주는 함수,[object Object],결과값을 F 에 넣는것이 아니라함수자체를 F 에 bound 하는것을의미,[object Object]
$ erl,[object Object],1> F = fun(X) -> (2 * X) end.,[object Object],#Fun<erl_eval.6.5634564>,[object Object],2> F(10).,[object Object],20,[object Object],3> Double = F.,[object Object],#Fun<erl_eval.6.5634564>,[object Object],4> Double(5).,[object Object],10,[object Object],5> F(5).,[object Object],10,[object Object]
튜플,[object Object],정해진 수의 항목을 하나의 개체로 그룹핑,[object Object],C 의 구조체와 비슷. 익명 구조체,[object Object],1> Rect = {rect, 10, 45}.,[object Object],{rect, 10, 45},[object Object],2> {rect, X, Y} = Rect.,[object Object],{rect, 10, 45},[object Object],3> X.,[object Object],10,[object Object],4> Y.,[object Object],45,[object Object],{rect, 10, 45},[object Object],{rect,  X , Y },[object Object]
리스트,[object Object],[ Head | Tail ],[object Object],1> L = [1,2,3,4].,[object Object],[1,2,3,4],[object Object],2> [H|T] = L.,[object Object],[1,2,3,4],[object Object],3> H.,[object Object],1,[object Object],4> T.,[object Object],[2,3,4],[object Object],5> [H1|T1] = T.,[object Object],[2,3,4],[object Object],6> H1.,[object Object],2,[object Object],7> T1.,[object Object],[3,4,],[object Object],[1 , 2,3,4],[object Object],[H|   T  ],[object Object],[2 , 3,4],[object Object],[H1| T1 ],[object Object]
Factorial,[object Object],fact.erl,[object Object],-module(fact).,[object Object],-export([fac/1]).,[object Object],fac(0) -> 1;,[object Object],fac(N) -> N * fac(N-1).,[object Object]
Quicksort,[object Object],quicksort.erl,[object Object],-module(quicksort). ,[object Object],-export([quicksort/1]).,[object Object],quicksort([]) -> []; ,[object Object],quicksort([Pivot|Rest]) ->,[object Object],quicksort([Front || Front <- Rest, Front < Pivot]) ,[object Object],    ++ [Pivot] ++ ,[object Object],quicksort([Back || Back <- Rest, Back >= Pivot]).,[object Object],짧은 코드!,[object Object]
Erlang?,[object Object],병행성,[object Object],멀티코어,[object Object],분산,[object Object],무정지,[object Object]
The Free Lunch Is Over,[object Object],The Free Lunch?,[object Object],The Free Performance Lunch!,[object Object],싱글코어CPU 의 발전한계.,[object Object],멀티코어 CPU,[object Object],Concurrency is the next major revolution in how we write software. -Herb Sutter,[object Object]
병행성 지향 프로그래밍,[object Object],Concurrency-oriented programming,[object Object],처음부터 병행성을 고려해서 만든 언어.,[object Object],공유 메모리가 없음,[object Object],잠금 매커니즘필요없음,[object Object],쉽게 병행 프로그래밍 가능,[object Object]
단일 할당 변수,[object Object],1> X.,[object Object],1: variable ‘X' is unbound,[object Object],2> X = 50.,[object Object],50,[object Object],3> X = 23.,[object Object],** exception error: no match of right hand side value 23,[object Object],변수가 아니라 write-once 변수,[object Object],즉 한번만 bound 를 할 수 있음,[object Object]
패턴매칭,[object Object],X = 50.,[object Object],= 은 할당연산자가 아니라 패턴매칭연산자.,[object Object],오른쪽을 평가해서 그 결과를 왼쪽에 있는 패턴과 매치하라는 뜻.,[object Object]
왜 단일 할당이 프로그램을 더 낫게 만드는가?,[object Object],변수의 값을 바꿀수 있다?,[object Object],누가 언제 바꿨는지 깔끔하게 알기힘듬. ,[object Object],복잡한 잠금 매커니즘 필요.,[object Object],변수의 값을 바꿀수 없다?,[object Object],불변상태의 메모리는 read 만 가능.,[object Object],잠금 매커니즘이필요없다.,[object Object],즉 쉬운 병행 프로그래밍 가능,[object Object],어떻게? 프로세스 메시지 전달 방식으로.,[object Object]
Pure message passing language,[object Object],순수 메시지 전달 언어,[object Object],명령어 3개로병행프로그래밍 가능,[object Object],spawn : 프로세스 생성,[object Object],! (send) : 메시지 보내기,[object Object],receive : 메시지 받기,[object Object]
$ erl,[object Object],1> Pid = spawn(fun area:loop/0).,[object Object],<0.45.0>,[object Object],2> Pid! {rect, 6, 10}.,[object Object],rect : 60,[object Object],3> Pid! {circle, 5}.,[object Object],circle : 78.5,[object Object],4> Pid! {triangle, 2, 4, 5}.,[object Object],what is it? triangle?,[object Object]
area.erl,[object Object],-module(area).,[object Object],-export([loop/0]).,[object Object],loop()->,[object Object],receive,[object Object],		{rect, Width, Ht} ->,[object Object],io:format(“rect : ~p~n”, [Width * Ht]),,[object Object],			loop();,[object Object],		{circle, R} ->,[object Object],io:format(“circle : ~p~n”, [3.14 * R * R]),,[object Object],			loop();,[object Object],		Other ->,[object Object],io:format(“what is it? ~p?~n”, [Other]),,[object Object],			loop(),[object Object],	end.,[object Object]
Erlang process,[object Object],OS process 와는 다른얼랭자체process,[object Object],프로세스마다 mailbox 를 하나씩 가짐,[object Object],프로세스에 메시지를 보내면 mailbox 로 들어가고 receive 문을 평가할때mailbox 에서 메시지를 하나씩 꺼내서 처리,[object Object]
공유메모리 없고 잠금도 필요없으므로Easy,[object Object],쉬운병행 프로그래밍 가능,[object Object]
Erlang?,[object Object],병행성,[object Object],멀티코어,[object Object],분산,[object Object],무정지,[object Object]
멀티코어 프로그래밍,[object Object],Multicore programming,[object Object],쉬운 병행 프로그래밍 덕분에 멀티코어도 역시 쉽게 가능,[object Object],동일머신의 멀티코어 분산처리,[object Object],프로세스를 spawn 해서 처리하고 결과모으기,[object Object]
-module(pmap).,[object Object],-export([map/2,pmap/2]).,[object Object],map(_, []) -> [];   ,[object Object],map(F, [H|T]) -> [F(H) | map(F,T)].  ,[object Object],pmap(F, L) ->    ,[object Object],	S = self(),,[object Object],	Ref = erlang:make_ref(),    ,[object Object],Pids = map( fun(I) -> spawn(fun() -> do_f(S, Ref, F, I) end) end , L ),   ,[object Object],	gather(Pids, Ref).   ,[object Object],do_f(Parent, Ref, F, I) ->                          ,[object Object],	Parent ! {self(), Ref, (catch F(I))}.   ,[object Object],gather([Pid|T], Ref) ->   ,[object Object],	receive,[object Object],		{Pid, Ref, Ret} -> [Ret|gather(T, Ref)]   ,[object Object],	end;   ,[object Object],gather([], _) -> []. ,[object Object]
싱글코어 프로그래밍,[object Object],map(_, []) -> [];   ,[object Object],map(F, [H|T]) -> [F(H) | map(F,T)].,[object Object],1> F = fun(X) -> (2 * X) end.,[object Object],#Fun<erl_eval.6.5634564>,[object Object],2> F(10).,[object Object],20,[object Object],3> pmap:map(F,[1,2,3,4,5]).,[object Object],[2,4,6,8,10],[object Object]
멀티코어 프로그래밍,[object Object],1> F = fun(X) -> (2 * X) end.,[object Object],#Fun<erl_eval.6.5634564>,[object Object],2> F(10).,[object Object],20,[object Object],3> pmap:pmap(F,[1,2,3,4,5]).,[object Object],[2,4,6,8,10],[object Object],process 5개가 각각 인수를 병렬로 평가,[object Object]
멀티코어 프로그래밍,[object Object],pmap(F, L) ->    ,[object Object],	S = self(),,[object Object],	Ref = erlang:make_ref(),    ,[object Object],Pids = map( fun(I) -> spawn(fun() -> do_f(S, Ref, F, I) end) end , L ),   ,[object Object],	gather(Pids, Ref).   ,[object Object],do_f(Parent, Ref, F, I) ->                          ,[object Object],	Parent ! {self(), Ref, (catch F(I))}.   ,[object Object],gather([Pid|T], Ref) ->   ,[object Object],	receive,[object Object],		{Pid, Ref, Ret} -> [Ret|gather(T, Ref)]   ,[object Object],	end;   ,[object Object],gather([], _) -> []. ,[object Object]
pmap:pmap(F,[1,2,3,4,5]).,[object Object],Pids = map( fun(I) -> ,[object Object],		spawn(fun() -> do_f(S, Ref, F, I) end) ,[object Object],	end , L ),,[object Object],do_f,[object Object],F(I),[object Object],spawn,[object Object],pmap,[object Object],do_f(Parent, Ref, F, I) ->                          ,[object Object],	Parent ! {self(), Ref, (catch F(I))}. ,[object Object],Parent ! 2,[object Object],gather([Pid|T], Ref) ->   ,[object Object],	receive,[object Object],		{Pid, Ref, Ret} -> ,[object Object],			[Ret|gather(T, Ref)]   ,[object Object],	end;   ,[object Object],gather([], _) -> []. ,[object Object],반복,[object Object]
쉬운 병행프로그래밍 덕분에Easy,[object Object],쉬운멀티코어 프로그래밍 가능,[object Object]
Erlang?,[object Object],병행성,[object Object],멀티코어,[object Object],분산,[object Object],무정지,[object Object]
분산?,[object Object],Distributed Programming,[object Object],멀티코어 프로그래밍에서 spawn 으로 생성한 프로세스들이 동일한 머신에 있을필요없음.,[object Object],Erlang node 와 얼랭 표준 라이브러리를 이용,[object Object]
여러머신의 네트워크 분산처리,[object Object],Erlang node 간의 message 전달방식으로 쉬운분산처리 가능,[object Object],Erlang node 란 이름을 가지고 있는 Erlang runtime system,[object Object],이름을 가진 Erlang shell,[object Object]
여러머신의 네트워크 분산처리,[object Object],server 라는 이름의 Erlang node 실행,[object Object],$erl –sname server,[object Object],(server@serverhost) 1>,[object Object],쿠키,[object Object],각 node 는 쿠키를 한개씩 가지고있고 쿠키가 같은노드끼리만 통신가능,[object Object],$erl –sname client –setcookieabc,[object Object],(client@clienthost) 1>,[object Object]
Erlang
-module(mod).,[object Object],-export([F/1]).,[object Object],F(X) -> 2*X.,[object Object],$erl –sname server,[object Object],(server@serverhost) 1>,[object Object],rpc:call(client@clienthost, mod, F, [2]).,[object Object],4,[object Object],Server Node,[object Object],rpc:call,[object Object],4,[object Object],F(2),[object Object],Client Node,[object Object],$erl –sname client,[object Object],(client@clienthost) 1>,[object Object]
Erlang node와 얼랭 표준 라이브러리를 이용하여Easy,[object Object],쉬운분산 프로그래밍 가능,[object Object]
Erlang?,[object Object],병행성,[object Object],분산,[object Object],멀티코어,[object Object],무정지,[object Object]
무정지?,[object Object],멈추지 않는 서비스,[object Object],Server down!,[object Object],다른서버가 작업을 이어서 수행,[object Object],무정지는프로세스간의 link 기능으로 쉽게 구현가능,[object Object]
Process spawn,[object Object],내가 생성한 프로세스가 멈춰도 난 모름,[object Object],Pid = spawn(fun() -> … end),[object Object],내가 생성한 프로세스가 멈추면 나도 멈출래,[object Object],Pid = spawn_link(fun() -> … end),[object Object],내가 생성한 프로세스가 멈추면 내가 해결해줄께,[object Object],process_flag(trap_exit, true),,[object Object],Pid = spawn_link(fun() -> … end),[object Object]
Pid = spawn(fun() -> … end),[object Object],Pid = spawn_link(fun() -> … end),[object Object],process_flag(trap_exit, true),,[object Object],Pid = spawn_link(fun() -> … end),[object Object],A,[object Object],B,[object Object]
-module(fault).,[object Object],-export([start/0]).,[object Object],start() -> process_flag(trap_exit, true),,[object Object],spawn_link(fun() -> work() end),,[object Object],	loop().,[object Object],work() -> ,[object Object],	sleep(5000),,[object Object],	2/0.,[object Object],loop() ->,[object Object],	receive,[object Object],		{'EXIT',SomePid,Reason} ->,[object Object],io:format("system down !!"),[object Object],	end.,[object Object],sleep(T) ->,[object Object],	receive,[object Object],	after T -> true,[object Object],	end.,[object Object]
(server@host)1> fault:start().,[object Object],…5초후…,[object Object],system down !!,[object Object],=ERROR REPORT==== 7-Jan-2009::23:56:29 ===,[object Object],Error in process <0.67.0> on node 'server@host' with exit value: {badarith,[{fault,work,0}]},[object Object],(server@host)2>,[object Object]
-module(fault).,[object Object],-export([start/0]).,[object Object],start() -> process_flag(trap_exit, true),,[object Object],spawn_link(fun() -> work() end),,[object Object],	loop().,[object Object],work() -> ,[object Object],	sleep(5000),,[object Object],	2/0.,[object Object],loop() ->,[object Object],	receive,[object Object],		{'EXIT',SomePid,Reason} ->,[object Object],io:format("system down !!"),,[object Object],start().,[object Object],	end.,[object Object],sleep(T) ->,[object Object],	receive,[object Object],	after T -> true,[object Object],	end.,[object Object]
(server@host)1> fault:start().,[object Object],…5초후…,[object Object],system down !!,[object Object],=ERROR REPORT==== 7-Jan-2009::23:56:29 ===,[object Object],Error in process <0.67.0> on node 'server@host' with exit value: {badarith,[{fault,work,0}]},[object Object],…5초후…,[object Object],system down !!,[object Object],=ERROR REPORT==== 7-Jan-2009::23:56:34 ===,[object Object],Error in process <0.68.0> on node 'server@host' with exit value: {badarith,[{fault,work,0}]},[object Object]
process link 기능을 이용하여Easy,[object Object],쉬운무정지 프로그래밍 가능,[object Object]
Hotcode swapping,[object Object],Dynamic Code Loading 기능,[object Object],우리가 특정모듈의 특정함수를 호출할때항상 가장 최신 버전의 함수가 호출됨,[object Object]
-module(hotcode).,[object Object],-export([start/0]).,[object Object],start() -> ,[object Object],	spawn(fun() -> loop() end).,[object Object],loop() ->,[object Object],	sleep(1000),,[object Object],	Val = a:x(),,[object Object],io:format("a:x() : ~p~n", [Val]),,[object Object],	loop().,[object Object],sleep(T) ->,[object Object],	receive,[object Object],	after T -> true,[object Object],	end.,[object Object],-module(a).,[object Object],-export([x/0]).,[object Object],x() -> 1.,[object Object]
1> c(hotcode).,[object Object],{ok,hotcode},[object Object],2> hotcode:start(a).,[object Object],<0.49.0>,[object Object],a:x() : 1,[object Object],a:x() : 1,[object Object],a:x() : 1,[object Object],-module(a).,[object Object],-export([x/0]).,[object Object],x() -> 1.,[object Object],-module(a).,[object Object],-export([x/0]).,[object Object],x() -> 2.,[object Object],3> c(a).,[object Object],{ok,a},[object Object],a:x() : 2,[object Object],a:x() : 2,[object Object]
동적 코드 로딩WoW,[object Object],이런것도 가능,[object Object]
Erlang?,[object Object],애텀, fun, 튜플, 리스트,[object Object],병행성,[object Object],공유메모리가 없음 – 잠금필요없음,[object Object], spawn, ! , receive 3개 명령어,[object Object],멀티코어,[object Object], process 여러 개 spawn 해서 처리하고 취합,[object Object],분산,[object Object],Erlang node 와 표준 라이브러리 rpc,[object Object],무정지,[object Object], process link,[object Object]
언어의 한계가 ,[object Object],곧 자기세계의 한계이다.,[object Object], - 루트비히비트켄슈타인,[object Object]
reference,[object Object],Programming Erlang  –인사이트-,[object Object],http://www.gotw.ca/publications/concurrency-ddj.htm -Herb Sutter-,[object Object],실용주의프로그래머 –인사이트-,[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

포인터의 기초(1)
포인터의 기초(1)포인터의 기초(1)
포인터의 기초(1)Hoyoung Jung
 
Python3 10장 문자열이야기
Python3 10장 문자열이야기Python3 10장 문자열이야기
Python3 10장 문자열이야기Jihoon Kong
 
정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)Sunyoung Kim
 
Python3 brief summary
Python3 brief summaryPython3 brief summary
Python3 brief summaryHoChul Shin
 
파이썬+정규표현식+이해하기 20160301
파이썬+정규표현식+이해하기 20160301파이썬+정규표현식+이해하기 20160301
파이썬+정규표현식+이해하기 20160301Yong Joon Moon
 
Python datatype
Python datatypePython datatype
Python datatype건희 김
 
정규표현식(Regular expressions)
정규표현식(Regular expressions)정규표현식(Regular expressions)
정규표현식(Regular expressions)Juhee Kim
 
Python Sympy 모듈 이해하기
Python Sympy 모듈 이해하기Python Sympy 모듈 이해하기
Python Sympy 모듈 이해하기Yong Joon Moon
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130Yong Joon Moon
 
파이썬 함수
파이썬 함수파이썬 함수
파이썬 함수Gibson Kim
 
텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 Yong Joon Moon
 
2012 Ds D2 03
2012 Ds D2 032012 Ds D2 03
2012 Ds D2 03chl132435
 
python 수학이해하기
python 수학이해하기python 수학이해하기
python 수학이해하기Yong Joon Moon
 
Reflect package 사용하기
Reflect package 사용하기Reflect package 사용하기
Reflect package 사용하기Yong Joon Moon
 
모두의 JIT 컴파일러
모두의 JIT 컴파일러모두의 JIT 컴파일러
모두의 JIT 컴파일러우경 성
 
Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Insuk (Chris) Cho
 
Ruby Enumerator(루비 열거자) 이해하기
Ruby Enumerator(루비 열거자) 이해하기Ruby Enumerator(루비 열거자) 이해하기
Ruby Enumerator(루비 열거자) 이해하기Daegwon Kim
 
파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409Yong Joon Moon
 

Was ist angesagt? (20)

포인터의 기초(1)
포인터의 기초(1)포인터의 기초(1)
포인터의 기초(1)
 
Python3 10장 문자열이야기
Python3 10장 문자열이야기Python3 10장 문자열이야기
Python3 10장 문자열이야기
 
정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)
 
Python3 brief summary
Python3 brief summaryPython3 brief summary
Python3 brief summary
 
파이썬+정규표현식+이해하기 20160301
파이썬+정규표현식+이해하기 20160301파이썬+정규표현식+이해하기 20160301
파이썬+정규표현식+이해하기 20160301
 
Python datatype
Python datatypePython datatype
Python datatype
 
정규표현식(Regular expressions)
정규표현식(Regular expressions)정규표현식(Regular expressions)
정규표현식(Regular expressions)
 
Python Sympy 모듈 이해하기
Python Sympy 모듈 이해하기Python Sympy 모듈 이해하기
Python Sympy 모듈 이해하기
 
Regex
RegexRegex
Regex
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130
 
자료구조03
자료구조03자료구조03
자료구조03
 
파이썬 함수
파이썬 함수파이썬 함수
파이썬 함수
 
텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 텐서플로우 기초 이해하기
텐서플로우 기초 이해하기
 
2012 Ds D2 03
2012 Ds D2 032012 Ds D2 03
2012 Ds D2 03
 
python 수학이해하기
python 수학이해하기python 수학이해하기
python 수학이해하기
 
Reflect package 사용하기
Reflect package 사용하기Reflect package 사용하기
Reflect package 사용하기
 
모두의 JIT 컴파일러
모두의 JIT 컴파일러모두의 JIT 컴파일러
모두의 JIT 컴파일러
 
Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017
 
Ruby Enumerator(루비 열거자) 이해하기
Ruby Enumerator(루비 열거자) 이해하기Ruby Enumerator(루비 열거자) 이해하기
Ruby Enumerator(루비 열거자) 이해하기
 
파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409
 

Andere mochten auch

Scalable Web Architecture and Distributed Systems
Scalable Web Architecture and Distributed SystemsScalable Web Architecture and Distributed Systems
Scalable Web Architecture and Distributed Systemshyun soomyung
 
Dependency Breaking Techniques
Dependency Breaking TechniquesDependency Breaking Techniques
Dependency Breaking Techniqueshyun soomyung
 
아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016
아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016
아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016Amazon Web Services Korea
 
[IGC 2016] 아마존 구승모 - 게임 제작을 위한 Amazon의 편리한 도구들 (게임리프트와 럼버야드)
[IGC 2016] 아마존 구승모 - 게임 제작을 위한 Amazon의 편리한 도구들 (게임리프트와 럼버야드)[IGC 2016] 아마존 구승모 - 게임 제작을 위한 Amazon의 편리한 도구들 (게임리프트와 럼버야드)
[IGC 2016] 아마존 구승모 - 게임 제작을 위한 Amazon의 편리한 도구들 (게임리프트와 럼버야드)강 민우
 
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...Amazon Web Services Korea
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11흥배 최
 
[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들MinGeun Park
 

Andere mochten auch (7)

Scalable Web Architecture and Distributed Systems
Scalable Web Architecture and Distributed SystemsScalable Web Architecture and Distributed Systems
Scalable Web Architecture and Distributed Systems
 
Dependency Breaking Techniques
Dependency Breaking TechniquesDependency Breaking Techniques
Dependency Breaking Techniques
 
아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016
아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016
아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016
 
[IGC 2016] 아마존 구승모 - 게임 제작을 위한 Amazon의 편리한 도구들 (게임리프트와 럼버야드)
[IGC 2016] 아마존 구승모 - 게임 제작을 위한 Amazon의 편리한 도구들 (게임리프트와 럼버야드)[IGC 2016] 아마존 구승모 - 게임 제작을 위한 Amazon의 편리한 도구들 (게임리프트와 럼버야드)
[IGC 2016] 아마존 구승모 - 게임 제작을 위한 Amazon의 편리한 도구들 (게임리프트와 럼버야드)
 
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11
 
[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들
 

Ähnlich wie Erlang

이산치 과제7
이산치 과제7이산치 과제7
이산치 과제7mil23
 
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdfkd19h
 
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdfjinwookhong
 
현재 자바스크립트 표준은 어디쯤
현재 자바스크립트 표준은 어디쯤 현재 자바스크립트 표준은 어디쯤
현재 자바스크립트 표준은 어디쯤 Dai-Hyun Lim
 
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요Yongho Ha
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요KTH
 
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호KTH, 케이티하이텔
 
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracleTABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle엑셈
 
2012 Ds A1 05
2012 Ds A1 052012 Ds A1 05
2012 Ds A1 05seonhyung
 
You can read go code
You can read go codeYou can read go code
You can read go codeHomin Lee
 
2012 Ds B1 01
2012 Ds B1 012012 Ds B1 01
2012 Ds B1 01seonhyung
 
2012 Ds B2 02 Pdf
2012 Ds B2 02 Pdf2012 Ds B2 02 Pdf
2012 Ds B2 02 Pdfkd19h
 
2012 Ds B2 02
2012 Ds B2 022012 Ds B2 02
2012 Ds B2 02chl132435
 
제5회 D2 CAMPUS SEMINAR - Go gopher 길들이기
제5회 D2 CAMPUS SEMINAR - Go gopher 길들이기제5회 D2 CAMPUS SEMINAR - Go gopher 길들이기
제5회 D2 CAMPUS SEMINAR - Go gopher 길들이기NAVER D2
 
2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdfkd19h
 
2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdfjinwookhong
 
Design Pattern In Functional Language
Design Pattern In Functional LanguageDesign Pattern In Functional Language
Design Pattern In Functional LanguageSH Park
 

Ähnlich wie Erlang (20)

이산치 과제7
이산치 과제7이산치 과제7
이산치 과제7
 
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf
 
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf
 
현재 자바스크립트 표준은 어디쯤
현재 자바스크립트 표준은 어디쯤 현재 자바스크립트 표준은 어디쯤
현재 자바스크립트 표준은 어디쯤
 
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
 
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
 
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracleTABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
 
자구2번
자구2번자구2번
자구2번
 
2012 Ds A1 05
2012 Ds A1 052012 Ds A1 05
2012 Ds A1 05
 
You can read go code
You can read go codeYou can read go code
You can read go code
 
2012 Ds B1 01
2012 Ds B1 012012 Ds B1 01
2012 Ds B1 01
 
자구3번
자구3번자구3번
자구3번
 
2012 Ds B2 02 Pdf
2012 Ds B2 02 Pdf2012 Ds B2 02 Pdf
2012 Ds B2 02 Pdf
 
2012 Ds B2 02
2012 Ds B2 022012 Ds B2 02
2012 Ds B2 02
 
제5회 D2 CAMPUS SEMINAR - Go gopher 길들이기
제5회 D2 CAMPUS SEMINAR - Go gopher 길들이기제5회 D2 CAMPUS SEMINAR - Go gopher 길들이기
제5회 D2 CAMPUS SEMINAR - Go gopher 길들이기
 
2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf
 
2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf
 
Design Pattern In Functional Language
Design Pattern In Functional LanguageDesign Pattern In Functional Language
Design Pattern In Functional Language
 
Go
GoGo
Go
 

Mehr von hyun soomyung

아꿈사 매니저소개
아꿈사 매니저소개아꿈사 매니저소개
아꿈사 매니저소개hyun soomyung
 
HTML5 & CSS3 - Video,Audio
HTML5 & CSS3 - Video,AudioHTML5 & CSS3 - Video,Audio
HTML5 & CSS3 - Video,Audiohyun soomyung
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Designhyun soomyung
 
The Art of Computer Programming 2.4 다중연결구조
The Art of Computer Programming 2.4 다중연결구조The Art of Computer Programming 2.4 다중연결구조
The Art of Computer Programming 2.4 다중연결구조hyun soomyung
 
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 TreeThe Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Treehyun soomyung
 
Design Pattern - Multithread Ch10
Design Pattern - Multithread Ch10Design Pattern - Multithread Ch10
Design Pattern - Multithread Ch10hyun soomyung
 
The Art of Computer Programming 1.3.2 MIXAL
The Art of Computer Programming 1.3.2 MIXALThe Art of Computer Programming 1.3.2 MIXAL
The Art of Computer Programming 1.3.2 MIXALhyun soomyung
 
The Art of Computer Programming 1.2.5
The Art of Computer Programming 1.2.5The Art of Computer Programming 1.2.5
The Art of Computer Programming 1.2.5hyun soomyung
 
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)hyun soomyung
 
프로그래머의 길,멘토에게 묻다 2장
프로그래머의 길,멘토에게 묻다 2장프로그래머의 길,멘토에게 묻다 2장
프로그래머의 길,멘토에게 묻다 2장hyun soomyung
 
[페차쿠차] 배움의 기술
[페차쿠차] 배움의 기술[페차쿠차] 배움의 기술
[페차쿠차] 배움의 기술hyun soomyung
 
실전 윈도우 디버깅. Ch3. 디버거 해부
실전 윈도우 디버깅. Ch3. 디버거 해부실전 윈도우 디버깅. Ch3. 디버거 해부
실전 윈도우 디버깅. Ch3. 디버거 해부hyun soomyung
 
xUnitTestPattern/chapter8
xUnitTestPattern/chapter8xUnitTestPattern/chapter8
xUnitTestPattern/chapter8hyun soomyung
 
예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법hyun soomyung
 
프로그램은 왜 실패하는가?
프로그램은 왜 실패하는가?프로그램은 왜 실패하는가?
프로그램은 왜 실패하는가?hyun soomyung
 
5장 그래프의 비밀 (Programming Game AI by Example)
5장 그래프의 비밀 (Programming Game AI by Example)5장 그래프의 비밀 (Programming Game AI by Example)
5장 그래프의 비밀 (Programming Game AI by Example)hyun soomyung
 

Mehr von hyun soomyung (20)

아꿈사 매니저소개
아꿈사 매니저소개아꿈사 매니저소개
아꿈사 매니저소개
 
HTML5 & CSS3 - Video,Audio
HTML5 & CSS3 - Video,AudioHTML5 & CSS3 - Video,Audio
HTML5 & CSS3 - Video,Audio
 
Hybrid app
Hybrid appHybrid app
Hybrid app
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
MapReduce
MapReduceMapReduce
MapReduce
 
MongoDB
MongoDBMongoDB
MongoDB
 
The Art of Computer Programming 2.4 다중연결구조
The Art of Computer Programming 2.4 다중연결구조The Art of Computer Programming 2.4 다중연결구조
The Art of Computer Programming 2.4 다중연결구조
 
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 TreeThe Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
 
Design Pattern - Multithread Ch10
Design Pattern - Multithread Ch10Design Pattern - Multithread Ch10
Design Pattern - Multithread Ch10
 
The Art of Computer Programming 1.3.2 MIXAL
The Art of Computer Programming 1.3.2 MIXALThe Art of Computer Programming 1.3.2 MIXAL
The Art of Computer Programming 1.3.2 MIXAL
 
The Art of Computer Programming 1.2.5
The Art of Computer Programming 1.2.5The Art of Computer Programming 1.2.5
The Art of Computer Programming 1.2.5
 
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
 
Clojure Chapter.6
Clojure Chapter.6Clojure Chapter.6
Clojure Chapter.6
 
프로그래머의 길,멘토에게 묻다 2장
프로그래머의 길,멘토에게 묻다 2장프로그래머의 길,멘토에게 묻다 2장
프로그래머의 길,멘토에게 묻다 2장
 
[페차쿠차] 배움의 기술
[페차쿠차] 배움의 기술[페차쿠차] 배움의 기술
[페차쿠차] 배움의 기술
 
실전 윈도우 디버깅. Ch3. 디버거 해부
실전 윈도우 디버깅. Ch3. 디버거 해부실전 윈도우 디버깅. Ch3. 디버거 해부
실전 윈도우 디버깅. Ch3. 디버거 해부
 
xUnitTestPattern/chapter8
xUnitTestPattern/chapter8xUnitTestPattern/chapter8
xUnitTestPattern/chapter8
 
예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법
 
프로그램은 왜 실패하는가?
프로그램은 왜 실패하는가?프로그램은 왜 실패하는가?
프로그램은 왜 실패하는가?
 
5장 그래프의 비밀 (Programming Game AI by Example)
5장 그래프의 비밀 (Programming Game AI by Example)5장 그래프의 비밀 (Programming Game AI by Example)
5장 그래프의 비밀 (Programming Game AI by Example)
 

Erlang

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.