SlideShare uma empresa Scribd logo
Por que não devo usar !!! 
Ederson de Lima 
edersondelima@gmail.com
Agenda 
Motivação 
O que é esse tal de Node.js ? 
Por que eu usaria o Node.js ? 
Mãos na massa 
Por que eu não devo usar Node.js 
Dicas
Motivação
Motivação 
Vergonha na cara !!! 
Ter mais uma ferramenta disponível 
Ir contra ao aceitável - Quem não sabe não reclama 
Aprender JavaScript - ;(
O que é esse tal de Node.js ? 
Modelo orientado a Eventos e non-blocking I/O 
Plataforma construída sobre a engine V8 do Google Chrome 
Single-Thread - Event-loop
O que é esse tal de Node.js ? 
Outras plataformas bloqueiam o processo enquanto 
utilizam i/o 
para tentar amenizar podemos utilizar thread, mas a 
thread ainda assim fica bloqueada enquanto espera o i/o 
Cada requisição do usuário abre uma nova thread, que é 
enfileirada para utilizar uma a uma o i/o. (tempo ocioso 
mantendo a fila enquanto executa um i/o)
O que é esse tal de Node.js ? 
JavaScript V8 - Google Chrome 
Interpretador feito em C++ 
JavaScript 
EventLoop Chrome V8 
libuv 
assinc. I/O 
(multi 
plataforma) 
Sistema 
Operacional 
App 
Node.js
O que é esse tal de Node.js ? 
Single-Thread - Event loop 
Single thread - apenas um único processo instanciado 
Não é multi-thread (da para fazer concorrência com 
módulo cluster) 
não tem paralelismo mas tem recurso assíncrono 
EventLoop - baseado (quero) no event machine do ruby e 
twisted do python 
loop infinito com mecanismo de escutar e notificar a fila 
de eventos através de callback
O que é esse tal de Node.js ? 
Eventos ? 
jQuery 
Node.js
Por que eu usaria Node.js ? 
“Quem não sabe não reclama.” 
Resolver problemas de I/O bloqueante 
Comunicação em tempo real (Chat, Gráficos, …) 
Pequenas API acessando banco de dados 
Minimalista 
CSS / javascript / XML / JSON / DB / NoSql ….. + Node.js
Mãos na Massa 
console
Mãos na Massa 
مرحبا العالم
Mãos na Massa 
npm - Node Packaged Modules 
package.json 
Express 
MVC 
Testes
Por que eu não devo usar Node.js ? 
JavaScr ipt !!!
Por que eu não devo usar Node.js ? 
JavaScript - Everywhere 
a mesma linguagem JavaScript do client-side
Por que eu não devo usar Node.js ? 
“Se você tem que escrever um bom código, Tem que ser 
no html. 
Não quero nem saber do seu ruby, php, asp.net, java, ou 
sei lá o que você escreve ! 
Se a gente tem que escrever coisa boa, escreva bom 
html"
Cade o VIM ?
http://wtfjs.com
Dicas 
Google JavaScript Style Guide 
https://github.com/caolan/async 
Sequelize 
Strider - CI em Node 
Meteor - framework web full-stack 
pm2 - (gerencia processos; hot deploy; cluster; log)
Único que faz as 
Changes emergenciais 
que vc precisa
? 
Ederson de Lima 
edersondelima@gmail.com

Mais conteúdo relacionado

Mais procurados

Design patterns
Design patternsDesign patterns
Design patterns
Vinícius Krolow
 
Palestra: Introdução à TypeScript & Features Ts 2.x
Palestra: Introdução à TypeScript & Features Ts 2.x Palestra: Introdução à TypeScript & Features Ts 2.x
Palestra: Introdução à TypeScript & Features Ts 2.x
Glaucia Lemos
 
Lab
LabLab
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?
Fabio Janiszevski
 
Prazer,Ruby On Rails
Prazer,Ruby On RailsPrazer,Ruby On Rails
Prazer,Ruby On Rails
Alberto Leal
 
Groovy stack
Groovy stackGroovy stack
Groovy stack
Leonardo Silva
 
Apresentação Introdução Typescript - .Net Caxias do Sul
Apresentação   Introdução Typescript - .Net Caxias do SulApresentação   Introdução Typescript - .Net Caxias do Sul
Apresentação Introdução Typescript - .Net Caxias do Sul
Glaucia Lemos
 
Just groovy
Just groovyJust groovy
Just groovy
Ismael
 
Typescript
TypescriptTypescript
Typescript
Adrian Caetano
 
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
Gleicon Moraes
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
iMasters
 
Lições aprendidas sobre transações em microsserviços
Lições aprendidas sobre transações em microsserviçosLições aprendidas sobre transações em microsserviços
Lições aprendidas sobre transações em microsserviços
Fábio José Moraes
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visage
jesuinoPower
 
Groovy e Grails 2
Groovy e Grails 2Groovy e Grails 2
Groovy e Grails 2
Sérgio Neves Sacenti
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
jesuinoPower
 
Jclouds jug vale
Jclouds jug valeJclouds jug vale
Jclouds jug vale
Eclis Rodrigues de Castilho
 
Desenvolvimento Ágil com Ruby on Rails
Desenvolvimento Ágil com Ruby on RailsDesenvolvimento Ágil com Ruby on Rails
Desenvolvimento Ágil com Ruby on Rails
Rogerio Chaves
 
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
Gleicon Moraes
 
Introdução ao Ruby on Rails
Introdução ao Ruby on RailsIntrodução ao Ruby on Rails
Introdução ao Ruby on Rails
Jony dos Santos Kostetzer
 
[Polis Hyperlink ] Apache Camel na vida real
[Polis Hyperlink ] Apache Camel na vida real[Polis Hyperlink ] Apache Camel na vida real
[Polis Hyperlink ] Apache Camel na vida real
Rodrigo Stefani Domingues
 

Mais procurados (20)

Design patterns
Design patternsDesign patterns
Design patterns
 
Palestra: Introdução à TypeScript & Features Ts 2.x
Palestra: Introdução à TypeScript & Features Ts 2.x Palestra: Introdução à TypeScript & Features Ts 2.x
Palestra: Introdução à TypeScript & Features Ts 2.x
 
Lab
LabLab
Lab
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?
 
Prazer,Ruby On Rails
Prazer,Ruby On RailsPrazer,Ruby On Rails
Prazer,Ruby On Rails
 
Groovy stack
Groovy stackGroovy stack
Groovy stack
 
Apresentação Introdução Typescript - .Net Caxias do Sul
Apresentação   Introdução Typescript - .Net Caxias do SulApresentação   Introdução Typescript - .Net Caxias do Sul
Apresentação Introdução Typescript - .Net Caxias do Sul
 
Just groovy
Just groovyJust groovy
Just groovy
 
Typescript
TypescriptTypescript
Typescript
 
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
 
Lições aprendidas sobre transações em microsserviços
Lições aprendidas sobre transações em microsserviçosLições aprendidas sobre transações em microsserviços
Lições aprendidas sobre transações em microsserviços
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visage
 
Groovy e Grails 2
Groovy e Grails 2Groovy e Grails 2
Groovy e Grails 2
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 
Jclouds jug vale
Jclouds jug valeJclouds jug vale
Jclouds jug vale
 
Desenvolvimento Ágil com Ruby on Rails
Desenvolvimento Ágil com Ruby on RailsDesenvolvimento Ágil com Ruby on Rails
Desenvolvimento Ágil com Ruby on Rails
 
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
 
Introdução ao Ruby on Rails
Introdução ao Ruby on RailsIntrodução ao Ruby on Rails
Introdução ao Ruby on Rails
 
[Polis Hyperlink ] Apache Camel na vida real
[Polis Hyperlink ] Apache Camel na vida real[Polis Hyperlink ] Apache Camel na vida real
[Polis Hyperlink ] Apache Camel na vida real
 

Semelhante a Node js

Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Jackson F. de A. Mafra
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
Eduardo Bohrer
 
Node.js for Noobs
Node.js for NoobsNode.js for Noobs
Node.js for Noobs
Caio Ribeiro Pereira
 
Node não é filme de Terror
Node não é filme de TerrorNode não é filme de Terror
Node não é filme de Terror
Paulo Pires
 
Node.js
Node.jsNode.js
Node.js
luizhse
 
OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)
Ricardo Rufino
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
Gustavo Corrêa Alves
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.js
Caio Ribeiro Pereira
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
Rodrigo Branas
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introdução
Pablo Feijó
 
