Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
Polyglot
Sau Sheong Chang
October 10, 2014
Technology
0
26
Polyglot
How To Write A Web App in 6 Programming Languages
Sau Sheong Chang
October 10, 2014
Tweet
Share
More Decks by Sau Sheong Chang
See All by Sau Sheong Chang
sausheong
0
54
sausheong
0
370
sausheong
0
200
sausheong
0
85
sausheong
0
44
sausheong
7
590
sausheong
1
50
sausheong
0
56
sausheong
3
260
Other Decks in Technology
See All in Technology
yosuke_matsuura
PRO
0
3.2k
hsano
0
120
ocise
1
1.3k
smzksts
0
200
cygames
1
330
110y
3
690
oracle4engineer
1
210
ocise
1
910
line_developers
PRO
2
1.2k
line_developers
PRO
0
140
ray_30cm_ns
0
280
hamadakoji
0
1.1k
Featured
See All Featured
keavy
106
14k
keathley
17
630
hatefulcrawdad
257
17k
chriscoyier
499
130k
danielanewman
200
19k
revolveconf
200
9.6k
jakevdp
774
200k
davidbonilla
69
3.5k
frogandcode
127
20k
destraynor
146
19k
chrislema
231
16k
kneath
219
15k
Transcript
Polyglot Or How To Write A Web App in 6
Programming Languages Chang Sau Sheong Oct 2014 1
* http://spectrum.ieee.org/computing/software/top-‐10-‐programming-‐languages 2
*http://blog.codeeval.com/codeevalblog/2014 3
Programming language wars 4
Dependency hell 5
Polyglot 6
Build your web app with any language 7
All at once 8
Acceptor HTTP Responder Responder Responder POST/_/post Responder Responder Responder GET/_/posts
Acceptor HTTP Acceptor HTTP Broker ZMQ ZMQ Responder Responder Responder GET/_/post/new 9
10 Acceptor P
11 P Broker
12 Responder You need to write this
Simple responder require 'securerandom' require 'bundler' Bundler.require broker = "tcp://localhost:4321"
routeid = "GET/_/hello/ruby" identity = SecureRandom.uuid puts "#{routeid} - #{identity} responder ready." ctx = ZMQ::Context.new client = ctx.socket ZMQ::REQ client.identity = identity client.connect broker client.send_string routeid loop do request = String.new client.recv_string request response = [routeid, "200", "{\"Content-Type\": \"text/html\"}", "Hello World"] client.send_strings response end Define route ID and unique responder identity Connect to broker Register responder Receive request and process it Return with response 13
Distributed by default 14
15 Broker Acceptor Responder Responder Responder
Scale as you like it 16
17 Broker Acceptor Responder Responder Responder Acceptor Responder
Evolve your web app 18
19 Broker Acceptor Responder Responder Responder
Still Evolving (need your feedback and help) 20
http://github.com/sausheong/polyglot sausheong@gmail.com @sausheong 21