Tudo o que um iniciante em programação python deveria saber

De uns tempos para cá ando enrolado. Tão enrolado que esqueço de atualizar sobre o que ando fazendo. Desde Dezembro aconteceram algumas coisas e que estão espalhadas por aí, e acredito que possa ajudar alguém (nunca se sabe).

Em dezembro tivemos o FalaAÊ, evento online para falar sobre qualquer coisa. Falamos sobre comunidade, Geolocalização, Pyladies e várias outras coisas.


Janeiro palestrei na Campus Party falando sobre desenvolvimento com Bottle.


E também vários Hangouts

Mesa de bar com Python – Segunda Edição


Web2py Faq


Python para iniciantes


Mesa de bar – Primeira Edição


Mesa de bar – Segunda edição


Palestra sobre comunidade no Grupy-SP

DSC00017

IMG_20150314_121041961

Anúncios

#7 João Bueno | Pythonistas que você devia conhecer

perfil_gimp_tintec

João Bueno, mais conhecido como JS, é uma das pessoas de grande importância na linguagem Python. Trabalhando há anos com a linguagem, ter participado da diretoria da Associação da Python Brasil, contribuidor do software de edição de imagens GIMP, por isso o convido para compartilhar suas experiências.

Como conheceu Python, lá em 2001?

Eu já usava Linux há alguns anos – sempre gostei de ter controle do computador, de poder dizer para ele o que fazer. Eu sabia C, e outras linguagens que tinham caído em desuso nos ambientes gráficos – tanto do Linux quanto do Windows: nenhuma delas deixaria eu fazer uso das capacidades de multimídia de um computador como o que existia na época. Criar uma janela gráfica para poder se desenhar com o mouse em C é uma tarefa para algumas semanas. Alguns anos antes eu havia tentado aprender um pouco de Java: applets para Web eram até “tranquilos”, mas para programas desktop eu abandonei a tentativa de aprendizagem após alguns dias tentando instanciar uma classe “Rectangle” da biblioteca padrão sem ter sucesso (nem documentação).

Python para mim era mais um nome de linguagem dentre tantos outros que “quando eu tivesse tempo, iria estudar”: Perl, TCL, Awk, C++ … Meu maior interesse era aprender Perl – na época ainda era o que “impulsionava a Web”. Mas um dia comprei um guia rápido de Python (da Novatec -já está fora de catálogo há vários anos) – e lendo o mesmo, havia um diferencial: o que eu vinha embutido na linguagem e na sua biblioteca padrão permitiam o desenvolvimento rápido, sem muitos meandros, de aplicações simples. Me lembro até hoje como me chamou a atenção a documentação do módulo “random” nesse guia: enquanto nas outras linguagens na época (e até hoje, 2015), tudo o que você tem de “random” é um número entre 0 e 1, que cabe a você massagera com 3 ou 4 expressões distintas até você ter um uso pra ele: você nunca quer um número aleatório entre 0 e 1.

Você quer escolher um elemento de uma lista, quer um número inteiro entre 0 e o número de colunas da sua tela gráfica – quer um número prático. Python não só incluía chamadas diretas para todos os usos práticos possíveis de um número aleatório – mas também chamadas para várias distribuições estatísticas distintas de números aleatórios (uniforme, gauss, triangular, …)Essa e outras coisas me empolgaram bastante. Um ou dois meses depois fui começar um projeto para uma pequena empresa, e fiz em Python para Web, usando CGI.

E como começou a se interessar e colaborar com o GIMP?

(Para quem não sabe, GIMP é o GNU Image Manipulation Progam – um programa livre para manipulação de imagens e fotos com muitos dos mesmos recursos do mais conhecido na categoria, o Photoshop)

Isso foi um pouco mais tarde, em 2004. Eu já usava Linux e Software Livre há bastante tempo – e sempre tinha gostado de programas de imagens – que deixassem você usar o computador para desenhar – quando tive meu primeiro computador na década de 80, a vontade era ter uma impressora pra ele, para poder passar meus desenhos para o papel. Ainda para o PC XT,que não tinha ambiente gráfico, tive um “mouse” – só servia para os programas de desenho.

E em 2004 me bateu a questão de – “nossa eu uso todos esses programas em Software Livre, já é hora de eu começar a contribuir com pelo menos um projeto”. Bom, a minha opção foi o GIMP, do qual eu já era um usuário frequente. Fui atrás da documentação e do código fonte, e consegui compilar o programa e entrar em contato com a comunidade de desenvolvedores. A tradução também estava parada, num momento entre versões estáveis do programa, e mesmo as partes já traduzidas tinham problemas sérios. Então junto com minhas primeiras contribuições, ou tentativas, assumi também a tradução do programa.

