SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
De Zero à Web 
com Python e Django 
Um guia para o empreendedorismo digital
Osvaldo Santana Neto 
• https://osantana.me 
• Python e Django 
• Empreendedor em "modo de 
espera” 
• Side Projects 
• Bootstrapping 
• Titans Solutions 
• Empresa de SP 
• Trabalho Remoto
Empreendedorismo 
Se é difícil de soletrar é difícil de fazer?
Fui enganado! Cadê o 
Python e o Django? 
Calma... Calma... A gente chega lá...
Como empreender?
Você precisará de... 
• Uma idéia válida para 
executar 
• Algum dinheiro (~R$100) 
• E tempo para trabalhar no 
projeto
Ideias 
• Quando esbarrar em um problema 
anote em um papel 
• Revisite o problema proponha 
soluções (ideias) 
• Faça uma planilha para classificar 
as ideias 
• Escolha uma e valide (Business 
Model Canvas e entrevistas) 
• Ideias simples são mais poderosas 
• Não se distraia com ideias novas. 
Anote-as.
Ideia & Execução 
• Ideias são um multiplicador de 
valor da execução 
• A execução é que tem valor 
• Ideia boa e bem executada é 
o melhor cenário 
• http://sivers.org/multiply 
• Validação de ideias 
• Conheça o mercado 
• Tenha "paixão"
Como conseguir 
dinheiro? 
Inverta o raciocínio: O que eu consigo 
fazer com o dinheiro que tenho?
Como conseguir 
tempo? 
Inverta o raciocínio: O que eu consigo 
fazer com o tempo que tenho?
Quem quer faz. 
Quem não quer inventa 
desculpas
Palavras Chaves 
• Bootstrapping 
• Side-Project 
• Passive Income 
• Cuidado com picaretagem! 
• Minimum Viable Product 
• Cuidado com: 
• Eventos de startup, busca 
por investimento/ 
financiamento, …
Execução Passo a Passo 
• Aprenda Python & Django  
• Escolha um nome 
• Registre um domínio (~R$30) 
• Escolha uma hospedagem 
(grátis~$9/mês) 
• Quickstartup (grátis~$49) 
• Tráfego (grátis~infinito) 
• Feedback
Python & Django 
• https://osantana.me/pydjango 
• Python - Linguagem 
• Guido van Rossum 
• Lançada em 1989 
• Monty Python 
• Django - Framework Web 
• Jacob K. Moss & Adrian Holovaty 
• Lançado em 2003 
• Django Reinhardt
Python 
• Linguagem de uso geral 
• Web, Mobile, Desktop, … 
• Multiplataforma 
• Unix, Linux, OS X, e até a porcaria do Windows 
• OOP 
• Suporte a código procedural e funcional 
• Interpretada (com compilação transparente de bytecode) 
• Linguagem aberta / Open Source
#!/usr/bin/env python3 
# coding: utf-8 
# programa1.py - Primeiro programa 
""" 
Importa o módulo random e sorteia 
um número inteiro entre 1 e 100 
""" 
import random 
numero = random.randint(1, 100) 
escolha = 0 
tentativas = 0 
print("Acerte o número que sorteei com o menor número de tentativas.") 
while escolha != numero: 
escolha = int(input("Digite um número inteiro entre 1 e 100: ")) 
tentativas += 1 
if escolha < numero: 
print("O número %s é menor que o sorteado." % (escolha,)) 
elif escolha > numero: 
print("O número %s é maior que o sorteado." % (escolha,)) 
print("Parabéns! Você acertou o número com %s tentativas." % (tentativas,))
#!/usr/bin/env python3 
# coding: utf-8 
class No(object): 
def __init__(self, questao=None, sim=None, nao=None): 
self._sim = sim 
self._nao = nao 
self._questao = questao 
def start(self): 
if self.ask("Esse animal {}".format(self._questao), sn=True): 
self._sim = self._sim.start() 
else: 
self._nao = self._nao.start() 
return self 
def ask(self, questao, sn=False): 
resposta = "" 
while resposta == "": 
resposta = input("{}? {}".format(questao, "(s/n) " if sn else "")) 
return resposta if not sn else (resposta[0].lower() == "s")
class Animal(No): 
def __init__(self, nome): 
super(Animal, self).__init__(nome) 
self._nome = nome 
def start(self): 
if not self.ask("É um(a) {}".format(self._nome), sn=True): 
animal = self.ask("Qual é o animal") 
questao = self.ask("O que um {} faz que {} não faz".format(animal, self._nome)) 
return No(questao, Animal(animal), self) 
print("Acertei!") 
return self 
def main(): 
raiz = No("vive na água", Animal("baleia"), Animal("macaco")) 
while True: 
raiz.start() 
if not raiz.ask("Jogar novamente", sn=True): 
break 
if __name__ == '__main__': 
main()
$ python3 animais.py 
Esse animal vive na água? (s/n) n 
É um(a) macaco? (s/n) n 
Qual é o animal? cachorro 
O que um cachorro faz que macaco não faz? é domesticado 
Jogar novamente? (s/n) s 
Esse animal vive na água? (s/n) n 
Esse animal é domesticado? (s/n) s 
É um(a) cachorro? (s/n) s 
Acertei!
Django 
• Framework Web Ágil 
• DRY - Don’t Repeat Yourself 
• MVC ou MTV (Model/View/Controller, Model/Template/ 
View) 
• ORM ➡️ Banco de Dados Relacional 
• Postgres, MySQL, Oracle, … 
• Instagram, Pinterest, Disqus, …
# coding: utf-8 
from django.db import models 
from django.core.urlresolvers import reverse 
from django.utils.translation import ugettext_lazy as _ 
CONTACT_STATUS = ( 
("N", _("New")), 
("O", _("Ongoing")), 
("R", _("Resolved")), 
("C", _("Closed")), 
("I", _("Invalid")), 
) 
class Contact(models.Model): 
status = models.CharField(_("status"), max_length=1, 
choices=CONTACT_STATUS, default="N") 
created_at = models.DateTimeField(_("created at"), auto_now_add=True) 
updated_at = models.DateTimeField(_("updated at"), auto_now=True) 
name = models.CharField(_("name"), max_length=255) 
email = models.EmailField(_("email"), max_length=255) 
phone = models.CharField(_("phone"), max_length=100, blank=True) 
message = models.TextField(_("message")) 
@property 
def admin_url(self): 
return reverse("admin:contacts_contact_change", args=(self.pk,))
# coding: utf-8 
from django.contrib import admin 
from .models import Contact 
class ContactAdmin(admin.ModelAdmin): 
list_display = ('updated_at', 'name', 'email', 'phone', 'status') 
list_display_links = ('updated_at', 'name', 'email', 'phone') 
list_editable = ("status",) 
list_filter = ('status',) 
search_fields = ('name', 'email') 
ordering = ("-updated_at",) 
admin.site.register(Contact, ContactAdmin)
Interface de Admin
Interface de Admin
Quickstartup 
Em breve...
Quickstartup
Quickstartup
Quickstartup
Ação! 
• Escolha um nome (domínio livre) 
• Registre um domínio 
• http://registro.br/ ou 
https://gandi.net 
• Escolha uma hospedagem 
• Amazon AWS (grátis 1 ano) 
• Heroku (plano básico grátis) 
• DigitalOcean ($5/mês) 
• http://j.mp/vpsdigi 
• Outras alternativas mais baratas!
Marketing 
• Launch 
• Feedback 
• Analytics 
• Interação 
• Iterate & Pivot 
• Growth Hacking 
• Sales Pipeline (B2B)
Fail Fast, Fail Cheap 
Não deu certo? Fecha a parte pra outra.
De Zero à Web com Python e Django

