Web Open Source
Carlos Maniero
Web Open Source
Sobre mim
● Desenvolvedor Django na Leme Consultoria
● Vegano
● Ciclista
● Pythonista
● Palhaço
● Professor de Informática
É impossível pensar em Open Source sem
pensar em comunidade
Web Open Source
Comunidade
Desenvolvedores codificam e Documentam
Web Open Source
Comunidade
A comunidade testa, divulga, abre bugs, cria
artigos.
Dá vida ao projeto.
Web Open Source
Comunidade
A melhor professora de todas é a comunidade
Web Open Source
Comunidade
Juventude na Programação
Web Open Source
A maior virtude dos jovens é a preguiça
Web Open Source
Juventude na Programação
Ninguém gosta de fazer tarefas repetitivas
Web Open Source
Juventude na Programação
Web Open Source
Juventude na Programação
● John Resig, tinha 22 anos na primeira versão.
● Tornou atividades massantes em simples.
● Write less, do more.
Liguagens de programação e Frameworks,
Como escolher?
Web Open Source
Web Open Source
Linguagens de programação
Web Open Source
Linguagens de programação
Web Open Source
Linguagens de programação
Python ou Ruby?
Web Open Source
Linguagens de programação
Java ou .NET?
Web Open Source
Linguagens de programação
NodeJS ou GO?
Web Open Source
Linguagens de programação
Escolha a tecnologia de acordo com o mercado
que você pretende atuar.
Web Open Source
Linguagens de programação
Mercado Corporativo
Web Open Source
Linguagens de programação
Mercado Corporativo
Muitos utilizam Java e .NET
Web Open Source
Linguagens de programação
Lugares com clima informal
Web Open Source
Linguagens de programação
Lugares com clima informal
Ruby, Python e NodeJs
Web Open Source
Linguagens de programação
Lugares com clima informal
Ruby, Python e NodeJs
Web Open Source
Linguagens de programação
Makers <3 NodeJs
Big Data e Aplicações em Tempo Real
Web Open Source
Linguagens de programação
Big Data e Aplicações em Tempo Real
Go, Scala, NodeJs e Python
Web Open Source
Linguagens de programação
Mas isso não é regra!
Web Open Source
Linguagens de programação
Mas isso não é regra!
Trabalho com Python e faço software para o
meio corporativo.
Web Open Source
Linguagens de programação
Hello, World!
Web Open Source
Linguagens de programação
Ruby on Rails
● Criado por David Heinemeier Hansson em 2005
● DRY - Don't repeat yourself
● Linha de comando
Web Open Source
Linguagens de programação
$ rails new blog
Web Open Source
Linguagens de programação / Rails
● Controllers
● Models
● Views
● Helpers
● Database SQLite
● Servidor de Desenvolvimento
Web Open Source
Linguagens de programação / Rails
$ rails server
http://localhost:3000
Web Open Source
Linguagens de programação / Rails
Web Open Source
Linguagens de programação / Rails
$ rails generate controller welcome index
Web Open Source
Linguagens de programação / Rails
$ rails generate controller welcome index
create app/controllers/welcome_controller.rb
route get 'welcome/index'
create app/views/welcome
create app/views/welcome/index.html.erb
create test/controllers/welcome_controller_test.rb
create app/helpers/welcome_helper.rb
create app/assets/javascripts/welcome.coffee
create app/assets/stylesheets/welcome.scss
Web Open Source
Linguagens de programação / Rails
Web Open Source
Linguagens de programação / Rails
$ rails generate scaffold HighScore game:string score:integer
Web Open Source
Linguagens de programação / Rails
Web Open Source
Linguagens de programação / Rails
Web Open Source
Linguagens de programação / Rails
Web Open Source
Linguagens de programação / Rails
Web Open Source
Linguagens de programação / Rails
API Rest
http://localhost:3000/high_scores/1.json
{
"id":1,
"game": "Arkanoid",
"score": 42,
"created_at": "2016-01-24T23:13:50.207Z",
"updated_at": "2016-01-24T23:13:50.207Z"
}
Web Open Source
Linguagens de programação / Rails
Python
Web Open Source
Linguagens de programação
Python
● Sintaxe linda
● Pacotes para praticamente tudo
● Comunidade <3
Web Open Source
Linguagens de programação
Django
● Surgiu em 2005 como um CMS
● MVC embora MTV
● DRY
Web Open Source
Linguagens de programação / Python
$ django-admin startproject mysite
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
Web Open Source
Linguagens de programação / Python / Django
$ python manage.py runserver
Web Open Source
Linguagens de programação / Python / Django
$ python manage.py startapp blog
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
Web Open Source
Linguagens de programação / Python / Django
Diferente do Rails o Django não:
● Gera a arquitetura dos arquivos estáticos.
● Gera código-fonte.
● Não tem um comando scaffold.
Web Open Source
Linguagens de programação / Python / Django
Models
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=128)
body = models.TextField()
class Comment(models.Model):
user = models.CharField(max_length=128)
comment = models.TextField()
post = models.ForeignKey(Post)
Web Open Source
Linguagens de programação / Python / Django
Migrations
$ python manage.py makemigrations blog
Migrations for 'blog':
0001_initial.py:
- Create model Comment
- Create model Post
- Add field post to comment
Web Open Source
Linguagens de programação / Python / Django
Django Admin
Web Open Source
Linguagens de programação / Python / Django
Web Open Source
Linguagens de programação / Python / Django
Web Open Source
Linguagens de programação / Python / Django
Web Open Source
Linguagens de programação / Python / Django
Web Open Source
Linguagens de programação / Python / Django
MicroFrameworks
Web Open Source
Linguagens de programação / Python
MicroFrameworks
As vezes o pouco é muito
Flask, Bottle, CherryPy, entre outros.
Web Open Source
Linguagens de programação / Python
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
Web Open Source
Linguagens de programação / Python / Microframeworks
NodeJS, GoLang e Banco de Dados não
relacionais
Web Open Source
Linguagens de programação
Web Open Source
Linguagens de programação /
NodeJS, GoLang e Banco de Dados não relacionais
Arquiteturas baseadas em microserviços
Web Open Source
Linguagens de programação /
NodeJS, GoLang e Banco de Dados não relacionais
Arquiteturas baseadas em microserviços
Jornal Online
Notícias
Usuários
Comentários
Web Open Source
Linguagens de programação /
NodeJS, GoLang e Banco de Dados não relacionais
Arquiteturas baseadas em microserviços
Jornal Online
Notícias
Usuários
Comentários Jornal Online
Notícias Usuários
Comentários
Web Open Source
Linguagens de programação /
NodeJS, GoLang e Banco de Dados não relacionais
Arquiteturas baseadas em microserviços
Web Open Source
Linguagens de programação /
NodeJS, GoLang e Banco de Dados não relacionais
Aplicativos Mobile
Web Open Source
Linguagens de programação /
NodeJS, GoLang e Banco de Dados não relacionais
Aplicativos Mobile
● Alta disponibilidade
● Velocidade de resposta
● API's REST
Web Open Source
Linguagens de programação
Async
Quando utilizar?
Web Open Source
Linguagens de programação / Async
/get_messages
Usuário 1 Usuário NUsuário 2
/send_message
Chat Online
Web Open Source
Linguagens de programação / Async
/get_messages
Usuário 1 Usuário NUsuário 2
/send_message
Chat Online
Blocking
Web Open Source
Linguagens de programação / Async
/get_messages
Usuário 1 Usuário NUsuário 2
/send_message
Chat Online
Blocking
Web Open Source
Linguagens de programação / Async
/get_messages
Usuário 1 Usuário NUsuário 2
/send_message
Chat Online
Blocking
Web Open Source
Linguagens de programação / Async
/get_messages
Usuário 1 Usuário NUsuário 2
/send_message
Chat Online
Non-Blocking
I/O loop
Web Open Source
Linguagens de programação / Async
/get_messages
Usuário 1 Usuário NUsuário 2
/send_message
Chat Online
Non-Blocking
I/O loop
Web Open Source
Linguagens de programação / Async
/get_messages
Usuário 1 Usuário NUsuário 2
/send_message
Chat Online
Non-Blocking
I/O loop
Web Open Source
Ferramentas Importantes
Web Open Source
Git
Ferramentas Importantes
Web Open Source
Git
Sistema de controle de Versão
Ferramentas Importantes
Web Open Source
Não é tão complicado assim
Ferramentas Importantes / Git
Web Open Source
$ git init
$ git remote add origin url_do_repositorio
$ git add arquivo_ou_regex
$ git commit -m “O que foi atualizado?”
$ git push origin nome_da_branch (ex: master)
$ git pull origin nome_da_branch
Ferramentas Importantes / Git
Web Open Source
Ferramentas Importantes / Git
Branches e Merge
Web Open Source
Hosting Online?
Ferramentas Importantes / Git
Web Open Source
Hosting Online?
Ferramentas Importantes / Git
Web Open Source
Hosting Online?
Ferramentas Importantes / Git
Free for Open Source Repositórios privados
Web Open Source
Não use
Ferramentas Importantes / Git
Web Open Source
Use Git e Deploy Keys
Ferramentas Importantes / Git
Web Open Source
Quando você usa Git para Deploy você tem:
● A garantia que vai estar tudo atualizado após um git pull
● Não vai ter que avisar ao time que você está mexendo em tal
arquivo
● Voltar a versão de um arquivo
● Ter histórico das modificações
Ferramentas Importantes / Git
Web Open Source
Redis
Ferramentas Importantes
Web Open Source
Redis
Banco de Dados em Memoria
Ferramentas Importantes
Web Open Source
Excelente para:
● Cache
● Servidor de mensagens
● Bibliotecas para quase todas as linguagens e
frameworks
Ferramentas Importantes / Redis
Web Open Source
Exemplo de um servidor de mensagens
Ferramentas Importantes / Redis
Aplicação 2Aplicação 1
Web Open Source
E muito mais
Ferramentas Importantes / Redis
Web Open Source
Responsabilidades por usar Open Source
Web Open Source
Responsabilidades por usar open source
Responsabilidades por usar open source
● Faça parte de uma comunidade
● Reporte bugs
● Crie artigos
● Ajude os mais novos
● Participe dos eventos da sua comunidade.
● Desenvolva software livre
● Engaje-se
Web Open Source
Responsabilidades por usar open source
MeetUps
● www.meetup.com/Grupy-SP/
● www.meetup.com/rubyon/
● www.meetup.com/NodeBR-Sao-Paulo/
● www.meetup.com/GDG-SP/
Web Open Source
Responsabilidades por usar open source
A Web tornou possível usar Software Livre para
fins comerciais.
Web Open Source
Responsabilidades por usar open source
Você tem a responsabilidade de saber o que é a
regra de negócio do seu cliente e o que é
tecnologia Open Source.
Web Open Source
Responsabilidades por usar open source
Afinal, o que você ganha com isso?
Web Open Source
Responsabilidades por usar open source
Web Open Source
Responsabilidades por usar open source
PyGamii
● Engine de Games ASCII escrito em Python
● PyGamii != PyGame
Web Open Source
Responsabilidades por usar open source
Web Open Source
Responsabilidades por usar open source
Um cara fez um tweet
Postei no Facebook
@pythontrending
Stars no GitHub ▲
Empresa Irlandesa de
Games
Web Open Source
Responsabilidades por usar open source
A lição aprendida com isso é
Estude inglês!
Web Open Source
Responsabilidades por usar open source
O software também é seu!
Engaje-se
Web Open Source
Responsabilidades por usar open source
Isso é tudo pessoal!
Web Open Source
Contatos
E-mail: carlosmaniero@gmail.com
GitHub: http://github.com/carlosmaniero
Twitter: http://twitter.com/carlosmaniero

Web open source