SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
Hackaton!
Jonathan Juares Beber
Outubro, 2015
Agenda
● Git[HUB]
○ Básico do básico
● hub.jazz.net
● MEAN
● Deploy
● Conta no IBM Bluemix
○ Use o email da univille
● Conta no GitHub
● Conta no Cloud9 IDE
○ Logue com o Github
● Acesso a internet
● Um navegador atualizado
○ GoogleChrome ou
○ Firefox!
● Lógica de programação
● Qualquer editor de texto
○ Depende da nossa internet :)
Será preciso
HUB.JAZZ.NET
1. Create a project;
2. Name it;
3. Create a new repository;
4. Choose by github;
5. This isn’t a private repo;
6. Enable scrum interface;
7. Deploy it on IBM Bluemix!
c9.io
● Não é o time de eSports
● Tenha seu ambiente de
desenvolvimento em
qualquer lugar
● Terminal Linux sempre a
mão
● Sua prórpia máquina
○ Inside a docker image!
● It’s free
○ OpenSource repositories
Change port!
package.json
jbeber@my-note:~/hackaton-ibm$ npm init
name: (hackaton-ibm) lista-de-compras
version: (0.0.0) 0.0.1
description: Lista de compras para o IBM Hackaton
entry point: (index.js) index.js
test command: ...
package.json
Express
Install: npm i --save express
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send(“Hello world!”);
});
app.listen(3000);
MVC
Model -> Mongoose - ORM
View -> ejs
Controller -> Routes
Routes
…
var routes = require(‘./routes’);
…
app.get(‘/’, routes.index);
exports.index = function(req, res) {
res.send(‘Hello World!’);
}
Views
EJS -> Embeded JavaScript
● Crie um arquivo index.ejs
exports.index = function(req, res) {
res.render(‘index’);
}
…
var ejs = require(‘ejs’);
var path = require(‘path’);
…
app.set(‘views’, path.join(__dirname, ‘views’));
app.set(‘view engine’, ‘ejs’);
npm i --save ejs
Angular!
● Public path:
○ app.use(express.static(path.join(__dirname, ‘public’)));
● Download Angular
○ wget ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.min.js
● Use it!
○ <script src="js/angular.min.js"></script>
○ <script src="js/main.js"></script>
○ <script src="js/shoplist.js"></script>
● Visualizar aqui!
First deploy!
● Criar uma tarefa de deploy;
● Use um nome de aplicação único;
● Fazer com que cada alteração no gitHub inicie o deploy;
● Por baixo ele usa:
○ Um pouco de Jenkins;
○ Um pouco de CloudFoundry;
○ É possível usar docker;
Change port!
add an start
command!
CRUD in AngularJS
● Create, Read, Update and Delete
● Faremos ainda sem banco
● Vamos listar (read):
app.get('/lista', routes.index);
$http.get('/lista').success(
function(retorno){
$scope.lista = retorno.lista;
}
);
exports.lista = function(req, res) {
res.json({
lista: [
{
item: 'Detergente',
quantidade: 10
},
{
item: 'Sabão',
quantidade: 2
}
]
});
}
<h1>Lista de compras da Dona Salete</h1>
<div ng-repeat="item in lista">
{{item.item}} = {{item.quantidade}}
</div>
Novo deploy!
● Cada alteração no GitHub inicia o deploy!
Adicionar ( CREATE )
● Ainda não vamos pedir nada para o servidor
● Criamos um form:
<form ng-submit="addItem()">
Produto: <input type="text" ng-model="newItem.item" name="text" />
<br>
Quantidade:
<input type="number" ng-model="newItem.quantidade" name="qtd">
<br>
<input type="submit" value="Mãe, compra pra mim?" />
</form>
Adicionar ( CREATE )
● Agora criamos a função que adiciona esse item:
function newItem() {
this.item = '';
this.quantidade = 0;
}
$scope.newItem = newItem();
$scope.addItem = function() {
$scope.lista.push($scope.newItem);
$scope.newItem = newItem();
}
Adicionar ( MODELS )
● Se reiniciar, vamos perder tudo!
● Adicionando persistência:
[ AQUI ]
npm i --save mongoose
Test it!
jonathanb@my-note$ wget -o mongod goo.gl/gkKCWN
jonathanb@my-note$ chmod +x mongod
jonathanb@my-note$ ./mongod &
jonathanb@my-note$ node testeBanco.js (ctrl + C)
jonathanb@my-note$ mongo items
> db.items.find()
Models ( MongoDB )
var Item = require('../models/items');
...
exports.lista = function(req, res) {
Item.find(
{},
function(err, items){
if(err)
return console.log('Erro: ' + err);
res.json({lista: items})
}
);
}
● Não vamos mais buscar itens estáticos:
Create
● Agora vamos também adicionar ao banco!
app.post('/add', routes.add);
$scope.addItem = function() {
$http.post('/add', $scope.newItem)
.then(function successCallback(resposta){
$scope.lista.push(resposta);
$scope.newItem = newItem();
});
}
exports.add = function(req, res) {
var item = new Item(req.body);
item.save( function(err, item) {
if(err) return console.log('Erro ao salvar');
res.send(item);
});
}
Create
● Falto o body-parser
…
var bodyParser = require('body-parser');
…
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
npm i --save body-parser
Update
● Vamos ter que criar links:
● Agora a função:
● E criar a rota:
<a href="#" ng-click="loadItem(item)">{{item.item}} = {{item.quantidade}}</a>
$scope.loadItem = function(item){
$scope.newItem = item;
}
Atualizar o addItem
app.put('/update', routes.update); Atualizar as rotas
Remove
● Vamos ter que criar links:
● Agora... se vira!
○ Faz deletar;
○ E vê se deixa isso bonito!
<a href="#" ng-click="loadItem(item)">
{{item.item}} = {{item.quantidade}}
</a>
<a href="#" ng-click="deleteItem(item)">
<img src="https://cdn2.iconfinder.com/data/icons/drf/PNG/trash.png"/>
</a>
Obrigado!
● Dúvidas?
jonathanbeber@gmail.com
jbeber@contaazul.com
http://github.com/jonathanbeber

