SlideShare una empresa de Scribd logo
1 de 100
Descargar para leer sin conexión
MEAN Stack
Bruno Gama Catão
MEAN - Tecnologias
• MongoDB
• Express
• AngularJS
• Node.js
Ideia
• Apresentar de forma rápida os principais
conceitos;
• Mostrar passo-a-passo como construir uma
aplicação utilizando essas tecnologias.
Ambiente de testes
• Você vai precisar:
• Editor de texto:
• Sublime Text
• Browser:
• Chrome
• Conexão com a Internet
• Um shell decente:
• ex: zsh ou bash
Introdução a JavaScript
Esta imersão é baseada no ótimo
livro “JavaScript: The Good Parts”
de Douglas Crockford
História e por quê ...
• É a linguagem do browser
• A linguagem mais popular do mundo
• Feita em 1995 para o Netscape 2.0 sob
o nome de Mocha depois LiveScript e
por fim JavaScript (ECMA Script)
• A Microsoft adotou JavaScript no IE 3.0
em 1996
Brendan Eich
O porquê da má fama
• Sempre foi “a outra”
• Nome terrível !
• Control + C e Control + V
• APIs diferentes entre browsers
• Algumas características bem ruins (bad parts)
The bad parts
• Variáveis globais
• Escopo
• Inserção de ponto-e-vírgula
• Palavras reservadas
• parseInt
• +
• Valores falsos
• ==
... vamos nos focar nas partes boas !
The good parts
• Funções como valores
• Objetos dinâmicos
• Tipos fracos
• JSON
... e mais importante
não dá para fugir
NodeJS
• JavaScript no Servidor !
• Um único Thread
• Escala
• Velocidade
NodeJS - História
• Criado por Ryan Dahl em 2009
• Baseado no interpretador V8 do Google
• Código aberto, porém é mantido pela empresa Joyent
http://nodejs.org http://www.joyent.com
Você vai precisar …
• Baixar o Git (e instalar)
• Baixar o NodeJS (e instalar)
GIT ?!
• Sistema de controle de versões com excelente
suporte para projetos colaborativos
• Feito por Linus Torvalds
• Base da maior rede social / repositório de código
online - GitHub (https://github.com/)
• A maioria dos projetos open source atuais está
hospedada em algum repositório git
O que significa GIT ?
• Segundo o readme no código fonte do GIT:
GIT - the stupid content tracker
"git" can mean anything, depending on your mood.
- random three-letter combination that is pronounceable, and not
actually used by any common UNIX command. The fact that it is a
mispronounciation of "get" may or may not be relevant.
- stupid. contemptible and despicable. simple. Take your pick from
the dictionary of slang.
- "global information tracker": you're in a good mood, and it
actually works for you. Angels sing, and a light suddenly fills
the room.
- "goddamn idiotic truckload of sh*t": when it breaks
Baixe o GIT
https://git-scm.com/downloads
Instale o GIT
ATENÇÃO: Marque essa opção
na instalação !!!
Baixe o NodeJS
Gerenciamento de Pacotes
• NPM - "npm is not an acronym”;
• Gerenciador de pacotes JavaScript;
• Vem de brinde no Node.js;
• Dá para pesquisar pacotes em:
• https://www.npmjs.com/
Projeto com suporte a NPM
• Crie um diretório para seu projeto;
• Nesse diretório, execute: npm init;
• Responda um monte de perguntas ;)
Projeto com suporte a NPM
• Será criado um arquivo “package.json"
Instalando um pacote
• npm install colors --save
Teste de utilização do
pacote
• Crie um arquivo index.js
• Executando:
MongoDB
• HuMONGOus (gigantesco)
• Banco NoSQL orientado a documentos
• Desenvolvido em 2007 pela 10gen
MongoDB - Conceitos
• Documento:
• Conjunto de dados (semelhante a um objeto)
• Os dados não precisam seguir a um esquema
• É possível criar documentos com dados simples,
compostos (outros documentos) e coleções (arrays)
• Coleções: conjunto de documentos
• Banco de Dados: conjunto de coleções
Próximos Passos
• Baixe o MongoDB
• https://www.mongodb.org/
• Instale o MongoDB
• Instalação simples (basta escolher o local e pronto)
• Crie a pasta padrão do banco de dados:
• C:datadb
• Execute o servidor (mongod)
Observação
• Caso queira usar outra pasta para o banco de dados:
• mongod --dbpath outra_pasta
• Ex:
mongo shell
• Execute o aplicativo “mongo.exe” / "mongo"
• No shell vamos digitar alguns comandos
Criar / Usar um Banco de Dados
• use nome_do_banco_de_dados
• Ex:
• use blog
Inserir um documento em
uma coleção
• db.nome_da_colecao.insert(objeto)
• Ex:
db.posts.insert({autor: ‘Fulano’, texto: ‘Teste’, criado_em: new Date( )})
Consultando todos os
documentos de uma coleção
• db.nome_da_colecao.find( )
• Ex:
• db.posts.find( )
{ "_id" : ObjectId("56ac0bcd18608059723e7bb9"), "autor" : "Fulano", "texto" : "123
Testando", "criado_em" : ISODate("2016-01-30T01:03:09.072Z") }
id criado automaticamente
Consultando documentos
por valor
• db.nome_da_colecao.find(objeto)
• Ex:
• db.posts.find({autor: “Fulano”})
Atualizando um documento
• db.nome_da_colecao.update(obj_busca, obj_atualizacao)
• Ex:
• db.posts.update({autor: “Fulano”}, {texto: “CENSURADO”})
Operadores de Atualização
• Realizam operações sobre os valores de um documento
• Alguns operadores:
• $inc - Incrementa o atributo pelo valor informado
• $mul - Multiplica o atributo pelo valor informado
• $set - Atribui o valor informado ao atributo
• $min - Atualiza o valor apenas se for menor que o informado
• $max - Atualiza o valor apenas se for maior que o informado
Operadores de Atualização
• Exemplo:
• use estoque
• db.produtos.insert({cod: 123, nome: ‘Durex’, qtd: 10})
• db.produtos.update({cod: 123}, {$inc: {qtd: -1}})
• db.produtos.find( )
{ "_id" : ObjectId("56ac0f7018608059723e7bba"), "cod" :
123, "nome" : "Durex", "qtd" : 9 }
Excluindo um documento
• db.nome_da_colecao.remove(objeto)
• Ex:
• db.produtos.remove({cod: 123})
Fechando o shell
• Digite "exit"
MongooseJS
• Mapeia objetos JavaScript para documentos MongoDB
• Instalação via npm
• No seu projeto, abra a janela do terminal e digite:
• npm install mongoose --save
Não feche a janela
do mongod !
Abra o arquivo index.js
Use o módulo mongoose
• var mongoose = require(‘mongoose');
Abra uma conexão com o
banco de dados
• mongoose.connect(‘mongodb://localhost/estoque');
endereço do host
nome do banco de dados
Obtenha a conexão
• var db = mongoose.connection;
Defina o esquema de um
produto
var ProdutoSchema = new mongoose.Schema( {
cod: Number,
nome: String,
qtd: Number
} );
Crie um modelo a partir do
esquema
var Produto = mongoose.model(‘Produto’, ProdutoSchema);
Criando um produto quando
a conexão estiver aberta
db.once(‘open’, function ( ) {
var coca = new Produto({cod: 321, nome: “Coca Cola”, qtd: 22});
coca.save(function(err) {
if (err) throw err;
console.log(“Produto criado com sucesso !”);
} );
} );
Hello World
Execute: node index.js
Hello World
Roteamento
• app.METHOD(PATH, HANDLER)
• app - Instância do express
• METHOD - método HTTP (get, put, post, delete);
• PATH - URL relativa
• HANDLER - função que será executada
Roteamento - Exemplos
Servindo Arquivos Estáticos
ou
Gerador do Express
• O Express possui um gerador de aplicativos
tradicionais:
• templates de páginas processadas por engines;
• Instalação:
• npm install express-generator -g
• Uso:
• express meu_app
Não usaremos
esse gerador
Vamos criar uma API
• Web Service RESTFull;
• Utilizando JSON para comunicação;
• Próximos passos:
• Organizar o projeto em módulos;
• Instalar pacotes adicionais;
• Criar módulos restantes.
Estrutura de Diretórios
arquivos do banco de dados
definição dos modelos
pacotes instalados pelo nem
arquivos estáticos
definições de rotas para os serviços
script principal
definição do projeto e dependências
Pacote body-parser
• Converte parâmetros da requisição HTTP em
objetos JSON;
• Instalação:
• npm install body-parser --save
model/produto.js
valor que será exportado pelo módulo
Definindo o serviço
routes/produtos.js
• Importações:
módulos locais são referenciados pelo caminho relativo
Definindo o serviço
routes/produtos.js
Definindo o serviço
routes/produtos.js
Definindo o serviço
routes/produtos.js
Definindo o serviço
routes/produtos.js
Definindo o serviço
routes/produtos.js
Definindo o serviço
routes/produtos.js
Resumo do serviço
index.js
Bower
• Gerenciador de pacotes para a web (cliente);
• Instalação:
• npm install -g bower
• Configurando o bower no projeto
• bower init
Bower
• Instalando componentes:
• bower install angular --save
• bower install angular-resource --save
Bower
• Adicionando o diretório bower_components às
rotas estáticas do Express:
• app.use(express.static('bower_components'));
agora, todos os arquivos importados pelo bower estarão disponíveis no browser
public/index.html
• Dica:
• No Sublime Text:
• Crie um arquivo;
• Salve-o com a extensão html
• Digite html e aperte TAB
public/index.html
tudo criado “automagicamente” !
Importando scripts
ainda vamos criar o script /js/app.js
os scripts angular e angular-resource foram importados pelo Bower
Template do conteúdo
tabela simples, mostrando um produto fictício
public/index.html
Testando nosso template
• Execute o servidor:
• node index.js
• Abra no browser:
• http://localhost:3000
Resultado
Testando o Angular
• Na tag html adicione um atributo:
• ng-app
• Em algum ponto do corpo da página adicione uma
expressão:
• {{2 + 2}}
Testando o Angular
atributo ng-app
expressão que será interpretada pelo Angular
Resultado
funciona !!!
public/js/app.js
public/js/app.js
criação do módulo 'loja'
public/js/app.js
importando o módulo ngResource
public/js/app.js
criação de uma fábrica ‘Produto' utilizando o componente $resource
configuração do componente $resource com a URL do serviço RESTful
public/js/app.js
criação do controlador principal da aplicação 'lojaCtrl'
public/js/app.js
o controlador depende dos componentes $scope e Produto
public/js/app.js
no início, o controlador irá carregar os produtos e guardar na variável produtos
a variável produtos está definida no componente $scope, ou seja, acessível na página web
Modificações no index.html
• Mudar o valor do atributo ng-app:
• ng-app=“loja"
• Adicionar um atributo ng-controller no body:
• ng-controller=“lojaCtrl"
• Para cada produto do escopo, exibir seu conteúdo:
• <tr ng-repeat=“p in produtos”>
• <td>{{p.nome}} …
Resultado
Resultado Final
Resultado Final
• Disponível em:
• https://github.com/brunogamacatao/mean_jsday
Dúvidas ?
Muito Obrigado

Más contenido relacionado

La actualidad más candente

Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoIonic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoAlamo Saravali
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
React - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UIReact - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UICleiton Francisco
 
Angular 2, TypeScript e Além
Angular 2, TypeScript e AlémAngular 2, TypeScript e Além
Angular 2, TypeScript e AlémAndre Baltieri
 
Desenvolvendo com Angular CLI
Desenvolvendo com Angular CLIDesenvolvendo com Angular CLI
Desenvolvendo com Angular CLIVanessa Me Tonini
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScriptCarlos Eduardo Kadu
 
Aprendendo Angular com a CLI
Aprendendo Angular com a CLIAprendendo Angular com a CLI
Aprendendo Angular com a CLIVanessa Me Tonini
 
DOMinando JavaScript
DOMinando JavaScriptDOMinando JavaScript
DOMinando JavaScriptThiago Poiani
 
Offline apps Using Ionic Framework and PouchDB
Offline apps  Using Ionic Framework and PouchDBOffline apps  Using Ionic Framework and PouchDB
Offline apps Using Ionic Framework and PouchDBAlvaro Viebrantz
 
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2Cezar Souza
 
Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaHenrique Limas
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )Michael Douglas
 

La actualidad más candente (20)

Como fazer boas libs
Como fazer boas libs Como fazer boas libs
Como fazer boas libs
 
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoIonic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
 
Python 06
Python 06Python 06
Python 06
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
React - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UIReact - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UI
 
Angular 2, TypeScript e Além
Angular 2, TypeScript e AlémAngular 2, TypeScript e Além
Angular 2, TypeScript e Além
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
Desenvolvendo com Angular CLI
Desenvolvendo com Angular CLIDesenvolvendo com Angular CLI
Desenvolvendo com Angular CLI
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Aprendendo Angular com a CLI
Aprendendo Angular com a CLIAprendendo Angular com a CLI
Aprendendo Angular com a CLI
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
DOMinando JavaScript
DOMinando JavaScriptDOMinando JavaScript
DOMinando JavaScript
 
Offline apps Using Ionic Framework and PouchDB
Offline apps  Using Ionic Framework and PouchDBOffline apps  Using Ionic Framework and PouchDB
Offline apps Using Ionic Framework and PouchDB
 
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
 
Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o Karma
 
Controle de versão com Git
Controle de versão com GitControle de versão com Git
Controle de versão com Git
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Maven em 10 minutos
Maven em 10 minutosMaven em 10 minutos
Maven em 10 minutos
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )
 
BaaS com Firebase 3
BaaS com Firebase 3BaaS com Firebase 3
BaaS com Firebase 3
 

Destacado (10)

Retina e Retinose Pigmentar
Retina e Retinose PigmentarRetina e Retinose Pigmentar
Retina e Retinose Pigmentar
 
Python 08
Python 08Python 08
Python 08
 
Python 05
Python 05Python 05
Python 05
 
Python 07
Python 07Python 07
Python 07
 
Python 02
Python 02Python 02
Python 02
 
Python 03
Python 03Python 03
Python 03
 
Python 04
Python 04Python 04
Python 04
 
Python 01
Python 01Python 01
Python 01
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 

Similar a MEAN Stack em 40 passos

Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo realEvandro Silvestre
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Renato Groff
 
Componentizando a Web com Polymer
Componentizando a Web com PolymerComponentizando a Web com Polymer
Componentizando a Web com PolymerStefan Horochovec
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBAri Stopassola Junior
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingRhuan Karlus Silva
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Renato Groff
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Renato Groff
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Renato Groff
 
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çadoEduardo Bohrer
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com AngularElmano Cavalcanti
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04Carlos Santos
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Renato Groff
 
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBDesenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBiMasters
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com HudsonLuis Reis
 

Similar a MEAN Stack em 40 passos (20)

Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 
Componentizando a Web com Polymer
Componentizando a Web com PolymerComponentizando a Web com Polymer
Componentizando a Web com Polymer
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
Node JS - Parte 1
Node JS - Parte 1Node JS - Parte 1
Node JS - Parte 1
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and Multithreading
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 
MongoDB na Campus Party
MongoDB na Campus PartyMongoDB na Campus Party
MongoDB na Campus Party
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
 
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
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
 
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBDesenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com Hudson
 

Más de Bruno Catão

Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2Bruno Catão
 
Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2Bruno Catão
 
React JS - Parte 2
React JS - Parte 2React JS - Parte 2
React JS - Parte 2Bruno Catão
 
React JS - Parte 1
React JS - Parte 1React JS - Parte 1
React JS - Parte 1Bruno Catão
 
Unity3d Space Shooter (Parte 1)
Unity3d Space Shooter (Parte 1)Unity3d Space Shooter (Parte 1)
Unity3d Space Shooter (Parte 1)Bruno Catão
 
Introdução ao Framework Grails
Introdução ao Framework GrailsIntrodução ao Framework Grails
Introdução ao Framework GrailsBruno Catão
 
O framework spring
O framework springO framework spring
O framework springBruno Catão
 

Más de Bruno Catão (10)

Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2
 
Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2
 
React JS - Parte 2
React JS - Parte 2React JS - Parte 2
React JS - Parte 2
 
React JS - Parte 1
React JS - Parte 1React JS - Parte 1
React JS - Parte 1
 
Node JS - Parte 4
Node JS - Parte 4Node JS - Parte 4
Node JS - Parte 4
 
Node JS - Parte 3
Node JS - Parte 3Node JS - Parte 3
Node JS - Parte 3
 
Node JS - Parte 2
Node JS - Parte 2Node JS - Parte 2
Node JS - Parte 2
 
Unity3d Space Shooter (Parte 1)
Unity3d Space Shooter (Parte 1)Unity3d Space Shooter (Parte 1)
Unity3d Space Shooter (Parte 1)
 
Introdução ao Framework Grails
Introdução ao Framework GrailsIntrodução ao Framework Grails
Introdução ao Framework Grails
 
O framework spring
O framework springO framework spring
O framework spring
 

MEAN Stack em 40 passos