web open source

105
Web Open Source Carlos Maniero

Upload: carlos-maniero

Post on 15-Feb-2017

225 views

Category:

Software


0 download

TRANSCRIPT

Web Open SourceCarlos 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 SourceComunidade

Desenvolvedores codificam e Documentam

Web Open SourceComunidade

A comunidade testa, divulga, abre bugs, cria artigos.

Dá vida ao projeto.

Web Open SourceComunidade

A melhor professora de todas é a comunidade

Web Open SourceComunidade

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 CorporativoMuitos 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 informalRuby, Python e NodeJs

Web Open Source Linguagens de programação

Lugares com clima informalRuby, 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 RealGo, 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 Flaskapp = 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íciasUsuáriosComentá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íciasUsuáriosComentá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

GitSistema 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

RedisBanco 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 SourceContatos

E-mail: [email protected]

GitHub: http://github.com/carlosmaniero

Twitter: http://twitter.com/carlosmaniero