Mais conteúdo relacionado

Mais procurados

Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.comricobl
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalAdriano Petrich
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com pythonBruno Rocha
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesMarcos Thomaz
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de DjangoLeandro Zanuz
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonAlvaro Oliveira
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do GoogleLuciano Ramalho
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Felipe Queiroz
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonFlávio Ribeiro
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonOsvaldo Santana Neto
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonGiancarlo Silva
 
Postgresql + Python = Power!
Postgresql + Python = Power!Postgresql + Python = Power!
Postgresql + Python = Power!Juliano Atanazio
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Emerson Macedo
 

Mais procurados (20)

Python na Web
Python na WebPython na Web
Python na Web
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de Django
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do Google
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o Python
 
Python para Programadores
Python para ProgramadoresPython para Programadores
Python para Programadores
 
Java primeiros-passos
Java primeiros-passosJava primeiros-passos
Java primeiros-passos
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
 
Python 3k
Python 3kPython 3k
Python 3k
 
Postgresql + Python = Power!
Postgresql + Python = Power!Postgresql + Python = Power!
Postgresql + Python = Power!
 
Python WTFAQ?
Python WTFAQ?Python WTFAQ?
Python WTFAQ?
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
 

Destaque

Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
Desenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJangoDesenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJangoRafael Nunes
 
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público FederalSUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público FederalAllyson Barros
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem PythonAlex Tercete
 
