Luciano Ramalho                                       luciano@ramalho.org                                                 ...
Luciano Ramalho• Programando por prazer desde 1978,  profissionalmente desde 1982• Arquiteto de soluções Web desde 1994 • 1...
Demonstração        bandeiras.js etc.** http://github.com/oturing/nodejs                                     @luciano
@luciano
Node.js... • É um ambiente de execução para usar JavaScript   fora do navegador   • linha de comando + console interativo ...
Arquitetura              @luciano
Demonstração  console interativo                       @luciano
Node.js: console (REPL)         > function agora() {         ...   var dt = Date().slice(16,24);         ...   console.log...
Programação assíncrona?               @luciano
O restaurante síncrono                         @luciano
O restaurante síncrono                         @luciano
O restaurante síncrono                         @luciano
O restaurante síncrono                         @luciano
O restaurante síncrono                         @luciano
O restaurante síncrono                         @luciano
O restaurante síncrono                         @luciano
O restaurante assíncrono                       @luciano
O restaurante assíncrono                       @luciano
O restaurante assíncrono                       @luciano
O restaurante assíncrono                       @luciano
O restaurante assíncrono                       @luciano
O restaurante assíncrono                       @luciano
O restaurante assíncrono                       @luciano
Programação assíncrona        = callback                         @luciano
Demonstração    hora*.js, sigint*.js, stat*.js* http://github.com/oturing/nodejs                                     @luci...
hora.js             Com isso o shell do *nix                   consegue executar o script         O 2º console.log    acon...
hora2.js Temposdiferentes             * http://github.com/oturing/nodejs                                            @luciano
hora3.js    Cada chamada dispara a próxima,    com   atraso aleatório  Iniciar    * http://github.com/oturing/nodejs
statSync.jsImportação de módulos    ≈ Common.js    Invoca a funçãostatSync do módulo fs.         Saída padrão: stdout     ...
stat.js: chamada assíncrona    Callback:  esta função   é invocada   quando o SO responde o stat, milhõesde ciclos depois ...
sigint.js   Callback: invocada quando o operador tecla ˆC                * http://github.com/oturing/nodejs               ...
sigint2.js                                      O primeiro                                    callback associa            ...
sigint3.js             O que faz esta               chamada?                      @luciano
sigint3.js             Ela constrói e              retorna uma               função sob                 medida            ...
sigint3.js             Variável livre:             não é definida               no escopo              desta função        ...
sigint3.js             Closure é um              puxadinho              do escopo              da função                  ...
E o que eu ganho com todo este trabalho?                       @luciano
Acessar o cache L1 é...   ...como pegar um papel sobre a sua mesa                   Analogia do Ryan Dahl     @luciano
Acessar o cache L2 é...   ...como pegar um papel em uma gaveta                                          @luciano
Acessar a RAM é...   ...como pegar um papel em um armário                                          @luciano
Acessar a rede é...                      @luciano
Acessar a rede é...                      @luciano
Acessar a rede é...                      @luciano
Acessar a rede é...    ...como ir buscar um papel no Japão                                          @luciano
Tempos de acesso                    ciclos de CPU                                         Dados         cache L1          ...
Decifrando o hello world                       @luciano
Decifrando o hello world                       @luciano
Decifrando o hello world                       @luciano
Eco-sistema• Produto experimental, APIs mudando (v. 0.6.x)• Framework Web: Express, comparável a Flask  (Python) ou Sinatr...
Cocktails• Mojito• Manhattan• outros  drinks...?               @luciano
Evitando “o pior do JS”• “use strict” sempre, sem medo de ser feliz• CoffeScript, Clojure etc. • no server-side, ninguém l...
Luciano Ramalho                                 luciano@ramalho.org                                             @lucianoofi...
Próximos SlideShares
Carregando em…5
×

Node.JS: JavaScript no servidor com Google V8

10.193 visualizações

Publicada em

Com Node.js, JavaScript liberta-se do navegador e torna-se uma linguagem dinâmica de uso geral assim como Python e Ruby. Node.js usa o mesmo motor V8 de alto desempenho do Google Chrome, roda em Linux, Windows e Mac OSX, e oferece APIs assíncronas para criar servidores e clientes que lidam com muitas requisições concorrentes de modo eficiente.
Saiba o que é programação assíncrona e tenha uma visão panorâmica do Node.js.

Publicada em: Tecnologia
0 comentários
17 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
10.193
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.943
Ações
Compartilhamentos
0
Downloads
203
Comentários
0
Gostaram
17
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Node.JS: JavaScript no servidor com Google V8

    1. 1. Luciano Ramalho luciano@ramalho.org @lucianoNode.js:JavaScript com Google V8 no servidor
    2. 2. Luciano Ramalho• Programando por prazer desde 1978, profissionalmente desde 1982• Arquiteto de soluções Web desde 1994 • 1º diretor técnico do Brasil Online, na Abril S/A• Muitos clientes e alguns empregos desde então, quase sempre atuando na Web (server-side)• Agora: Oficinas Turing e Academia Python na Globalcode @luciano
    3. 3. Demonstração bandeiras.js etc.** http://github.com/oturing/nodejs @luciano
    4. 4. @luciano
    5. 5. Node.js... • É um ambiente de execução para usar JavaScript fora do navegador • linha de comando + console interativo • Incorpora o engine de JavaScript Google V8 • aquele do Google Chrome, ECMAScript 5 • Inclui bibliotecas para fazer programação de I/O orientada a eventos (modo assíncrono) @luciano
    6. 6. Arquitetura @luciano
    7. 7. Demonstração console interativo @luciano
    8. 8. Node.js: console (REPL) > function agora() { ... var dt = Date().slice(16,24); ... console.log(dt); ... } undefined > agora(); 13:50:17 undefined > @luciano
    9. 9. Programação assíncrona? @luciano
    10. 10. O restaurante síncrono @luciano
    11. 11. O restaurante síncrono @luciano
    12. 12. O restaurante síncrono @luciano
    13. 13. O restaurante síncrono @luciano
    14. 14. O restaurante síncrono @luciano
    15. 15. O restaurante síncrono @luciano
    16. 16. O restaurante síncrono @luciano
    17. 17. O restaurante assíncrono @luciano
    18. 18. O restaurante assíncrono @luciano
    19. 19. O restaurante assíncrono @luciano
    20. 20. O restaurante assíncrono @luciano
    21. 21. O restaurante assíncrono @luciano
    22. 22. O restaurante assíncrono @luciano
    23. 23. O restaurante assíncrono @luciano
    24. 24. Programação assíncrona = callback @luciano
    25. 25. Demonstração hora*.js, sigint*.js, stat*.js* http://github.com/oturing/nodejs @luciano
    26. 26. hora.js Com isso o shell do *nix consegue executar o script O 2º console.log acontece antes do primeiro * http://github.com/oturing/nodejs @luciano
    27. 27. hora2.js Temposdiferentes * http://github.com/oturing/nodejs @luciano
    28. 28. hora3.js Cada chamada dispara a próxima, com atraso aleatório Iniciar * http://github.com/oturing/nodejs
    29. 29. statSync.jsImportação de módulos ≈ Common.js Invoca a funçãostatSync do módulo fs. Saída padrão: stdout * http://github.com/oturing/nodejs @luciano
    30. 30. stat.js: chamada assíncrona Callback: esta função é invocada quando o SO responde o stat, milhõesde ciclos depois * http://github.com/oturing/nodejs @luciano
    31. 31. sigint.js Callback: invocada quando o operador tecla ˆC * http://github.com/oturing/nodejs @luciano
    32. 32. sigint2.js O primeiro callback associa um segundo callback ao mesmo evento * http://github.com/oturing/nodejs @luciano
    33. 33. sigint3.js O que faz esta chamada? @luciano
    34. 34. sigint3.js Ela constrói e retorna uma função sob medida @luciano
    35. 35. sigint3.js Variável livre: não é definida no escopo desta função @luciano
    36. 36. sigint3.js Closure é um puxadinho do escopo da função @luciano
    37. 37. E o que eu ganho com todo este trabalho? @luciano
    38. 38. Acessar o cache L1 é... ...como pegar um papel sobre a sua mesa Analogia do Ryan Dahl @luciano
    39. 39. Acessar o cache L2 é... ...como pegar um papel em uma gaveta @luciano
    40. 40. Acessar a RAM é... ...como pegar um papel em um armário @luciano
    41. 41. Acessar a rede é... @luciano
    42. 42. Acessar a rede é... @luciano
    43. 43. Acessar a rede é... @luciano
    44. 44. Acessar a rede é... ...como ir buscar um papel no Japão @luciano
    45. 45. Tempos de acesso ciclos de CPU Dados cache L1 3 aproximados cache L2 14 citados por RAM 250 Ryan Dahl* disco 41.000.00 rede 240.000.000* http://www.youtube.com/watch?v=M-sc73Y-zQA @luciano
    46. 46. Decifrando o hello world @luciano
    47. 47. Decifrando o hello world @luciano
    48. 48. Decifrando o hello world @luciano
    49. 49. Eco-sistema• Produto experimental, APIs mudando (v. 0.6.x)• Framework Web: Express, comparável a Flask (Python) ou Sinatra (Ruby) • nada tão completo quanto Django ou Rails• Centenas de bibliotecas de terceiros, livres*• Hospedagem especializada • gerenciados: Joyent, Heroku, Nodegrid; VPS etc. * https://github.com/joyent/node/wiki/modules @luciano
    50. 50. Cocktails• Mojito• Manhattan• outros drinks...? @luciano
    51. 51. Evitando “o pior do JS”• “use strict” sempre, sem medo de ser feliz• CoffeScript, Clojure etc. • no server-side, ninguém liga se você usar outra linguagem, desde que ela gere código JavaScript• ECMAScript 5 • no server-side o ambiente é controlado: o único engine que te interessa é o V8 @luciano
    52. 52. Luciano Ramalho luciano@ramalho.org @lucianooficina online:JavaScript modernocom Node.js e testes automatizados * http://pre-node.turing.com.br

    ×