Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
BEAM Architecture Handbook
Andrea Leopardi
May 26, 2019
Programming
7
2.1k
BEAM Architecture Handbook
Andrea Leopardi
May 26, 2019
Tweet
Share
More Decks by Andrea Leopardi
See All by Andrea Leopardi
Testing Asynchronous OTP
whatyouhide
0
340
Elixir Sightseeing Tour
whatyouhide
0
190
Mint - Disrupting HTTP clients
whatyouhide
0
180
The Evolution of a Language
whatyouhide
0
110
Elixir - functional, concurrent, distributed programming for the rest of us
whatyouhide
2
250
Papers we love: Elixir edition
whatyouhide
6
870
Update from the Elixir team - 2018
whatyouhide
3
4.3k
Property-based testing is a mindset
whatyouhide
0
110
Property-based Testing is a Mindset
whatyouhide
0
530
Other Decks in Programming
See All in Programming
2022 Android Training
mixi_engineers
1
630
A technique to implement DSL in Ruby
okuramasafumi
0
520
アプリのログをチーム外で活用してもらうためにやったこと
shotakashihara
0
120
Microsoft Teams の 会議アプリ開発のはじめかた / How to start Microsoft Teams app development
karamem0
0
1.4k
ゴーファーくんと学ぶGo言語の世界/golang-world-with-gopher
iwasiman
1
140
SRE NEXT 2022: Sensible Incident Management for Software Startups
takanabe
2
230
Managing gRPC with Wire
oldergod
2
150
Kotlin KSP - Intro
taehwandev
1
450
職場にPythonistaを増やす方法
soogie
0
180
코드 품질 1% 올리기
pluu
1
890
コードの解析と言語習得の心得
jinjin33333
0
120
実録mruby組み込み体験
coe401_
0
100
Featured
See All Featured
It's Worth the Effort
3n
172
25k
Product Roadmaps are Hard
iamctodd
34
6.1k
A better future with KSS
kneath
225
15k
Build your cross-platform service in a week with App Engine
jlugia
219
17k
Optimizing for Happiness
mojombo
365
63k
Code Review Best Practice
trishagee
41
6.7k
No one is an island. Learnings from fostering a developers community.
thoeni
9
1.1k
Docker and Python
trallard
27
1.5k
Building Your Own Lightsaber
phodgson
94
4.6k
How to name files
jennybc
39
58k
Rebuilding a faster, lazier Slack
samanthasiow
62
7.2k
What the flash - Photography Introduction
edds
61
9.8k
Transcript
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
receive do :some_message -> # ... :other_message -> # ...
end
def handle_info(:some_message, state) do # ... end def handle_info(:other_message, state)
do # ... end def handle_info(unknown, state) do Logger.warn("Unknown message") {:noreply, state} end
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
defmodule MyAppWeb.Controller do use MyAppWeb, :controller def show(conn, %{"id" =>
id}) do id = String.to_integer(id) end end
defmodule MyAppWeb.Controller do use MyAppWeb, :controller def show(conn, %{"id" =>
id}) do case Integer.parse(id) do {id, ""} -> # ... _other -> send_resp(conn, 400, "bad id") end end end
None
None
None
None
None
None
None
None
None
Node.monitor(consumer_node, true) monitor_ref = Process.monitor(consumer_pid) send(consumer_pid, {monitor_ref, message}) receive do
{:ack, ^monitor_ref} -> Process.demonitor(monitor_ref, [:flush]) {:DOWN, ^monitor_ref, _, _, _} -> give_to_another_consumer(message) {:nodedown, ^consumer_node} -> give_to_another_consumer(message) end
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None