Testes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e DjangoTestes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e Djangofabiocerqueira
 
Aprendendo python 2a edição
Aprendendo python   2a ediçãoAprendendo python   2a edição
Aprendendo python 2a ediçãoCAVN/UFPB III
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
 
Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonPedro Valente
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolsoJean Lopes
 

Destaque (15)

Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Aprendendo python
Aprendendo pythonAprendendo python
Aprendendo python
 
Django - Lightning Talk - We Web Conf
Django - Lightning Talk - We Web ConfDjango - Lightning Talk - We Web Conf
Django - Lightning Talk - We Web Conf
 
Introdução ao Python com Django
Introdução ao Python com DjangoIntrodução ao Python com Django
Introdução ao Python com Django
 
Desenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJangoDesenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJango
 
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público FederalSUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
 
Python 06
Python 06Python 06
Python 06
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem Python
 
Testes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e DjangoTestes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e Django
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Aprendendo python 2a edição
Aprendendo python   2a ediçãoAprendendo python   2a edição
Aprendendo python 2a edição
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com Python
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolso
 

Semelhante a De Zero à Web com Python e Django

"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ..."Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...Cesar Augusto Nogueira
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado ServidorMario Guedes
 
O Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com PythonO Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com PythonMarinho Brandão
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareFelipe
 
O que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a ObjetosO que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a ObjetosDanilo Sato
 
[MTC 2021] Conversa sobre shift left - Douglas Cardoso
[MTC 2021] Conversa sobre shift left - Douglas Cardoso[MTC 2021] Conversa sobre shift left - Douglas Cardoso
[MTC 2021] Conversa sobre shift left - Douglas Cardosominastestingconference
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPaulino Michelazzo
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)Rudá Moura
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a TestesGregorio Melo
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOWesley Lemos
 
OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014Marcio Marchini
 
Testes Automatizados e o iOS
Testes Automatizados e o iOSTestes Automatizados e o iOS
Testes Automatizados e o iOSRicardo Valeriano
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Motalucianacmota
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScriptCarlos Santos
 
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
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etcLuciano Ramalho
 

Semelhante a De Zero à Web com Python e Django (20)

"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ..."Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado Servidor
 
O Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com PythonO Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com Python
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de software
 
O que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a ObjetosO que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a Objetos
 
[MTC 2021] Conversa sobre shift left - Douglas Cardoso
[MTC 2021] Conversa sobre shift left - Douglas Cardoso[MTC 2021] Conversa sobre shift left - Douglas Cardoso
[MTC 2021] Conversa sobre shift left - Douglas Cardoso
 
JavaScript - A Linguagem
JavaScript - A LinguagemJavaScript - A Linguagem
JavaScript - A Linguagem
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
 
OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014
 