Mais conteúdo relacionado

Mais procurados

Interop git hubactions v2
Interop git hubactions v2Interop git hubactions v2
Interop git hubactions v2Vinicius Moura
 
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...iMasters
 
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic BeanstalkDesenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic BeanstalkAmazon Web Services LATAM
 
GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019Gabriel Machado
 
Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º diaArmando Couto
 

Mais procurados (9)

Interop git hubactions v2
Interop git hubactions v2Interop git hubactions v2
Interop git hubactions v2
 
Debug de cabo a rabo
Debug de cabo a raboDebug de cabo a rabo
Debug de cabo a rabo
 
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
 
Secomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao ElixirSecomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao Elixir
 
Dashboard slides
Dashboard slidesDashboard slides
Dashboard slides
 
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic BeanstalkDesenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
 
[CEFETMG] - Introdução ao Github
[CEFETMG] - Introdução ao Github[CEFETMG] - Introdução ao Github
[CEFETMG] - Introdução ao Github
 
GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019
 
Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º dia
 

Semelhante a Hackaton

Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorFelipe Pedroso
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareAldson Diego
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!magnunleno
 
Introdução a Python e Django
Introdução a Python e DjangoIntrodução a Python e Django
Introdução a Python e Djangoledsifes
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017Denis Santos
 
Seis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioSeis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioMarcos Antônio de Souza Silva
 
Codelab - Actions on Google
Codelab - Actions on GoogleCodelab - Actions on Google
Codelab - Actions on GoogleAlvaro Viebrantz
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
 