Node.js no Pagar.me
Node.js no Pagar.meNode.js no Pagar.me
Node.js no Pagar.me
Pedro Franceschi
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
Just Digital
 
Phonegap
PhonegapPhonegap
Phonegap
Lucas Brigida
 
Node.js - Worksigma
Node.js - WorksigmaNode.js - Worksigma
Node.js - Worksigma
Manoel Neto
 
FJN 2011
FJN 2011FJN 2011
FJN 2011
Italo Maia
 
Real time com java e Node.Js
Real time com java e Node.JsReal time com java e Node.Js
Real time com java e Node.Js
Fabiano Modos
 
NodeJS
NodeJSNodeJS
NodeJS
Renato Sousa
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
Filipe Morelli
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
Igor Sobreira
 
Nodejs Intro William Dias
Nodejs Intro William DiasNodejs Intro William Dias
Nodejs Intro William Dias
William Dias
 

Semelhante a Node js (20)

Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Node.js for Noobs
Node.js for NoobsNode.js for Noobs
Node.js for Noobs
 
Node não é filme de Terror
Node não é filme de TerrorNode não é filme de Terror
Node não é filme de Terror
 
Node.js
Node.jsNode.js
Node.js
 
OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.js
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introdução
 
Node.js no Pagar.me
Node.js no Pagar.meNode.js no Pagar.me
Node.js no Pagar.me
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
 