Testes Automatizados e o iOS
Testes Automatizados e o iOSTestes Automatizados e o iOS
Testes Automatizados e o iOS
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript
 
Python MongoDB no MongoSP
Python MongoDB no MongoSPPython MongoDB no MongoSP
Python MongoDB no MongoSP
 
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
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
 

Mais de Osvaldo Santana Neto

Contruindo um Framework Web de Brinquedo só com Python
Contruindo um Framework Web de Brinquedo só com PythonContruindo um Framework Web de Brinquedo só com Python
Contruindo um Framework Web de Brinquedo só com PythonOsvaldo Santana Neto
 
Dave Thomas - Agile is Dead (GOTO 2015)
Dave Thomas - Agile is Dead (GOTO 2015)Dave Thomas - Agile is Dead (GOTO 2015)
Dave Thomas - Agile is Dead (GOTO 2015)Osvaldo Santana Neto
 
Como funciona um time remoto de desenvolvimento - Caipyra 2018
Como funciona um time remoto de desenvolvimento - Caipyra 2018Como funciona um time remoto de desenvolvimento - Caipyra 2018
Como funciona um time remoto de desenvolvimento - Caipyra 2018Osvaldo Santana Neto
 
Escalando times através do trabalho remoto
Escalando times através do trabalho remotoEscalando times através do trabalho remoto
Escalando times através do trabalho remotoOsvaldo Santana Neto
 
Plataforma distribuída de Microserviços ou, como a Olist funciona
Plataforma distribuída de Microserviços ou, como a Olist funcionaPlataforma distribuída de Microserviços ou, como a Olist funciona
Plataforma distribuída de Microserviços ou, como a Olist funcionaOsvaldo Santana Neto
 
Real Life Hackers @ PechaKucha 20x20
Real Life Hackers @ PechaKucha 20x20Real Life Hackers @ PechaKucha 20x20
Real Life Hackers @ PechaKucha 20x20Osvaldo Santana Neto
 
Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)Osvaldo Santana Neto
 
Como me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonistaComo me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonistaOsvaldo Santana Neto
 
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)Osvaldo Santana Neto
 
Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)Osvaldo Santana Neto
 
App Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasApp Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasOsvaldo Santana Neto
 
Desenvolvimento RAD com Python (Fenasoft)
Desenvolvimento RAD com Python (Fenasoft)Desenvolvimento RAD com Python (Fenasoft)
Desenvolvimento RAD com Python (Fenasoft)Osvaldo Santana Neto
 

Mais de Osvaldo Santana Neto (20)

Basic Brainf*ck
Basic Brainf*ckBasic Brainf*ck
Basic Brainf*ck
 
Contruindo um Framework Web de Brinquedo só com Python
Contruindo um Framework Web de Brinquedo só com PythonContruindo um Framework Web de Brinquedo só com Python
Contruindo um Framework Web de Brinquedo só com Python
 
A Web é uma API
A Web é uma APIA Web é uma API
A Web é uma API
 
Dave Thomas - Agile is Dead (GOTO 2015)
Dave Thomas - Agile is Dead (GOTO 2015)Dave Thomas - Agile is Dead (GOTO 2015)
Dave Thomas - Agile is Dead (GOTO 2015)
 
Olist Architecture v2.0
Olist Architecture v2.0Olist Architecture v2.0
Olist Architecture v2.0
 
Advanced Brainf*ck
Advanced Brainf*ckAdvanced Brainf*ck
Advanced Brainf*ck
 
Corrigindo Bugs no CPython
Corrigindo Bugs no CPythonCorrigindo Bugs no CPython
Corrigindo Bugs no CPython
 
Como funciona um time remoto de desenvolvimento - Caipyra 2018
Como funciona um time remoto de desenvolvimento - Caipyra 2018Como funciona um time remoto de desenvolvimento - Caipyra 2018
Como funciona um time remoto de desenvolvimento - Caipyra 2018
 
Escalando times através do trabalho remoto
Escalando times através do trabalho remotoEscalando times através do trabalho remoto
Escalando times através do trabalho remoto
 
