Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Polyglot

 Polyglot

How To Write A Web App in 6 Programming Languages

Sau Sheong Chang

October 10, 2014
Tweet

More Decks by Sau Sheong Chang

Other Decks in Technology

Transcript

  1. Polyglot
    Or  How  To  Write  A  Web  App  in  6  
    Programming  Languages
    Chang  Sau  Sheong  
    Oct  2014
    1

    View Slide

  2. *  http://spectrum.ieee.org/computing/software/top-­‐10-­‐programming-­‐languages
    2

    View Slide

  3. *http://blog.codeeval.com/codeevalblog/2014
    3

    View Slide

  4. Programming  
    language  wars
    4

    View Slide

  5. Dependency  hell
    5

    View Slide

  6. Polyglot
    6

    View Slide

  7. Build  your  web  app  
    with  any  language
    7

    View Slide

  8. All  at  once
    8

    View Slide

  9. 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

    View Slide

  10. 10
    Acceptor P

    View Slide

  11. 11
    P
    Broker

    View Slide

  12. 12
    Responder
    You  need  to  write  this

    View Slide

  13. 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

    View Slide

  14. Distributed  by  default
    14

    View Slide

  15. 15
    Broker
    Acceptor
    Responder Responder Responder

    View Slide

  16. Scale  as  you  like  it
    16

    View Slide

  17. 17
    Broker
    Acceptor
    Responder Responder Responder
    Acceptor
    Responder

    View Slide

  18. Evolve  your  web  app
    18

    View Slide

  19. 19
    Broker
    Acceptor
    Responder Responder Responder

    View Slide

  20. Still  Evolving  
    (need  your  feedback  and  help)
    20

    View Slide

  21. http://github.com/sausheong/polyglot  
    [email protected]  
    @sausheong
    21

    View Slide