Repositório github, os comandos iniciais do git bash para criar projetos de c...
Repositório github, os comandos iniciais do git bash para criar projetos de c...Repositório github, os comandos iniciais do git bash para criar projetos de c...
Repositório github, os comandos iniciais do git bash para criar projetos de c...Jorge Filho
 
2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao androidMessias Batista
 
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressFerramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressTiago Hillebrandt
 
Workshop sistema de versionamento de código - git
Workshop  sistema de versionamento de código - gitWorkshop  sistema de versionamento de código - git
Workshop sistema de versionamento de código - gitThiago Filadelfo
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
Apresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaApresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaGPrimola
 

Semelhante a Hackaton (20)

Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
 
Aula 9 - Introdução ao Python
Aula 9 - Introdução ao PythonAula 9 - Introdução ao Python
Aula 9 - Introdução ao Python
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de Software
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!
 
Introdução a Python e Django
Introdução a Python e DjangoIntrodução a Python e Django
Introdução a Python e Django
 
My first app django
My first app djangoMy first app django
My first app django
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017
 
Seis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioSeis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprio
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Codelab - Actions on Google
Codelab - Actions on GoogleCodelab - Actions on Google
Codelab - Actions on Google
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
 
Repositório github, os comandos iniciais do git bash para criar projetos de c...
Repositório github, os comandos iniciais do git bash para criar projetos de c...Repositório github, os comandos iniciais do git bash para criar projetos de c...
Repositório github, os comandos iniciais do git bash para criar projetos de c...
 
Python Para Maemo
Python Para MaemoPython Para Maemo
Python Para Maemo
 
2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android
 
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressFerramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
 
Workshop sistema de versionamento de código - git
Workshop  sistema de versionamento de código - gitWorkshop  sistema de versionamento de código - git
Workshop sistema de versionamento de código - git
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Apresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaApresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno Cotta
 