Phonegap
PhonegapPhonegap
Phonegap
 
Node.js - Worksigma
Node.js - WorksigmaNode.js - Worksigma
Node.js - Worksigma
 
FJN 2011
FJN 2011FJN 2011
FJN 2011
 
Real time com java e Node.Js
Real time com java e Node.JsReal time com java e Node.Js
Real time com java e Node.Js
 
NodeJS
NodeJSNodeJS
NodeJS
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
Nodejs Intro William Dias
Nodejs Intro William DiasNodejs Intro William Dias
Nodejs Intro William Dias
 

Último

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 

Último (8)

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 

Node js

  • 1. Por que não devo usar !!! Ederson de Lima edersondelima@gmail.com
  • 2. Agenda Motivação O que é esse tal de Node.js ? Por que eu usaria o Node.js ? Mãos na massa Por que eu não devo usar Node.js Dicas
  • 4. Motivação Vergonha na cara !!! Ter mais uma ferramenta disponível Ir contra ao aceitável - Quem não sabe não reclama Aprender JavaScript - ;(
  • 5. O que é esse tal de Node.js ? Modelo orientado a Eventos e non-blocking I/O Plataforma construída sobre a engine V8 do Google Chrome Single-Thread - Event-loop
  • 6. O que é esse tal de Node.js ? Outras plataformas bloqueiam o processo enquanto utilizam i/o para tentar amenizar podemos utilizar thread, mas a thread ainda assim fica bloqueada enquanto espera o i/o Cada requisição do usuário abre uma nova thread, que é enfileirada para utilizar uma a uma o i/o. (tempo ocioso mantendo a fila enquanto executa um i/o)
  • 7. O que é esse tal de Node.js ? JavaScript V8 - Google Chrome Interpretador feito em C++ JavaScript EventLoop Chrome V8 libuv assinc. I/O (multi plataforma) Sistema Operacional App Node.js
  • 8. O que é esse tal de Node.js ? Single-Thread - Event loop Single thread - apenas um único processo instanciado Não é multi-thread (da para fazer concorrência com módulo cluster) não tem paralelismo mas tem recurso assíncrono EventLoop - baseado (quero) no event machine do ruby e twisted do python loop infinito com mecanismo de escutar e notificar a fila de eventos através de callback
  • 9. O que é esse tal de Node.js ? Eventos ? jQuery Node.js
  • 10.
  • 11. Por que eu usaria Node.js ? “Quem não sabe não reclama.” Resolver problemas de I/O bloqueante Comunicação em tempo real (Chat, Gráficos, …) Pequenas API acessando banco de dados Minimalista CSS / javascript / XML / JSON / DB / NoSql ….. + Node.js
  • 12. Mãos na Massa console
  • 13. Mãos na Massa مرحبا العالم
  • 14. Mãos na Massa npm - Node Packaged Modules package.json Express MVC Testes
  • 15. Por que eu não devo usar Node.js ? JavaScr ipt !!!
  • 16. Por que eu não devo usar Node.js ? JavaScript - Everywhere a mesma linguagem JavaScript do client-side
  • 17. Por que eu não devo usar Node.js ? “Se você tem que escrever um bom código, Tem que ser no html. Não quero nem saber do seu ruby, php, asp.net, java, ou sei lá o que você escreve ! Se a gente tem que escrever coisa boa, escreva bom html"
  • 20. Dicas Google JavaScript Style Guide https://github.com/caolan/async Sequelize Strider - CI em Node Meteor - framework web full-stack pm2 - (gerencia processos; hot deploy; cluster; log)
  • 21. Único que faz as Changes emergenciais que vc precisa
  • 22. ? Ederson de Lima edersondelima@gmail.com