Upload
changwook-park
View
1.048
Download
2
Embed Size (px)
Citation preview
Elixir? Erlang?
http://www.slideshare.net/YuriLeikind/elixir-study-group-kickoff-meetup?qid=e98d1040-0cd1-4e3a-9d33-ffdb0e1d180b&v=default&b=&from_search=41
Actor Concurrency Model
http://benjamintan.io/blog/2013/06/25/elixir-for-the-lazy-impatient-and-busy-part-2-processes-101/
Elixir• Elixir is a dynamic, functional language designed for
building scalable and maintainable applications.
• Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain.
• To learn more about Elixir, check our getting started guide. Or keep reading to get an overview of the platform, language and tools. - [www.elixir-lang.org]
Elixir• Elixir is a dynamic, functional language designed for
building scalable and maintainable applications.
• Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain.
• To learn more about Elixir, check our getting started guide. Or keep reading to get an overview of the platform, language and tools. - [www.elixir-lang.org]
Elixir• Elixir is a dynamic, functional language designed for
building scalable and maintainable applications.
• Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain.
• To learn more about Elixir, check our getting started guide. Or keep reading to get an overview of the platform, language and tools. - [www.elixir-lang.org]
라이브 코딩
프로젝트 생성
$ mix new kv --module KV --no-brunch
- config - config.exs
- lib - kv.ex
- test - kv_test.exs - test_helper.exs
- mix.exs
[KV_01] 간단한 Key, Value 저장 서버
https://github.com/haruio/ten_minutes_elixir/tree/master/kv_01
GenServer
KV.Storeget(key) set(key, val)
{key, value}
{key, value}
{key, value}
GenServer
KV.Storeget(key) set(key, val)
del(key)
{key, value}
{key, value}
{key, value}
GenServer
KV.Storeget(key) set(key, val)
del(key)
{key, value}
{key, value}
{key, value}
[KV_02] 다시 살아나는 간단한 Key, Value 저장 서버
https://github.com/haruio/ten_minutes_elixir/tree/master/kv_02
GenServer + Supervisor
KV.Store Supervisor
KV.Store
get(key) set(key, val) {key, value}
{key, value}
{key, value}
GenServer + Supervisor
KV.Store Supervisor
KV.Storedel(key)
{key, value}
{key, value}
{key, value}
GenServer + Supervisor
KV.Store Supervisor
KV.Storedel(key)
{key, value}
{key, value}
{key, value}
GenServer + Supervisor
KV.Store Supervisor
KV.StoreKV.Store
[KV_03] 상태를 유지하는 다시 살아나는 간단한 Key, Value 저장 서버
https://github.com/haruio/ten_minutes_elixir/tree/master/kv_03
GenServer + Supervisor + Agent
KV.Store Supervisor
KV.StoreKV.Store Stash
get(key) set(key, val)
get(key) set(key, val) {key, value}
{key, value}
{key, value}
GenServer + Supervisor + Agent
KV.Store Supervisor
KV.StoreKV.Store Stash
{key, value}
{key, value}
{key, value}
del(key)
GenServer + Supervisor + Agent
KV.Store Supervisor
KV.StoreKV.Store Stash
{key, value}
{key, value}
{key, value}
del(key)
KV.Store Supervisor
KV.StoreKV.Store Stash
{key, value}
{key, value}
{key, value}
del(key)KV.Store
GenServer + Supervisor + Agent
Resources• Tutorials
• http://elixir-lang.org/
• Books
• Programming Elixir: https://pragprog.com/book/elixir/programming-elixir
• Slack
• https://elixir-lang.slack.com/
• https://www.facebook.com/groups/elixir.korea/
• https://www.facebook.com/groups/elixir.lang/