Hackaton

  • 2. Agenda ● Git[HUB] ○ Básico do básico ● hub.jazz.net ● MEAN ● Deploy
  • 3. ● Conta no IBM Bluemix ○ Use o email da univille ● Conta no GitHub ● Conta no Cloud9 IDE ○ Logue com o Github ● Acesso a internet ● Um navegador atualizado ○ GoogleChrome ou ○ Firefox! ● Lógica de programação ● Qualquer editor de texto ○ Depende da nossa internet :) Será preciso
  • 4. HUB.JAZZ.NET 1. Create a project; 2. Name it; 3. Create a new repository; 4. Choose by github; 5. This isn’t a private repo; 6. Enable scrum interface; 7. Deploy it on IBM Bluemix!
  • 5. c9.io ● Não é o time de eSports ● Tenha seu ambiente de desenvolvimento em qualquer lugar ● Terminal Linux sempre a mão ● Sua prórpia máquina ○ Inside a docker image! ● It’s free ○ OpenSource repositories Change port!
  • 6.
  • 7. package.json jbeber@my-note:~/hackaton-ibm$ npm init name: (hackaton-ibm) lista-de-compras version: (0.0.0) 0.0.1 description: Lista de compras para o IBM Hackaton entry point: (index.js) index.js test command: ...
  • 9. Express Install: npm i --save express var express = require('express'); var app = express(); app.get('/', function(req, res){ res.send(“Hello world!”); }); app.listen(3000);
  • 10. MVC Model -> Mongoose - ORM View -> ejs Controller -> Routes
  • 11. Routes … var routes = require(‘./routes’); … app.get(‘/’, routes.index); exports.index = function(req, res) { res.send(‘Hello World!’); }
  • 12. Views EJS -> Embeded JavaScript ● Crie um arquivo index.ejs exports.index = function(req, res) { res.render(‘index’); } … var ejs = require(‘ejs’); var path = require(‘path’); … app.set(‘views’, path.join(__dirname, ‘views’)); app.set(‘view engine’, ‘ejs’); npm i --save ejs
  • 13. Angular! ● Public path: ○ app.use(express.static(path.join(__dirname, ‘public’))); ● Download Angular ○ wget ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.min.js ● Use it! ○ <script src="js/angular.min.js"></script> ○ <script src="js/main.js"></script> ○ <script src="js/shoplist.js"></script> ● Visualizar aqui!
  • 14. First deploy! ● Criar uma tarefa de deploy; ● Use um nome de aplicação único; ● Fazer com que cada alteração no gitHub inicie o deploy; ● Por baixo ele usa: ○ Um pouco de Jenkins; ○ Um pouco de CloudFoundry; ○ É possível usar docker; Change port! add an start command!
  • 15. CRUD in AngularJS ● Create, Read, Update and Delete ● Faremos ainda sem banco ● Vamos listar (read): app.get('/lista', routes.index); $http.get('/lista').success( function(retorno){ $scope.lista = retorno.lista; } ); exports.lista = function(req, res) { res.json({ lista: [ { item: 'Detergente', quantidade: 10 }, { item: 'Sabão', quantidade: 2 } ] }); } <h1>Lista de compras da Dona Salete</h1> <div ng-repeat="item in lista"> {{item.item}} = {{item.quantidade}} </div>
  • 16. Novo deploy! ● Cada alteração no GitHub inicia o deploy!
  • 17. Adicionar ( CREATE ) ● Ainda não vamos pedir nada para o servidor ● Criamos um form: <form ng-submit="addItem()"> Produto: <input type="text" ng-model="newItem.item" name="text" /> <br> Quantidade: <input type="number" ng-model="newItem.quantidade" name="qtd"> <br> <input type="submit" value="Mãe, compra pra mim?" /> </form>
  • 18. Adicionar ( CREATE ) ● Agora criamos a função que adiciona esse item: function newItem() { this.item = ''; this.quantidade = 0; } $scope.newItem = newItem(); $scope.addItem = function() { $scope.lista.push($scope.newItem); $scope.newItem = newItem(); }
  • 19. Adicionar ( MODELS ) ● Se reiniciar, vamos perder tudo! ● Adicionando persistência: [ AQUI ] npm i --save mongoose Test it! jonathanb@my-note$ wget -o mongod goo.gl/gkKCWN jonathanb@my-note$ chmod +x mongod jonathanb@my-note$ ./mongod & jonathanb@my-note$ node testeBanco.js (ctrl + C) jonathanb@my-note$ mongo items > db.items.find()
  • 20. Models ( MongoDB ) var Item = require('../models/items'); ... exports.lista = function(req, res) { Item.find( {}, function(err, items){ if(err) return console.log('Erro: ' + err); res.json({lista: items}) } ); } ● Não vamos mais buscar itens estáticos:
  • 21. Create ● Agora vamos também adicionar ao banco! app.post('/add', routes.add); $scope.addItem = function() { $http.post('/add', $scope.newItem) .then(function successCallback(resposta){ $scope.lista.push(resposta); $scope.newItem = newItem(); }); } exports.add = function(req, res) { var item = new Item(req.body); item.save( function(err, item) { if(err) return console.log('Erro ao salvar'); res.send(item); }); }
  • 22. Create ● Falto o body-parser … var bodyParser = require('body-parser'); … app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); npm i --save body-parser
  • 23. Update ● Vamos ter que criar links: ● Agora a função: ● E criar a rota: <a href="#" ng-click="loadItem(item)">{{item.item}} = {{item.quantidade}}</a> $scope.loadItem = function(item){ $scope.newItem = item; } Atualizar o addItem app.put('/update', routes.update); Atualizar as rotas
  • 24. Remove ● Vamos ter que criar links: ● Agora... se vira! ○ Faz deletar; ○ E vê se deixa isso bonito! <a href="#" ng-click="loadItem(item)"> {{item.item}} = {{item.quantidade}} </a> <a href="#" ng-click="deleteItem(item)"> <img src="https://cdn2.iconfinder.com/data/icons/drf/PNG/trash.png"/> </a>