<commit_before>#Introdução

![node](images/node.png)


![you-diy](images/you-can-read-tutorials-all-day-but-youll-only-improve-by-doing-large.jpg)
Note:
  Antes de iniciarmos, acredito que para termos um maior proveito de hoje, vamos tentar ao maximo fazer/sentir como as coisas funcionam ao inves de estarmos o dia todo sentado e assistindo. Ok ?


##Instalação

[Node JS](https://nodejs.org/)   
[Documentação](https://nodejs.org/api/)


## Version Manager

[NVM](https://github.com/creationix/nvm)   
[N](https://github.com/tj/n)


# O que é o Node.Js ?


## Javascript no lado do Servidor

> Node allows you to build scalable network applications using JavaScript on the server-side.


![nodejs-libuv](images/nodejs-libuv.png)


### Modelo Síncrono vs Assíncrono


## Síncrono

### Ruby / Java / Python  ....


### Síncrono

```
userId = 293;
user = User.by(userId); // 100ms
 // WAITING ....
Mailer.welcome(user);
puts 'Email Sent'
```


## Síncrono
#### Como atender múltiplas requisições em simultâneo ?
<commit_msg>rollback images<commit_after>#Introdução

![node](images/node.png)


![you-diy](images/you-can-read-tutorials-all-day-but-youll-only-improve-by-doing-large.jpg)
Note:
  Antes de iniciarmos, acredito que para termos um maior proveito de hoje, vamos tentar ao maximo fazer/sentir como as coisas funcionam ao inves de estarmos o dia todo sentado e assistindo. Ok ?


##Instalação

[Node JS](https://nodejs.org/)   
[Documentação](https://nodejs.org/api/)


## Version Manager

[NVM](https://github.com/creationix/nvm)   
[N](https://github.com/tj/n)


# O que é o Node.Js ?


## Javascript no lado do Servidor

> Node allows you to build scalable network applications using JavaScript on the server-side.


### JavaScript: V8 Javascript engine

![V8](images/v8.jpg)


### Cross-platforma: libuv

![Libuv](images/libuv.png)


![nodejs-libuv](images/nodejs-libuv.png)


### Modelo Síncrono vs Assíncrono


## Síncrono

### Ruby / Java / Python  ....


### Síncrono

```
userId = 293;
user = User.by(userId); // 100ms
 // WAITING ....
Mailer.welcome(user);
puts 'Email Sent'
```


## Síncrono
#### Como atender múltiplas requisições em simultâneo ?

{'fraction_non_alphanumeric': 0.14727608494921515, 'fraction_numerical': 0.006925207756232687, 'mean_word_length': 3.8048780487804876, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 8, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2818745', 'n_tokens_mistral': 864, 'n_tokens_neox': 799, 'n_words': 197}