Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Elixir, Erlang, i visoko dostupni serverski sus...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Saša Jurić
October 25, 2013
Programming
350
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Elixir, Erlang, i visoko dostupni serverski sustavi
WebCampZg 2013
Saša Jurić
October 25, 2013
More Decks by Saša Jurić
See All by Saša Jurić
Such Great Heights, Code BEAM Lite, Amsterdam 2018
sasajuric
0
210
Simplifying systems with Elixir - Belgrade
sasajuric
3
490
Simplifying systems with Elixir
sasajuric
2
610
Metagrokking Elixir
sasajuric
4
330
Solid Ground
sasajuric
15
1.3k
Solid Ground
sasajuric
3
940
Elixir - valentine edition
sasajuric
0
150
What's the fuss about Phoenix?
sasajuric
2
1.2k
Phoenix
sasajuric
1
270
Other Decks in Programming
See All in Programming
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.6k
AIエージェントで 変わるAndroid開発環境
takahirom
2
770
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
140
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
230
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.8k
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
360
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
1
120
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
250
VibeCodingからAgenticWorkflowへ
starfish719
0
190
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
390
Android CLI
fornewid
0
210
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
200
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
190
Chasing Engaging Ingredients in Design
codingconduct
0
260
Designing Experiences People Love
moore
143
24k
Product Roadmaps are Hard
iamctodd
55
12k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Agile that works and the tools we love
rasmusluckow
331
22k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
270
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
630
Building AI with AI
inesmontani
PRO
1
1.1k
Transcript
Elixir, Erlang i visoko dostupni serverski sustavi @sasajuric
Tko vrijedi, je dostupan. Tko je dostupan, vrijedi. Tko nije
dostupan, ne vrijedi.
None
EVM Erlang stdlib OTP Erlang programi Erlang/OTP
dostupnost stabilnost skalabilnost distribuiranost responzivnost live upgrade concurrency dostupnost
P P P P P P P P P P
P P P P P P P P P P P scheduler scheduler scheduler scheduler CPU CPU CPU CPU EVM
P P P P exit signal vrijeme P'
P P P P P P P P P P
P P P P P P P P P P P scheduler scheduler scheduler scheduler CPU CPU CPU CPU EVM
EVM P P P P P P P P P
P P P P P P P P P P P P scheduler scheduler scheduler scheduler CPU CPU CPU CPU EVM
scheduler scheduler scheduler scheduler listener request request job 1 job
2 request EVM
EVM Erlang stdlib OTP Erlang programi :-) :-(
EVM Erlang stdlib OTP Erlang programi Elixir Elixir programi
-module(sum_actor). -behaviour(gen_server). -export([ start/0, sum/3, init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2,
code_change/3 ]). start() -> gen_server:start(?MODULE, [], []). sum(Server, A, B) -> gen_server:call(Server, {sum, A, B}). init(_) -> {ok, undefined}. handle_call({sum, A, B}, _From, State) -> {reply, A+B, State}; handle_call(_Request, _From, State) -> {reply, error, State}. handle_cast(_Msg, State) -> {noreply, State}. handle_info(_Info, State) -> {noreply, State}. terminate(_Reason, _State) -> ok. code_change(_OldVsn, State, _Extra) -> {ok, State}.
defmodule SumActor do use GenServer.Behaviour def start do :gen_server.start(__MODULE__, [],
[]) end def sum(server, a, b) do :gen_server.call(server, {:sum, a, b}) end def handle_call({:sum, a, b}, _from, state) do {:reply, a + b, state} end end
defmodule SumActor do use ExActor defcall sum(a, b) do a
+ b end end
defcall sum(a, b) do a + b end def sum(server,
a, b) do :gen_server.call(server, {:sum, a, b}) end def handle_call({:sum, a, b}, _from, state) do {:reply, a + b, state} end
Repo.all( from w in Weather, where: w.prcp > 0 or
w.prcp == nil, select: w ) get "/hello/world" do conn.resp(200, "Hello world") end fact "addition" do 1 + 1 |> 2 end
obradi_xml(Model, Xml) -> Model1 = azuriraj(Model, Xml), Model2 = obradi_promjene(Model1),
pohrani(Model2).
obradi_xml(Model, Xml) -> Model1 = azuriraj(Model, Xml), Model2 = obradi_promjene(Model1),
pohrani(Model2).
def obradi_xml(model, xml) do model |> azuriraj(xml) |> obradi_promjene |>
pohrani end f(...) |> g(...) g(f(...), ...)
defrecord Person, [:name, :age] record = MyRecord.new(name: "Saša Jurić") record
= record.age(36) x = 5 IO.puts "#{x} * #{x} = #{x * x}" String.codepoints("Saša Jurić") sasa: ~$ mix new test * creating README.md * creating .gitignore * creating mix.exs * creating lib * creating lib/test.ex * creating test * creating test/test_helper.exs * creating test/test_test.exs Enum.each(enumerable, ...) inspect(inspectable)
elixir-lang.org elixir-lang-talk elixir-lang-core Hacking Devin Torres A Cauldron of Black
and White Stones The Erlangelist