Como foi essa experiência de dar um curso sobre edição de imagens(http://timtec.com.br/course/edicaoetratamento/)?

Esse curso foi interessante por se tratar de um “MOOC” (“Massive Online Open Course”) completo, voltado para público inciante na edição de imagens. O projeto tinha um patrocínio grande, e foi executado profissionalmente – acho que o mais marcante nele foi o contato com a produção de vídeo “em nível de TV”: a gente ia para o Estúdio, a equipe de gravação era completamente diversa das pessoas com quem eu conversava sobre conteúdo-, havia uma fase de pós-produção dos vídeos. Muita correria,e devido a própria natureza e público alvo do curso, era sobretudo um curso “leve” – bem pouco denso, de conteúdo fácil, com o básico, repetido, feito para quem estivesse abordando o assunto pela primeira vez.

Por um lado deu para matar a vontade de ensinar as pessoas a “mandarem no computador” que é o que eu gosto, mas só pela interface do GIMP. Claro que isso não é o suficiente pra mim, então mesmo sendo um curso básico, nas últimas aulas dou umas dicas de como criar plug-ins em Python para o GIMP, e modificar arquivos de SVG manualmente para o Inkscape 🙂

Brython, como ele é e o que tem de interessante?

Brython é uma implementação de Python feita para rodar no Browser – no lado do cliente.

Ele funciona traduzindo scripts em Python para Javascript no browser, depois da página ser carregada.

Quando conheci o projeto, em 2013, achei interessante só pelo fato de se poder usar a sintaxe do Python, mais legível, direto no navegador: sem chaves, delimitação por identação – e já funcionavam os “import”s que são uma mão na roda, sem falar nas sintaxes para formatação de strings: Python tem duas formas nativas, ambas implementadas no Brython, e em Javascript a única forma ainda é intercalar pedaços de strings com aspas e operadores “+” de concatenação.

Desde 2013 o projeto acelerou bem, e deixou de ser só uma “sintaxe python like” para uma implementação completa – que permite usar toda a sintaxe da linguagem, inclusive a construção “yield” e “yield from” , permitindo programação assíncrona sem callbacks explícitos.

Desde 2001 sou um fã de Python e isso tem vários motivos: a legibilidade, flexibilidade e previsibilidade da linguagem talvez sejam os maiores – Brython é um projeto que permite o uso de tudo isso no Client Side. Só a funcionalidade de “import” já é um grande diferencial em relação ao javascript “cru” que faz tudo num namespace único,e não tem qualquer suporte direto a módulos ou carregamento programático de partes de um programa. (Em javascript você tem que criar um elemento “script” no HTML, ou carregar um arquivo usando ajax e executa-lo com “eval”). Já o “import” é uma construção natural de qualquer programa minimamente mais complexo.

Ele ainda é um projeto que depende de tração de usuários e uma comunidade para chegar ao mainstream – mas creio que se comparado a projetos Javascript que já ganharam tração no passado, ele oferece muitas vantagens: hoje num projeto Web desenvolvedores tem que incluir vários, as vezes mais de 10, projetos distintos de javascript para ter um pouco mais de funcionalidade que a linguagem em si não tem (e o fato de não ter uma biblioteca padrão é,talvez, a raiz desse problema).

Brython é um projeto que não só oferece a tradução de Python para javascript, mas uma biblioteca padrão adaptada da própria biblioteca do Python (precisa de collections.OrderedDict? é só usar!)., e nessa fase de “aquecimento” o projeto está aberto inclusive a mais funcionalidades para integrar o conjunto (por exemplo, um módulo específico para facilitar a programação multimídia, no estilo feito com Pygame, mas usando o Canvas do html5);

O interessante de ter Python no browser é que alguns dos projetos de Javascript são completamente desnecessários – a biblioteca “underscore_js” ou “lodash” por exemplo, é composta de cerca de algumas dezenas de funções que, podem ser rescritas em 3 ou 4 linhas, quando não numa única expressão de Python – devido a coisas que quando você descreve parecem poucas – mas tem a ver com a maior formalidade e precisão dada aos objetos no Python e a evolução ordenada da linguagem.

O que é Plone e porque ele é tão importante?

O Plone é um sistema de gerenciamento de conteúdos – ou “CMS”: primariamente um sistema que pode ser usado para manter um portal de notícias no ar, alimentado por vários jornalistas e editores, e com milhões de leitores. Ele é totalmente escrito em Python e tira proveito de quase tudo que a linguagem oferece, sendo construído em cima do “Zope” – que é um servidor de aplicações bem completo, com ênfase em segurança, e granularidade de aplicações.

Plone tabém pode funcionar como plataforma Web para alguns projetos que se expandam a partir da idéia de um CMS.

Por outro lado, tem uma frase que costumo dizer sobre Plone: “O que Python tem fácil, Plone tem de difícil” : ele tem várias camadas, algumas existentes apenas por motivos históricos e uma complexidade razoável. Por outro lado, numa instalação limpa, atende a requisitos de acessibilidade, internacionalização e padrões Web -e está pronto para funcionar como um portal de notícias com quase nenhuma customização.

Ele tem uma importância grande par ao eco-sistema de Python por que permite uma contribuição entre projetos muito forte entre pessoas trabalhando em projetos diferentes em países diferentes. O Plone todo se divide em centenas de pacotes Python, todos licenciados sob a G.P.L. – que obriga as pessoas que fazem uso dos mesos a contribuírem suas evoluções no software de volta à comunidade. Isso acabou por criar um ambiente bem próspero para os desenvolvedores. (Algumas pessoas de fora podem se preocupante alguém se “apoderar” de um pacotinho em que elas trabalharam por 3 ou 4 semanas…mas esse pacotinho só faz alguma coisa por que está construído em cima de um trabalho sólido de dezenas de pessoas ao longo de mais de 10 anos – então na verdade, mesmo para quem tem um pensamento egoista, ainda sai bem barato)

Em uma de suas palestras, você afirmou que dá para fazer tudo com Python, realmente dá?

É uma plaletra que ministrei algumas vezes – e mesmo em palestras introdutórias de Python costumo perguntar ao público alguma área da T.I. que acham que Python não seja usado. E não há. Desde a automatização de tarefas em servidores, renderização e vídeo, computação científica, aplicações Web, big data, Python _de fato_ perpassa todas as áreas.

E ainda que em alguns nichos possa haver ferramentas mais especializadas ou melhores, Python é a ferramenta que vai atuar naquele nicho e permitir de forma transparente uma interface com todos os outros.

Precisa guardar suas expressões de matemática simbólica numa base SQL para exibir num portal Web? Python faz as três coisas, sem modificações necessárias.

Agora — nem tudo são tão flores assim – há um nicho importantíssimo – crucial, na verdade, em que Python está bem atrás: o desenvolvimento de aplicações “mobile” – tanto para Android quanto para IOs e outras plataformas. No espírito da pergunta “tem como fazer?” a resposta ainda é “sim” – há projetinhos de Python que permitem o desenvolvimento para Android, a o Kivy focado em aplicações multimídia multiplataforma – mas não há uma “grande plataforma unificada”.

A tendência é que Python se infiltre e caminhe por aí – ainda em 2015 foi formada uma lista de discussão justamente para debater a disponibilização e facilidades – ao estilo da ‘biblioteca padrão” de Python em dispositivos móveis.

Também é um segmento em que eu vejo o Brython em dois ou 3 anos começando a chegar de forma contundente: afinal, rodando no browser ele pode tirar proveito diretamente das APIs disponibilizadas em HTML5 para os vários recursos dos dispositivos móveis. (mesmo hoje, scritps em Brython abrem em funcionam sem problemas nos navegadores Android – e suspeito que no IOs também)

Se uma pessoa estiver aprendendo Python para web hoje, qual framework você indicaria (Django, Flask, Bottle, Web2py)?

É difícil dizer — primeiro, conforme você conhece a linguagem mais a fundo, percebe que os frameworks são “sabores” diferentes para criar aplicações Web: todos eles vão cobrir um conjunto de necessidades que as aplicações web tem em comum. Além dos frameworks citados há vários outros: pyramid, o próprio Plone, Tornado, web.py , watson…

Tradicionalmente se pensa em Flask, Bottle e Web2py como “microframeworks” por que potencialmente uma aplicação Web pode estar autocontida em um arquivo, e em Django como algo “maior e mais sofisticado para projetos maiores”…

Essa divisão é um tanto artificial: embora você não possa colocar um projeto django num único arquivo .py,ele pode ser contido num único “.egg” de Python. O Deploy também não depende em nada do número de arquivos, e em geral acontece com uma atualização do repositório GIT no servidor. E as aplicações com Django ficam bem estruturadas, fáceis de acompanhar, e fáceis de crescer.

Outros como Pyramid e Flask dão bastante flexibiidade quanto à persistência de dados, sistema de login, até o engine de templates – e essa é a tendência, eu creio: frameworks com componentes “plugáveis” em que você pode colcoar um componente que melhor atenda seu projeto, ou mesmo desenvolver um quando os existentes deixam de atender.

Para quem está começando, acredito que o Flask seja uma boa opção – ele tem bastante coisa já integrada e é escalável para projetos maiores – mas, uma coisa que eu sempre enfatizo é: entender a linguagem Python e “como funciona” uma aplicação web é mais importante que qualquer framework em particular.

No Centro de Treinamento da Novatec você fez o primeiro de curso de Flask, o que foi falado? E porque Flask?

Não deixei de dar ênfase aos princípios que citei acima/; o Flask oferece uma série de facilidades para se criar uma aplicação Web. A grande ênfase do curso, além do foco em chegar ao final com uma aplicação Web completa, ainda que simples, foi entender os princípios por trás de uma aplicação Web.

Por exemplo, é fácil abrir um tutorial de Flask e ver que se você coloca uma linha com “@app.route(‘/’) precedendo uma função que retorna o texto “Hello world”, você tem uma aplicação de “hello world” para a web.

Mas aí essa linha fica parecendo mágica – principalmente para quem não está já bem familiarizado com Python: o que faz essa linha? Quem é “app”? Ela é mesmo necessária? E se eu quiser fazer uma aplicação em Flask, mas quiser declarar minhas rotas de outras formas?

Esse curso então procurou dar uma base de Python, e de como funciona uma aplicação Web para que todos os participantes pudessem entender essas questões – e ver quanto mais coisas tem que ser feitas, se esse método não fosse empregado para declarar as funções da aplicação. E também por que, mesmo com todas as facilidades que o Flask traz, uma aplicação Web completa ainda depende de tantos outros pacotes, como flask-login – com as facilidades para gerenciar o login de usuários, e flask-wtf, para gerar formulários.

Tudo levado em consideração o Flask é um ótimo framework – desenvolvido quando Python já contava com anos de estrada, e outros frameworks estavam sofrendo com decisões de projeto tomadas anos antes. Flask teve a oportunidade de ter um “início do zero” quando as pessoas já tinham aprendido com os erros. Como consequência disso temos sua burocracia e tamanho reduzidos, e a possibilidade de usar vários módulos diferentes para tarefas com tecnologias diferentes.

Por exemplo: é bem “fora do caminho” você querer usar uma base de dados não relacional no Django. Em Flask, se você deseja ter alguns tipos de objeto persistidos em SQL e outros de forma não relacional, é só a questão de escrever os modelos de objetos de acordo – não precisa nenhuma mágica, nenhuma configuração para funcionar tudo.

Esses cursos sempre são uma oportunidade de aprendizado – não só para quem faz,mas também para o instrutor, que nesse ambiente de forte interação consegue perceber onde estão as principais dificuldades. É bem provável que em continuidade ao mesmo tenhamos em breve um tratando do Framework, e ensinando a chegar rapidamente nos resultados desejados – e sem nunca tratar um assunto como “mágico”.

Algumas palestras:

#2 Júlia Rizza | Pessoas que me inspiram

julia_rizza

Uma das coisas que mais gosto é conectar pontos. Quando estava aprendendo Python, fiz um curso de Web2py como já comentei aqui, e na mesma época na minha turma estava a Júlia Rizza e o Cássio Botaro. Ambos deslancharam em suas carreiras, se tornando referências no assunto quando se trata de Python/Web2py, e vejo que o curso que fizemos foi um ponto de encontro onde pudemos trocar experiências e nos conhecerem.

Hoje entrevisto a Júlia Rizza (blog), ela ministrou um curso de Web2py na Pycursos. Web2py se destaca por ser o framework ideal de entrada no mundo de desenvolvimento web, e a Júlia irá contar um pouco sobre essa experiência.

Júlia, fale um pouco sobre você

Pois bem, além do meu nome, que você já conhece, tenho 17 anos e trabalho com Python há mais de 3. Sempre me interessei na internet e em como as coisas aqui funcionam, como são construídas, por isso desde os 12 venho descobrindo mais sobre o desenvolvimento voltado para a web. Uma das razões de eu ter procurado aprender Python, inclusive, foi para trabalhar com isso. Motivo pelo qual apenas um ou dois meses depois de começar a aprender a linguagem, já parti para o web2py e hoje exploro vários outros frameworks da linguagem dentro dessa área. Meus maiores motivos de orgulho atualmente envolvem programação em geral e, desde bem cedo, tenho a certeza que quero continuar envolvida nisso. Por isso, tenho orgulho de dizer que sou a mais nova bixete da Engenharia de Computação da UFU (Universidade Federal de Uberlândia), co-founder da Cacho.la e professora de web2py.

Por que Web2py? Quais são as principais vantagens diante outros frameworks como Django e Flask?

O web2py foi criado com uma proposta didática, pois seu criador, Massimo di Pierro, percebia a grande dificuldade de entendimento da turma sobre alguns conceitos. Dessa forma, foi criado um framework que já oferece um molde de aplicação para o programador, com ferramentas prontas, embutidas, e que direciona para boas práticas. Tudo isso, além de guiar o programador dentro do mundo do desenvolvimento web e fazer com que ele adquira conhecimentos mais profundos sobre o que ele realmente está fazendo, agiliza a produção de aplicativos, torna-a mais simples e prática.

Nada melhor que isso para começar a desenvolver para a web ou para agilizar seu desenvolvimento quando você já tem experiência na área, por isso a minha escolha do framework.

Não gosto da comparação entre frameworks, pois vejo que cada um tem suas características próprias e isso faz com que sejam melhores ou piores dependendo do seu objetivo final, da sua aplicação.

Mas, em geral, as vantagens do web2py estão no seu modelo didático, que molda o programador dentro das melhores práticas, como o modelo MVC, e o fato de ser “pronto-para-usar”, ou seja, você não depende de bibliotecas externas para desenvolver, ele já vem com todo o necessário para uma aplicação básica, e você já pode sair programando, além de ter um dos deploys mais fáceis que eu já conheci.

E desvantagens do Web2py, existem?

Como nas vantagens, as desvantagens do framework são consideradas dependendo da aplicação final que você deseja. Mas novamente, em geral, considero que as desvantagens do web2py estão na documentação, que muitas vezes não encontra-se atualizada ou não é bem explicada em determinado ponto, mas creio que isso ocorre pois a comunidade e o framework estão em pleno crescimento, portanto agora que as coisas estão começando a melhorar nesse ponto (e, de qualquer forma, você sempre ganha uma resposta quando recorre à comunidade); além disso, o que pode ser considerado tanto uma desvantagem quanto uma vantagem, dependendo da pessoa, é a pouca liberdade que o framework te dá visto que ele tem fins didáticos, ou seja, ele funciona dentro de um molde e não te dá muita liberdade para sair dele. Caso você esteja começando ou já tenha experiência e goste do molde, isso é bom; caso contrário, é incômodo, mas nada que te proíba de trabalhar com ele.

Como foi a experiência de ministrar um curso online?

Bom, essa foi a primeira turma na minha vida para a qual eu dei aula de alguma coisa, então eu fiquei ansiosa do início ao fim do curso, mas foi uma das melhores experiências que tive e é realmente gratificante poder repassar o meu conhecimento aos outros. Os alunos deram muitos feedbacks legais e a turma foi excelente, apresentando trabalhos e resultados incríveis. Tentei passar nas minhas aulas não só o conhecimento sobre o web2py, mas sobre o desenvolvimento web em geral. Assim, espero ter ajudado os alunos não só com o framework, mas com seus futuros projetos e até mesmo profissões na área. Pretendo seguir com o curso, abrindo novas turmas e melhorando o conteúdo, pois adorei essa experiência.

Quais são as ferramentas/plugins que o Web2py oferece que fazem parte do seu dia a dia desenvolvendo?

Geralmente, utilizo Sublime Text para qualquer tipo de desenvolvimento e pego dicas e snippets do web2py slices para funcionalidades básicas que outras pessoas deixaram prontas (por exemplo, a aplicação do plugin CKEditor), afinal não temos que reinventar a roda. Git é uma ferramenta indispensável para qualquer desenvolvedor, por isso também dei uma ênfase a isso nas últimas aulas do curso. Visto que o web2py já vem com tudo pronto para começar a desenvolver, preciso mesmo somente disso. Por fim, costumo fazer o deploy na PythonAnywhere, que oferece uma ótima estrutura, e tudo fica lindo!

Deixe dicas e comentários para as pessoas que desejam conhecer um pouco mais sobre Python e Web2py e suas considerações.

Conhecer Python e web2py não é difícil, visto que ambos têm crescido muito e tem vários materiais espalhados na web, inclusive recomendo altamente os materiais que você indica no seu blog, mas uma dica sempre importante é: aprenda inglês, independente se você irá fazer serviços apenas em português, que nunca use nada em inglês nas suas aplicações. A questão é, tem gente da Ásia, da Europa, da África, de todo o lugar do mundo contribuindo com materiais e conhecimento sobre essas ferramentas, e toda essa contribuição vem em inglês e você vai crescer muito mais na área se conseguir adquirir conhecimento delas. Junte esse conhecimento com dedicação e interesse na área e no seu próprio crescimento e logo vai estar com ofertas de emprego, projetos e oportunidades nas suas mãos.

E conheça o Web2schools, projeto da Júlia sobre gerenciamento de escolas com Web2py – https://ericstk.wordpress.com/2014/02/12/web2schools-gerenciamento-de-escolas-com-web2py/

Guia para iniciantes a programação em Python

python-language_318-1898

Por mais que existam diversas fontes de estudos espalhados pela internet, aprender a programar não é uma ciência exata que basta seguir uma receita e funciona. Mas isso não é exclusividade para futuros programadores, é para tudo e todos.

Pensando nisso, vejo que muitas das dúvidas que a o pessoal tem é relacionado a não ter a base fundamental para compreender como Python funciona.

Com isso, faço a versão atualizada do guia para iniciantes em programação, uma trilha para que a pessoa tenha um aprendizado sem rodeios, pulando armadilhas e evitando posteriores dores de cabeça.

Um pouco de história

Para aprender Python, antes é bem melhor entender porque Python, qual é a sua história, características, e porque ela é do jeito que é, com Pep’s, Identação obrigatória e comunidade.

Grok Podcast

Grok Podcast não canso de indicar, o Carlos Brando e o Rafael Rosa Fu fazem um trabalho fantástico conversando com uma galera para entender e compartilhar o que estão fazendo. Veja abaixo os 2 episódios em que batem um papo com o Henrique Bastos sobre a linguagem Python.

A linguagem Python


http://www.grokpodcast.com/2010/10/20/episodio-6-a-linguagem-python-parte-1/


http://www.grokpodcast.com/2010/10/28/episodio-7-a-linguagem-python-parte-2/

E Python no Brasil? – Castálio Podcast

Castálio segue a mesma linha do Grok Podcast, entrevistando pessoas interessantíssimas sobre seus projetos e ideias, independente da linguagem. Nessa entrevista com o Luciano Ramalho, ele conta a história do Python no Brasil, quais são as influências e quem usa.


http://castalio.info/luciano-ramalho-oficinas-turing.html

E o que Python pode fazer? – Hack ‘n’ Cast

Hack ‘n’ Cast é um podcast aberto, qualquer pessoa pode ir lá, sugerir pautas, gravar e utilizar o espaço do Hack ‘n’ Cast. E nesse episódio sobre Python (em que participo), falamos sobre os poderes do Python, a história, onde é usado, as filosofias e diversas histórias (e gargalhadas).


http://mindbending.org/pt/hack-n-cast-v06-python


Tá, já entendi o que é Python, mas onde posso aprender?

E como instalo e os primeiros passos?

Cacho.la – Júlia Rizza – Início de Python


Cursos gratuitos

Curso de Python e Django | Osvaldo Santana

Introdução a programação com PHP e Python | Codesquad

Introdução ao Python e Django | Allisson Azevedo

Python para Zumbis | Pycursos

Python e Google App Engine | Renzo Nuccitelli


Livros

Blog Pycursos – Livros Python


Frameworks


Aulas direcionadas

Aula Scikits Learn | Péricles Miranda

Diferenças entre o Python 2.x e o Python 3.x | Marcel Caraciolo

Iniciando Desenvolvimento de Jogos com PyGame | Marcel Caraciolo

Gerando gráficos com PyLab | Ramiro B. da Luz

Testando Aplicações Django | Bernardo Fontes

Manipulando Planilhas do Excel com as bibliotecas xlrd e xlwt | Gileno Filho

Requests: HTTP For Humans | Marcel Caraciolo

Web2py sem preconceitos | Vinicius Assef

Python for Zombies | Fernando Masanori

robustNewton – newton-raphson robusto com Python/numpy | Emanuel Woiski

O Depurador Onisciente | Rodrigo Senra

Hackeando o Facebook e o Twitter com Python – Parte 1 | Fernando Masanori

Hackeando o Facebook e o Twitter com Python – Parte 2 | Fernando Masanori

Tudo o que você já deveria saber sobre Unicode | Álvaro Justen — Turicas

Crawleando a Web Utlizando o Scrapy | Bernardo Fontes

Vivenciando o deploy antes do deploy – Parte 1 | Rafael Carício

Vivenciando o deploy antes do deploy – Parte 2 | Rafael Carício

Como construir sistemas de recomedação com Python | Marcel Caraciolo

Trabalhando com Django para não ter trabalho | Henrique Bastos

Tornado :: mais do que um framework web bonitinho | Marcel Nicolay

Entendendo Metaclasses | João Sebastião de Oliveira Bueno

Uma Introdução a Visão Computacional Com SimpleCV | Rodrigo Gomes Da Cunha

Django Rest Framework 2.0 | Fernando Rocha

Muito prazer – Flask | Sergio Berlotto Jr

Inteligência Computacional com Python | José Alexandre Nalon

Deploy completo de uma aplicação Django | Allisson Azevedo

Introdução ao VPython – construindo objetos 3D | Samuel Texeira

Introdução Banco de Dados com Sqlite3 e Python | Cássio Botaro

Consumindo API’s OAuth{1,2} com Python | Allisson Azevedo

Projeto Django com Twitter Bootstrap | Fabiano Góes

Tudo o que você devia saber sobre Django Migrations | Renato Oliveira

Manipulando arquivos XML em Python | Guilherme Carvalho

Construindo um micro framework web em Python | Allisson Azevedo

Simplesmente Python: Por que você deve conhecer essa linguagem | Eric Hideki

tsuru – fazendo deploys de forma simples e divertida | Andrews Medina

Aprendendo sobre Coding Dojo com Python – Aula Ao Vivo – Python Para Zumbis

Usando o Docker para deploy de aplicações Django | Allisson Azevedo

Autenticação em Sites Django Utilizando Redes Sociais | Julio Freitas

Aplicações Web Semânticas com Python | Tatiana Al-Chueyr Martins

Introdução à Análise e Exploração de Dados com Python e Pandas | Marcel Caraciolo

O que Python pode fazer e você não sabia | Eric Hideki


Comunidade

Tomer Simis, CTO da EventPlatz

Osvaldo Santana

Andrews Medina, desenvolvedor na globo.com

Eric Hideki

Tania Moreira

Thiago Avelino

Henrique Bastos

Massimo Di Pierro

Osvaldo Matos Júnior


Acho que já tem material para a galera gastar um bom tempo, mas como sempre, falta ainda algumas coisas, e aí, o que falta? Coloca aí nos comentários 🙂

A diferença de querer realmente algo transforma sua perspectiva de vida e sucesso

1431094_29487060

Quais dessas frases você já não ouviu de amigos:

Queria fazer algo mas:

– Falta tempo;
– Falta dinheiro;
– É muita coisa para aprender;
– Falta talento;
– E diversas outras.

Sem desculpas

Tudo isso é mentira. São razões falsas para enganar a mente para se conformar com a situação atual. Não vou dizer que são motivos, até porque motivos são, em grande parte, razões imutáveis, e essas definitivamente não são.

Para dar um pouco de contexto, adoro esse vídeo falando sobre o quanto você deseja ter sucesso.

E ouço bastante coisas do tipo: “Gosto muito de Python, mas não sou pró-eficiente.”, “Gostaria muito de trabalhar com Python.” ou “Acho Python muito bom, talvez um dia eu aprenda”.

Isso não se aplica a Python, se aplica a qualquer coisa na sua carreira de desenvolvimento. O Bruno Tikami em sua palestra na Python Brasil 2013 fala sobre isso, para fugir da situação de conforto atual, é necessário sacrificar algumas coisas para poder alcançar uma posição melhor em sua carreira.

Pessoas “fora da curva” criam formas de adquiri conhecimento. Se está na internet e lendo esse texto, tenho fé que tenha plenas forças para que alcance seus objetivos.

Como o Roberto Shinyashiki diz:

“Não conheço ninguém que conseguiu realizar seu sonho sem sacrificar feriados e domingos pelo menos uma centena de vezes.

Da mesma forma, se você quiser construir uma relação amiga com seus filhos, terá que se dedicar a isso, superar o cansaço, arrumar tempo para ficar com eles, deixar de lado o orgulho e o comodismo.

Se quiser um casamento gratificante, terá que investir tempo, energia e sentimentos nesse objetivo.

O sucesso é construído à noite!

Durante o dia você faz o que todos fazem.

Mas para obter um resultado diferente da maioria… você tem que ser especial!

Se fizer igual a todo mundo, obterá os mesmos resultados.

Não se compare à maioria, pois infelizmente ela não é modelo de sucesso.

Se você quiser atingir uma meta especial, terá que estudar no horário em que os outros estão tomando chope com batatas fritas.

Terá de planejar, enquanto os outros permanecem à frente da televisão.

Terá de trabalhar enquanto os outros tomam sol à beira da piscina.

A realização de um sonho depende de dedicação, há muita gente que espera que o sonho se realize por mágica, mas toda mágica é ilusão, e a ilusão não tira ninguém de onde está, em verdade a ilusão é combustível dos perdedores pois…

Quem quer fazer alguma coisa, encontra um MEIO.

Quem não quer fazer nada, encontra uma DESCULPA.”

 

Então vamos retomar as desculpas acima:

– Falta tempo;

Realmente falta tempo? Não poderia abdicar uma hora do seu dia para estudo? Se não houver disponibilidade durante a semana, pelo menos uma hora, meia hora, qualquer hora do seu dia? Realmente dentro de 7 dias por semana não há qualquer forma?

– Falta dinheiro;

Cursos de boa qualidade estão espalhados pela internet, basta colocar o nome do curso + “Grátis” e tenho certeza que algo encontrará, ou no mínimo um blog ou portal com informações para poder pesquisar. Ou senão, bibliotecas em sua cidade, livros online, vídeo-aulas, YOUTUBE!

Fontes de estudo não faltam, e dinheiro para investir não é necessário. Mas claro, cursos podem ajudar bastante, mas vai de você e suas necessidades.

Já dizia Vinícius Teles em sua palestra:

– É muita coisa para aprender;

Mas se não houver o primeiro passo, como é que pode chegar ao objetivo?

Não adianta ver uma vaga com 400 requisitos, tem que pensar: “Bem, esses aqui acredito que sejam os essenciais, será que através do essencial, o restante não posso aprender na prática lá?” ou “Será que existe um material online que possa estudar e mandar para o pessoal dar uma olhada e submeter a vaga?”

– Falta talento;

Todos nascemos com talento para algo, mas para esse talento ser visível é necessário muito treinamento, exercícios e prática. O Vinícius Assef escreveu um post para aqueles que falam que gostaria de aprender Python.

http://aprenda-python.blogspot.com.br/2014/02/o-que-voce-sugere-para-eu-me.html

Deu para perceber algo? A diferença das pessoas de sucesso a você é que conseguem eliminar o máximo de barreiras e correr atrás, não ficar criando desculpas. E outra coisa muito importante é em relação ao sucesso, no qual sucesso é uma palavra que se aplica a diversas perspectivas, a relação “Quanto maior o salário == Sucesso” é uma farsa. É necessário definir, o que é sucesso para você.

Se você chegou ao final desse post, tenho certeza que parou para pensar em algumas coisas que estão sendo postergadas há um bom tempo. Sim, essas são coisas que você “meio” que quer.

É necessário foco, disciplina, dedicação e um pouco de sacrifício. Não é assim nos vestibulares? Por que não podemos aplicar para a vida toda?

Sylvester Stallone falou algo que não é mentira:

O Henrique Bastos em sua palestra no Rupy 2014 fala sobre sua experiência de sair de uma vida ‘regrada’ para viver de freelancer.

E você, o que anda postergando? Nunca é tarde para começar. Coloque aí nos comentários algo que lembrou agora e irá correr atrás.

Obs: Claro que isso não se aplica a tudo, cada pessoa tem uma história e necessidades de vida, mas acredito fielmente que, com esforço, não haverá algo que impeça.

Configurando o Bash Profile para mostrar o branch, venv e pastas – Eduardo Cuducos

cuducos

Como passo horas e horas programando, acabo passando também horas e horas interagindo com o terminal do meu Linux ou do meu Mac OS X. Resolvi brincar com meu .bash_profile para fazer a própria interface do terminal ser mais informativa.

O .bash_profile é um arquivo que fica na raíz do usuário (por exemplo /home/fulano/ no Linux, ou /Users/fulano/ no Mac). Para colcar de forma simples, esse arquivo personaliza a forma como o usuário interage com o terminal definindo variáveis, atalhos e até mesmo aquela linha que aparece na frente de cada comando que digitamos (o prompt).

Enfim, depois da minha brincadeira com o .bash_profile, eis o resultado:

fulano@localhost ~ $
fulano@localhost ~ $ cd ~/meu-projeto/
fulano@localhost ~/meu-projeto (master:clean) $ workon findaconf
fulano@localhost ~/meu-projeto (master:clean) $ git checkout -b nova-branch
fulano@localhost ~/meu-projeto (meu-projeto:nova-branch:clean) $ touch teste.py
fulano@localhost ~/findaconf (meu-projeto:nova-branch:pending) $ unlink teste.py
fulano@localhost ~/findaconf (meu-projeto:nova-branch:clean) $ deactivate
fulano@localhost ~/findaconf (nova-branch:clean) $ cd ~
fulano@localhost ~ $

Vamos por partes:

1. Começo no meu diretório de usuário, o prompt está normal.
1. Se entro num diretório que é um repositório Git, no prompt aparece o nome da branch em que estou e o status (pending se tenho que dar commit em alterações, ou clean caso não tenha nenhum commit pendente).
1. Se ativo um virtualenv (no exemplo uso o virtualenvwrapper), o prompt mostra o nome do virtualenv antes do nome da branch.
1. Se mudo alguma coisa no repositório, o status muda para pending.
1. Se mudo de branch, nome da branch no prompt é atualizado.
1. E se saio do diretório ou desativo o virtualenv, vou limpando o prompt.

O padrão sempre é um desses:

(nome do virtualenv : nome da branch no git : status do git) com virtualenv ativo em diretório/repositório Git
( nome da branch no git : status do git) em diretório/repositório Git (mas sem virtualenv ativo)
( nome do virtualenv ) com virtualenv ativo (mas fora de diretório/repositório Git)
Ou um prompt normal sem virtualenv ativo e fora de diretorio/repositório Git

Talvez esse código seja útil a mais alguém, então compartilho aqui essa parte do meu .bash_profile (ou podem ver no meu Gist, com mais algumas pitadas de personalização):


Eduardo Cuducoshttp://about.me/cuducos

2 anos de Aprendendo Python

1218487_51615326

Cacetada, já fazem 2 anos que esse blog existe. Parece que foi há muito pouco tempo que comecei minha empreitada no mundo do Python. É algo engraçado que quando comecei era algo completamente despretensioso, e nunca imaginei que mudaria minha vida completamente.

Quando iniciei trabalhava como consultor de vendas de materiais de papelaria, apenas um cara a mais interessado por programação, entusiasmado com tudo e todos. Não é a toa que o primeiro post era sobre o Guia de iniciantes a programação, pessoas assim como eu. E pode ver que tem artigos de Fireworks e e-commerce, no começo era apenas um blog meu, não uma referência em Python.

Gostaria de compartilhar com vocês todas as mudanças que ocorreram durante esses anos, mas esse post teria o comprimento da maratona de São Silvestre, mas realmente olhando para trás e vendo os artigos, começo a me lembrar dos aprendizados e amigos que fui fazendo ao longo do caminho.

Tem artigo de comunidade, mercado de trabalho, frameworks web Python como Django, Web2py, Bottle, Flask, Plone e outros, produtividade, motivação, foco, frustração, e diversas outras. Coisas que tive interesse e passei durante esse tempo. E se olharmos bem, desde o primeiro post(74 contando com esse), é quase uma timeline do que aprendi e vivenciei.

Mas o que é mais engraçado é que o que fazemos hoje só terá sentido daqui a algum tempo, e que aos poucos fui conhecendo histórias de pessoas que o blog ajudou, e pessoas que me ajudaram a construir e manter esse blog. Se não fosse por isso não tinha conhecido pessoas do mundo inteiro, não tinha viajado, não tinha aprendido tanto e enriquecido minhas ideias e pensamentos.

Por diversas vezes pensei em largar o blog, fazer outra coisa. Sei lá, voltar a ser consultor de vendas de novo, trabalhar com help-desk, não sei, já passou milhares de coisas. Mas a cada vez que penso em dar um passo para trás, me aparece uma história nova e reacende minhas esperanças e minha motivação volta a tona.

Por exemplo uma história engraçada que os pontos fazem muito sentido hoje nesse aniversário.

Se não tivesse livre para poder viajar a Porto de Galinhas, não tinha ido a Python Brasil, e não tinha conhecido o Robson. O Robson é um dos organizadores da Rupy São José dos Campos. Nisso não teríamos contato e não conseguiria o desconto no ingresso para a galera, sendo que o Carlos Glória não teria possibilidades de ir ao evento com o preço normal.

Conhece o Carlos, veja sua história:

Se o Carlos não tivesse ido, não teríamos essa história gravada no evento, e se ele não estivesse presente, ele não tinha ganhado esse kit de Arduíno e Raspberry Pi para continuar seus estudos.

E esse hangout foi a mesa de bar com Python, outra coisa que não tinha qualquer sentido, mas que a galera curtiu muito, e ajudou algumas pessoas que fiquei sabendo depois. E por coincidência havia ganhado um ingresso do Renzo em uma promoção, mas como já havia comprado, cedi para o Hugo, e sei que foi de muita ajuda.

Tudo isso foi algo natural, despretensioso,  mas que causou um grande impacto para muitos, que até agora não fazia muito sentido. Tenho diversas outras histórias interessantes que gostaria de compartilhar, mas também não cabem aqui, mas estão todas em meu s2 ;).

Coloque aí nos comentários o que esse blog já te trouxe de bom, de ruim, o que influenciou, ajudou, sei lá, qualquer coisa. Tem muitas coisas que não faço a menor ideia e quando vejo, tem um grande impacto.

Um abraço a todos que acreditam no trabalho do blog de ajudar o máximo possível com a comunidade, espero que esse trabalho seja persistido e que mais histórias fantásticas sejam criadas.