Plataforma distribuída de Microserviços ou, como a Olist funciona
Plataforma distribuída de Microserviços ou, como a Olist funcionaPlataforma distribuída de Microserviços ou, como a Olist funciona
Plataforma distribuída de Microserviços ou, como a Olist funciona
 
Real Life Hackers @ PechaKucha 20x20
Real Life Hackers @ PechaKucha 20x20Real Life Hackers @ PechaKucha 20x20
Real Life Hackers @ PechaKucha 20x20
 
Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)
 
Como me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonistaComo me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonista
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
 
Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)
 
App Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasApp Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horas
 
Programação RAD com Python
Programação RAD com PythonProgramação RAD com Python
Programação RAD com Python
 
Desenvolvimento RAD com Python (Fenasoft)
Desenvolvimento RAD com Python (Fenasoft)Desenvolvimento RAD com Python (Fenasoft)
Desenvolvimento RAD com Python (Fenasoft)
 
Curso Python for S60
Curso Python for S60Curso Python for S60
Curso Python for S60
 

De Zero à Web com Python e Django

  • 1. De Zero à Web com Python e Django Um guia para o empreendedorismo digital
  • 2. Osvaldo Santana Neto • https://osantana.me • Python e Django • Empreendedor em "modo de espera” • Side Projects • Bootstrapping • Titans Solutions • Empresa de SP • Trabalho Remoto
  • 3. Empreendedorismo Se é difícil de soletrar é difícil de fazer?
  • 4. Fui enganado! Cadê o Python e o Django? Calma... Calma... A gente chega lá...
  • 6. Você precisará de... • Uma idéia válida para executar • Algum dinheiro (~R$100) • E tempo para trabalhar no projeto
  • 7. Ideias • Quando esbarrar em um problema anote em um papel • Revisite o problema proponha soluções (ideias) • Faça uma planilha para classificar as ideias • Escolha uma e valide (Business Model Canvas e entrevistas) • Ideias simples são mais poderosas • Não se distraia com ideias novas. Anote-as.
  • 8. Ideia & Execução • Ideias são um multiplicador de valor da execução • A execução é que tem valor • Ideia boa e bem executada é o melhor cenário • http://sivers.org/multiply • Validação de ideias • Conheça o mercado • Tenha "paixão"
  • 9. Como conseguir dinheiro? Inverta o raciocínio: O que eu consigo fazer com o dinheiro que tenho?
  • 10. Como conseguir tempo? Inverta o raciocínio: O que eu consigo fazer com o tempo que tenho?
  • 11. Quem quer faz. Quem não quer inventa desculpas
  • 12. Palavras Chaves • Bootstrapping • Side-Project • Passive Income • Cuidado com picaretagem! • Minimum Viable Product • Cuidado com: • Eventos de startup, busca por investimento/ financiamento, …
  • 13. Execução Passo a Passo • Aprenda Python & Django  • Escolha um nome • Registre um domínio (~R$30) • Escolha uma hospedagem (grátis~$9/mês) • Quickstartup (grátis~$49) • Tráfego (grátis~infinito) • Feedback
  • 14. Python & Django • https://osantana.me/pydjango • Python - Linguagem • Guido van Rossum • Lançada em 1989 • Monty Python • Django - Framework Web • Jacob K. Moss & Adrian Holovaty • Lançado em 2003 • Django Reinhardt
  • 15. Python • Linguagem de uso geral • Web, Mobile, Desktop, … • Multiplataforma • Unix, Linux, OS X, e até a porcaria do Windows • OOP • Suporte a código procedural e funcional • Interpretada (com compilação transparente de bytecode) • Linguagem aberta / Open Source
  • 16. #!/usr/bin/env python3 # coding: utf-8 # programa1.py - Primeiro programa """ Importa o módulo random e sorteia um número inteiro entre 1 e 100 """ import random numero = random.randint(1, 100) escolha = 0 tentativas = 0 print("Acerte o número que sorteei com o menor número de tentativas.") while escolha != numero: escolha = int(input("Digite um número inteiro entre 1 e 100: ")) tentativas += 1 if escolha < numero: print("O número %s é menor que o sorteado." % (escolha,)) elif escolha > numero: print("O número %s é maior que o sorteado." % (escolha,)) print("Parabéns! Você acertou o número com %s tentativas." % (tentativas,))
  • 17. #!/usr/bin/env python3 # coding: utf-8 class No(object): def __init__(self, questao=None, sim=None, nao=None): self._sim = sim self._nao = nao self._questao = questao def start(self): if self.ask("Esse animal {}".format(self._questao), sn=True): self._sim = self._sim.start() else: self._nao = self._nao.start() return self def ask(self, questao, sn=False): resposta = "" while resposta == "": resposta = input("{}? {}".format(questao, "(s/n) " if sn else "")) return resposta if not sn else (resposta[0].lower() == "s")
  • 18. class Animal(No): def __init__(self, nome): super(Animal, self).__init__(nome) self._nome = nome def start(self): if not self.ask("É um(a) {}".format(self._nome), sn=True): animal = self.ask("Qual é o animal") questao = self.ask("O que um {} faz que {} não faz".format(animal, self._nome)) return No(questao, Animal(animal), self) print("Acertei!") return self def main(): raiz = No("vive na água", Animal("baleia"), Animal("macaco")) while True: raiz.start() if not raiz.ask("Jogar novamente", sn=True): break if __name__ == '__main__': main()
  • 19. $ python3 animais.py Esse animal vive na água? (s/n) n É um(a) macaco? (s/n) n Qual é o animal? cachorro O que um cachorro faz que macaco não faz? é domesticado Jogar novamente? (s/n) s Esse animal vive na água? (s/n) n Esse animal é domesticado? (s/n) s É um(a) cachorro? (s/n) s Acertei!
  • 20. Django • Framework Web Ágil • DRY - Don’t Repeat Yourself • MVC ou MTV (Model/View/Controller, Model/Template/ View) • ORM ➡️ Banco de Dados Relacional • Postgres, MySQL, Oracle, … • Instagram, Pinterest, Disqus, …
  • 21. # coding: utf-8 from django.db import models from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _ CONTACT_STATUS = ( ("N", _("New")), ("O", _("Ongoing")), ("R", _("Resolved")), ("C", _("Closed")), ("I", _("Invalid")), ) class Contact(models.Model): status = models.CharField(_("status"), max_length=1, choices=CONTACT_STATUS, default="N") created_at = models.DateTimeField(_("created at"), auto_now_add=True) updated_at = models.DateTimeField(_("updated at"), auto_now=True) name = models.CharField(_("name"), max_length=255) email = models.EmailField(_("email"), max_length=255) phone = models.CharField(_("phone"), max_length=100, blank=True) message = models.TextField(_("message")) @property def admin_url(self): return reverse("admin:contacts_contact_change", args=(self.pk,))
  • 22. # coding: utf-8 from django.contrib import admin from .models import Contact class ContactAdmin(admin.ModelAdmin): list_display = ('updated_at', 'name', 'email', 'phone', 'status') list_display_links = ('updated_at', 'name', 'email', 'phone') list_editable = ("status",) list_filter = ('status',) search_fields = ('name', 'email') ordering = ("-updated_at",) admin.site.register(Contact, ContactAdmin)
  • 29. Ação! • Escolha um nome (domínio livre) • Registre um domínio • http://registro.br/ ou https://gandi.net • Escolha uma hospedagem • Amazon AWS (grátis 1 ano) • Heroku (plano básico grátis) • DigitalOcean ($5/mês) • http://j.mp/vpsdigi • Outras alternativas mais baratas!
  • 30. Marketing • Launch • Feedback • Analytics • Interação • Iterate & Pivot • Growth Hacking • Sales Pipeline (B2B)
  • 31. Fail Fast, Fail Cheap Não deu certo? Fecha a parte pra outra.