De Zero à Web com Python e Django

3.568 visualizações

Publicada em

Um guia para o empreendedorismo digital

Publicada em: Internet
0 comentários
27 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.568
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
140
Comentários
0
Gostaram
27
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

De Zero à Web com Python e Django

  1. 1. De Zero à Web com Python e Django Um guia para o empreendedorismo digital
  2. 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. 3. Empreendedorismo Se é difícil de soletrar é difícil de fazer?
  4. 4. Fui enganado! Cadê o Python e o Django? Calma... Calma... A gente chega lá...
  5. 5. Como empreender?
  6. 6. Você precisará de... • Uma idéia válida para executar • Algum dinheiro (~R$100) • E tempo para trabalhar no projeto
  7. 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. 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. 9. Como conseguir dinheiro? Inverta o raciocínio: O que eu consigo fazer com o dinheiro que tenho?
  10. 10. Como conseguir tempo? Inverta o raciocínio: O que eu consigo fazer com o tempo que tenho?
  11. 11. Quem quer faz. Quem não quer inventa desculpas
  12. 12. Palavras Chaves • Bootstrapping • Side-Project • Passive Income • Cuidado com picaretagem! • Minimum Viable Product • Cuidado com: • Eventos de startup, busca por investimento/ financiamento, …
  13. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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)
  23. 23. Interface de Admin
  24. 24. Interface de Admin
  25. 25. Quickstartup Em breve...
  26. 26. Quickstartup
  27. 27. Quickstartup
  28. 28. Quickstartup
  29. 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. 30. Marketing • Launch • Feedback • Analytics • Interação • Iterate & Pivot • Growth Hacking • Sales Pipeline (B2B)
  31. 31. Fail Fast, Fail Cheap Não deu certo? Fecha a parte pra outra.

×