#4 Armin Ronacher | Pythonistas que você devia conhecer

armin_ronacher_pythonistas_que_voce_devia_conhecer

Armin Ronacher é o responsável por criar o Flask, microframework web Python mais famoso, tendo features interessantes como integração para testes únicos, usa Jinja2 templates, base unicode, extensa documentação e ótima comunidade em volta. Nomeado membro da PSF em 2012 como forma de reconhecimento pelas suas colaborações na comunidade Python.

E hoje iremos falar um pouco sobre esse framework e a história e projetos do criador.

Armin é um dos fundadores do team Pocoo, um grupo de pessoas da comunidade Python que trabalham em diversos aplicações e bibliotecas Python, tais como: Flask, Jinja 2, Pygments, Sphinx, Werkzeug e outros.

Morando na Austria, trabalhando atualmente na Fireteam, empresa que trabalha em diversos campos na plataforma de jogos.

Uma das coisas que mais perguntam seria qual a diferença entre o Flask e o Bottle, ambos microframeworks web Python, e uma das melhores respostas foi a que ele disse no Stackoverflow:

A grande diferença é que Flask é baseado em outras tecnologias como Werkzeug e Jinja2 que existem há um bom tempo e tentam não reinventar as coisas. Bottle está em outra vertente tentando manter a ideia de manter apenas um arquivo padrão. Eu quero me juntar a eles mas desenvolvedores Bottle não estão muito felizes com a ideia de abandonar a ideologia de um arquivo apenas.

Em relação a flexibilidade: Não há razões para que não seja permitido usar Flask com outras engines de template se isso que precisa. Na verdade, coisas como Flask-Genshi existem: Flask-Genshi e é incrivelmente fácil usar mako com isso, ainda que seja sem a extensão que você quer.

Aviso: Sou o desenvolvedor do Flask, Werkzeug e Jinja2

Tradução livre minha.

 


jinja2

Jinja2 é uma engine de template baseada nos princípios do Django template, porém com mais funcionalidades e mais flexíveis implementações. O Jinja2 é um dos motivos de muitas pessoas gostarem do Flask, permitindo misturar código junto com HTML, tornando as coisas mais simples. Sendo usado em projetos como o Mozilla, Sourceforge, Instagram e outros.

Veja sua simplicidade:

{% extends “layout.html” %}
{% block body %}
<ul>
<ul>{% for user in users %}
<li><a href=”{{ user.url }}”>{{ user.username }}</a></li>
</ul>
</ul>
{% endfor %}

{% endblock %}

{% block title %}{% endblock %}
<ul>
<ul>{% for user in users %}
<li><a href=”{{ user.url }}”>{{ user.username }}</a></li>
</ul>
</ul>
{% endfor %}


werkzeug

Werkzeug é um conjunto de ferramentas para aplicações WSGI. Ele permite as interações entre requisito e resposta de objetos, utilidade de funções e permite criar uma customização de um framework por cima. Trabalhar com ele também é super simples:

from werkzeug.wrappers import Request, Response

@Request.application
def application(request):
return Response('Hello World!')

if __name__ == ‘__main__’:
from werkzeug.serving import run_simple
run_simple(‘localhost’, 4000, application)

Exemplo tirado da documentação do Werkzeug


flask

E temos também o Flask, que é baseado no Werkzeug, Jinja2 e boas intenções. Muitas das pessoas que converso que gostam de Python pra desenvolvimento web, dizem que sentem um enorme prazer em desenvolver com Flask, sua flexibilidade e ferramentas poderosas o tornam bem interessante, não é a toa que tenho 2 artigos elogiando o mesmo, um com o Bruno Rocha falando sobre suas aplicações e outro com links de fontes de estudo.

Eu que sou uma pessoa azarada que nunca funciona meus experimentos de primeira, consegui sem pestanejar logo na primeira testar o Flask, seu código é facílimo de aplicar:

from flask import Flask
app = Flask(__name__)

@app.route(“/”)
def hello():
return “Hello World!”

if __name__ == “__main__”:
app.run()

Exemplo tirado da documentação do Flask

Com apenas um arquivo é possível criar um “Hello World”, e podemos subir essa aplicação sem problemas no servidor. E olha que mais bacana ainda, com apenas dois comandos já conseguimos fazer o download e rodar. Claro que antes é necessário que tenha instalado o pip, gerenciador de pacotes do Python.

pip install Flask
python hello.py
* Running on http://localhost:5000/

Exemplo tirado da documentação do Flask

Muito mais do que falar da pessoa, falar do seus projetos nesse ponto acredito ser o mais importante, muito desses projetos dizem muito sobre o Armin, coisas simples, funcionais, extensíveis, coisas que vem do zen do Python, do Tim Peters.

Bonito é melhor que feio.
Explícito é melhor que implícito.
Simples é melhor que complexo.
Complexo é melhor que complicado.
Linear é melhor do que aninhado.
Esparso é melhor que denso.
Legibilidade conta.
Casos especiais não são especiais o bastante para quebrar as regras.
Ainda que praticidade vença a pureza.
Erros nunca devem passar silenciosamente.
A menos que sejam explicitamente silenciados.
Diante da ambigüidade, recuse a tentação de adivinhar.
Deveria haver um — e preferencialmente só um — modo óbvio para fazer algo.
Embora esse modo possa não ser óbvio a princípio a menos que você seja holandês.
Agora é melhor que nunca.
Embora nunca freqüentemente seja melhor que *já*.
Se a implementação é difícil de explicar, é uma má idéia.
Se a implementação é fácil de explicar, pode ser uma boa idéia.
Namespaces são uma grande idéia — vamos ter mais dessas!


 

Deixo também outras fontes de estudos que encontrei esses dias, além dos vídeos e fontes do Armin.


 

http://pythonclub.com.br/what-the-flask-pt-2-flask-patterns-boas-praticas-na-estrutura-de-aplicacoes-flask.html

http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world

Anúncios

#2 /dev/Kico | Blogs que me inspiram

Um mundo a parte de Python, temos o Java, e uma de suas variações que é o Grails, um framework para criação de aplicações web. Acontece que muita gente não conhece e não sabe direito sobre ele, por isso convido o Kico para falar um pouco a respeito e principalmente sobre seus artigos sobre o mercado de desenvolvimento.

Kico, nos fale um pouco sobre você

Minha vida é desenvolvimento de sistemas: minha primeira experiência foi quando tinha uns 6 anos de idade e topei com o BASIC num computador chamado TK-85. Eu digitava os jogos cujo código fonte vinha impresso em livros e revistas, os modificava e me divertia horrores com isto. Passado algum tempo veio o MSX, que também tinha um interpretador BASIC, e de novo a mesma coisa. Não seria exagero dizer que esta experiência foi a origem da minha maior paixão na vida que é a programação/arquitetura/desenvolvimento/o nome que vocês quiserem que envolva criar sistemas. 🙂

Minha formação acadêmica já é fora dos moldes tradicionais para quem trabalha com desenvolvimento: meu primeiro curso (que quase terminei) foi Filosofia na UFMG. Foi a experiência mais enriquecedora da minha vida, pois foi quando *realmente* aprendi a ler, questionar, entrei em contato com os autores que moldaram minha vida de lá pra cá. O problema é que a paixão sempre foi desenvolvimento e, como todos da minha família trabalham com artes plásticas, me sentia extremamente desconfortável comigo mesmo. Não dava pra fugir: então eu fundei a itexto, que começou como um site de mesmo nome aonde as pessoas postavam seus textos em 1999 e depois passou a lidar apenas com desenvolvimento de sistemas (inicialmente focando no mercado livreiro).

Saindo da Filosofia fui para a Matemática Computacional na mesma universidade, mas acabei terminando o curso como Ciência da Computação aqui na FUMEC. No meio deste caminho acadêmico um monte de coisas ocorreram: tive a oportunidade de trabalhar nas empresas que quis, paralelamente desenvolvi diversos projetos pessoais, comecei a escrever artigos para revistas, publiquei um livro sobre Spring (agora estou terminando um sobre Groovy e Grails), criei e ajudei comunidades de desenvolvimento, dentre as quais a mais ligada ao meu nome é o Grails Brasil, houve também o meu blog, /dev/Kico, que começou como algo simples mas com o passar do tempo veio a crescer ordens de magnitude mais do que eu esperava.

E hoje atuo como consultor, escrevendo mais do que posso, entrando em algumas aventuras e me divertindo muito com tudo isto. 🙂

blogs_que_me_inspuram_dev_kico

O que é Grails? Quais são suas aplicações? E sua comunidade aqui no Brasil?

Grails é um framework para desenvolvimento web voltado para a plataforma Java EE. É baseado na linguagem Groovy. Já o vi sendo aplicado nas consultorias que dou nas mais variadas situações: desde sistemas para controle de documentos, mineração, telecomunicações, comércio eletrônico, automação, gestão de conteúdo, etc.

Sua comunidade no Brasil é bastante forte: fundei o Grails Brasil em 2008 pois não havia com quem conversar a respeito sobre o assunto. Na primeira semana havia 50 membros cadastrados, a maior parte aqui de Belo Horizonte. De lá pra cá a comunidade não parou de crescer: hoje contamos com quase 2000 membros e possivelmente é o maior grupo de usuários do mundo dedicado ao uso desta tecnologia.

Quais são as principais vantagens que o Java/Grails tem em relação as outras tecnologias?

A principal vantagem do Grails é o fato de ser baseado em Groovy, que é uma linguagem de programação bastante interessante voltada para a JVM. Basicamente tudo o que não gostamos em Java, Groovy resolve para nós. Isto com a vantagem de possuir uma sintaxe próxima da do Java, o que facilita bastante a sua adoção por empresas. Um grande problema que Groovy tinha era a performance, mas com o passar do tempo este problema está sendo superado a cada novo release da linguagem.

Apesar de ser parecida com Java, as diferenças do Groovy em relação ao Java são um excelente atrativo para programadores vindos de outras plataformas. O que ocorre: a plataforma Java EE é excelente, é indiscutível que se trata de uma das melhores plataformas já criadas para o desenvolvimento de aplicações corporativas. O problema é que nem sempre esta é amigável para quem está começando: dado que Groovy é dinâmico e possuí uma sintaxe mais interessante que a do Java em diversos aspectos, os desenvolvedores do Grails tiraram proveito destas características e, com isto, deram uma “cara Groovy” ao Java EE, tornando-o muito mais acessível e produtivo. Na minha opinião Grails acabou com o tédio que era programar na plataforma Java EE (http://www.itexto.net/devkico/?p=224).

Outra vantagem do Grails é que ele não reinventa a roda: é baseado em uma série de tecnologias que sabemos que funcionam bem como, por exemplo, Spring, Hibernate, Sitemesh, toda a API Java EE e muitas outras. Com isto temos uma plataforma de desenvolvimento que, apesar de mostrar uma maneira nova de usar estas APIs, mantém uma base sólida, nos permitindo criar com menos esforço sistemas extremamente escaláveis, estáveis e fáceis de manter.

O que Grails trouxe para o Java EE foi aquilo que víamos no Ruby on Rails: um ambiente de desenvolvimento extremamente produtivo, sem firulas, direto ao ponto e que nos permitia entregar com maior facilidade. Junte tudo isto aos pontos fortes do Java EE (estabilidade, escalabilidade, confiança, riqueza de recursos) e você tem uma ultra plataforma para criação de sistemas web/corporativos/integrações/etc. Aliás, escrevi sobre os ganhos sociais que Groovy e Grails nos trouxeram neste post: http://www.itexto.net/devkico/?p=1632

E o blog Itexto? De onde surgiu a inspiração e a necessidade de compartilhar seus conhecimentos?

Na realidade itexto é o nome da minha empresa: o nome do blog é /dev/Kico. As pessoas costumam confundir o nome por causa do endereço (http://devkico.itexto.com.br ou http://www.itexto.net/devkico). Ele surgiu inicialmente como um bloco de notas no qual escrevia aquelas perguntas que precisava responder com frequencia aos meus colegas de trabalho e clientes, além de também conter algumas das soluções que eu aplicava em mais de um projeto.

Com o passar do tempo acabei escrevendo menos sobre programação e mais sobre coisas que observo no mercado de trabalho (mas já aviso que vêm aí uma longa série de posts técnicos em breve!). Sinceramente não sei o que me leva a escrever: há estes momentos em que sento em frente ao computador e do nada saí um texto baseado em alguma questão que me atormenta naquele momento. Muitas vezes eu sei que estou errado naquilo que estou escrevendo, mas como sei que alguém irá comentar e discordar de mim (prefiro quando discordam), acaba sendo uma oportunidade que aproveito para entender melhor os assuntos sobre os quais trato.

É engraçado que o número de acessos ao blog tem crescido bastante, há inclusive uma versão em inglês dele (http://devkico.itexto.com.br/en) cujos posts tem sido bastante citados em sites como HackerNews, The Server Side, DZone e muitos outros. No entanto meu foco é Brasil: quando escrevo algo na versão em inglês é mais para obter um feedback de pessoas que moram fora do país.

Uma grande motivação para escrever é a percepção que tenho de que a maior parte dos desenvolvedores se foca tanto no técnico e dão tanta atenção ao imediato, ao hype (http://www.itexto.net/devkico/?p=1148) que se esquecem de fazer as perguntas fundamentais: por que isto é interessante? O que é isto? Qual o valor deste negócio? Gosto de cutucar estes pontos, e se puder no processo desmascarar visões que naquele momento (posso estar errado) se mostram completamente equivocadas (ou mesmo mal intencionadas), ponto pra mim.

Outro dia vi um tweet do Tiago Peczenyj sobre mim que confesso me deixou extremamente feliz: “eu sempre imagino o @loboweissmann com as mãos doendo, sangrando de tanto dar porrada nas nossas falsas ideias”.

Esta e a maior motivação. 🙂

Um dos artigos que gostei muito foi sobre o programador invisível, no qual você comenta sobre as tecnologias que são subjugadas pela grande maioria, tais como Cobol por exemplo?

A questão é: qual maioria? Se uso a palavra maioria, o faço dentro de um contexto. Se o contexto for as pessoas que vemos nas redes sociais falando sobre desenvolvimento e eventos relacionados, é uma coisa: outra totalmente diferente é o contexto no qual pego TODOS os desenvolvedores.

Dentro deste contexto, que é o que falo no post, esta “maioria” se mostra minoria. Este é o grande ponto na minha opinião: e o grande problema que vejo é o fato de que, ao nos focarmos no que esta real minoria fala, acabamos por reinventar a roda repetidas vezes, ignoramos um conhecimento enorme que o pessoal adquiriu no decorrer do tempo, e terminamos chamando de novidade o que pra maioria é cotídiano por décadas.

Este foi um post pra acordar o pessoal: muitas vezes nós acreditamos que o sujeito que tá nos mostrando a novidade da vez sabe de tudo e está nos vendendo algo realmente novo quando, na realidade estamos nos deparando com a mesma coisa de novo. A intenção deste post era mostrar o óbvio: o rei estava nu.

Na sua visão, como está o mercado de desenvolvimento web hoje? Isso em relação a qualidade das aplicações que estão sendo feitas e os salários dos desenvolvedores.

Um grande problema na minha opinião é o hype envolvendo novas tecnologias que, muitas vezes, nos faz esquecer de fazer questionamentos básicos. Vou dar um exemplo recente: Node.js. Inicialmente a idéia é bacana: Javascript do lado servidor. Legal: vou usar a mesma linguagem tanto no front quanto no backend. Mas não vejo muitos fazerem as perguntas importantes: será que meu desenvolvedor de frontend está capacitado para lidar com o backend? Será que ver meu mundo como um prego e minha única ferramenta o martelo uma boa opção? Será que aquilo que já sabemos há tempos, de que devemos usar a ferramenta certa pra situação certa caiu em desuso?

(não estou dizendo que Node.js seja ruim: apenas me preocupo com a ausência destes questionamentos)

As pessoas não se questionam: elas usam e pronto. Vou dar outro exemplo: em uma palestra que fui sobre Scala fiz o seguinte questionamento ao palestrante: “por que minha equipe que já está acostumada com Java deve adotar esta linguagem?”. Resposta que obtive: 30 segundos de constrangedor silêncio.

As perguntas fundamentais não são feitas. Este é o maior problema que vejo. Se você não as faz, surgem idéias como a de que você deve pagar o menor salário possível pois todo programador é igual, que você sempre deve pegar a tecnologia que acabou de sair por que é a melhor, este tipo de coisa.

Com relação aos salários: óbviamente a idéia por trás da empresa é maximizar seus lucros, sendo assim é natural que haja a tentativa de se minimizar os custos. Uma das formas é reduzindo o salário do desenvolvedor. Isto é uma boa? Não estaríamos desmotivando boas cabeças a entrarem na área? É muito raro eu presenciar por parte dos empresários um questionamento mais profundo a respeito destas questões. Normlamente o foco é baixar o salário pra maximizar o lucro. E depois não entendem por que o projeto atrasa, por que há tantos bugs, etc.

E há outro problema que ainda é tabu no Brasil e que me assusta bastante: as más condições de trabalho e a ocorrência frequente do fenômeno do assédio moral. No Brasil sou uma das únicas pessoas que escreveu publicamente sobre isto (http://www.itexto.net/devkico/?cat=63). O assunto ainda é um tabu. Quando tornei público meu TCC sobre o assunto (http://www.itexto.net/devkico/?p=1385) me foi dito que eu jamais conseguiria outro emprego. Acredito que isto ilustre bem a situação.

Agora, sinceramente? Acredito que o salário quem faz não é o mercado, mas o indivíduo. Se você se esforça, corre atrás de verdade, é honesto e sabe o que está fazendo uma hora ou outra dá certo.

E o que você acha sobre Python?

Meu conhecimento de Python é bastante limitado. Eu a uso no trabalho atual para escrever simuladores de alguns equipamentos com os quais preciso interagir e no passado usei o Jython no WebLogic. Tirando isto, brinquei um pouco com um framework chamado Flask, que achei MUITO interessante, mas apenas isto.

Me pareceu um ambiente de desenvolvimento bem interessante, mas nunca usei com grande intensidade pra poder falar com segurança.

Para finalizar gostaria que você comentasse de um post seu falando sobre piratear livros e materiais de desenvolvimento. Por que há ainda essa prática que é tão prejudicial para o crescimento de materiais de qualidade no mercado?

Por que é fácil e o pirata não tem consciência do trabalho que dá gerar este material.
Por que não há respeito algum pelo autor.
Por que não há visão de médio e longo prazo: pagar pelo material é investir. Você está fornecendo ao autor meios para que melhore aquele trabalho.

Aliás, é engraçado: as pessoas dizem com facilidade que algo é caro, mas com dificuldade extrema justificam esta afirmação, já reparou isto? Já tive um diálogo assim uma vez:
Seu livro de Spring que custa R$ 29,90 é caro.
Mesmo, por que?
Por que sim.

Quem pirateia simplesmente não sabe o que significa a palavra valor. Esta é a verdade.

#1 Python Help | Blogs que me inspiram

Hoje converso com o Valdir Stumm Júnior, responsável pelo blog Python Help, blog repleto de tutoriais de alta qualidade sobre Python, abordando assuntos como as características e mágicas da linguagem, além de como trabalhar com web com o Google App Engine.

Valdir, fale um pouco de ti.

Sou professor da área de programação no Instituto Federal Catarinense, em Blumenau. Conheci Python em 2005 em um projeto de uma disciplina na graduação, mas comecei a utilizar de forma mais intensiva em 2007, quando fui desenvolver o meu trabalho de graduação, que se tratava de uma extensão para o Plone. Depois disso, também utilizei Python no mestrado. Daí para diante, passei a usar Python em sala de aula e no desenvolvimento de projetos.

Qual foi a inspiração para criar o blog?

Criei o blog porque eu percebi que era preciso criar um mecanismo para que os meus alunos pudessem aprender conceitos além daqueles vistos em sala de aula, cujo tempo era restrito. Além de poder publicar artigos relacionados às dúvidas que surgiam em sala e fora dela, o blog também tornou possível a publicação de materiais envolvendo novos conceitos e tecnologias, para que os alunos pudessem avançar além daquilo que foi visto na disciplina.

De onde são feitos os estudos para criar seus artigos?

Em geral, os textos surgem de dúvidas ou coisas interessantes que encontro quando estou escrevendo código Python. As fontes de consulta que mais uso para resolver minhas dúvidas são: a documentação oficial, respostas do StackOverflow.com, e os livros Learning Python e Python in a Nutshell.

E quais são suas inspirações para poder compartilhar seus conhecimentos sobre Python?

Uma das coisas que mais gosto de fazer é escrever. No meu dia a dia, fico sempre em alerta sobre algo que poderia render um post no blog. Às vezes, a ideia vem de um módulo que acabei de aprender a utilizar. Nesse caso, escrever um texto me ajuda a firmar o que aprendi, e também a estudar o assunto com mais atenção. Em outros casos, a ideia surge ao revisitar determinado problema. Tendo aprendido outras linguagens antes, dá para perceber que o modo de pensar muda depois de começar a programar em Python. Assim, percebo que algumas coisas simples em Python podem não ser tão triviais para quem está começando com a linguagem, mesmo que já tenha experiência com programação em outras linguagens. E é sobre esse tipo de coisa que gosto de escrever.

Por que Python?

Porque é simples o suficiente para que o iniciante não se confunda e para que o experiente não se entedie. Porque é consistente, característica que é primordial para que o iniciante consiga absorver bem os conceitos. Porque tem uma stdlib gigantesca, que é complementada pela enorme quantidade de bibliotecas e frameworks que a comunidade fornece. Porque tem um REPL, que permite ao iniciante experimentar a linguagem e aprender de forma interativa. Porque tem uma comunidade engajada, com material novo surgindo a cada dia, com diversas fontes para busca de ajuda. E também porque tem o IPython, o IPython Notebook e o Dreampie que quebram um galhão no dia a dia de quem está desenvolvendo.

O que acha de programar com o Google App Engine?

Google_app_engine
http://pythonhelp.wordpress.com/2013/10/03/um-blog-com-google-app-engine/

Eu acho muito legal esse negócio de programar para a web sem se preocupar muito com a infraestrutura que vai dar suporte. O App Engine é perfeito para quem está começando, pois permite desenvolver e já publicar o app de uma forma muito simples, bastando ter uma conta Google. Com ele, podemos deixar para lá aquela chatice de instalar e configurar um servidor especialmente para publicar um aplicativo.

Uma das coisas que sempre quis fazer e você já tem feito é abordar diversas features da linguagem, seja as bibliotecas embutidas como datetime, e além de outros externos, criando tutoriais e dicas a respeito. Quais são as principais vantagens para quem não conhece?

A biblioteca padrão do Python é repleta de ferramentas úteis. O pessoal costuma dizer que Python “vem com as pilhas inclusas”, isto é, tudo o que você precisar para resolver o seu problema já está incluso quando você instala o interpretador. Então, conhecer bem a biblioteca padrão significa ter um caixa de ferramentas muito maior na hora de resolver um problema. Porém, não é só na stdlib que tem ferramentas boas. Pelo contrário, existe uma enorme quantidade de bibliotecas de terceiros que são, às vezes, até melhores que as disponíveis na biblioteca padrão. Acho que o melhor exemplo disso é a requests (http://docs.python-requests.org/en/latest/), que é uma lib para trabalhar com HTTP que é, na minha opinião, muito melhor do que a correspondente na stdlib, a urllib2.

O que o blog te trouxe de interessante?

O blog me estimulou a estudar mais a fundo vários assuntos. Afinal, antes de escrever um artigo sobre um tema qualquer, é imprescindível dar uma boa estudada nele, para não cometer gafes. Além da parte técnica, acho que treinar a escrita e a comunicação com outras pessoas é muito importante. Como professor, é essencial que eu consiga me expressar da forma mais clara possível, e acho que escrever me ajuda a melhorar não somente a escrita, mas também o discurso.

Deixe suas considerações sobre dicas para quem deseja aprender Python?

Acho que a principal dica é: organize seus estudos. Existem muitos materiais de excelente qualidade na web, mas é fácil se perder nessa imensidão de conteúdo. Para quem está começando a programar, sugiro que estude através de cursos online, como por exemplo o Python para Zumbis, pois eles já são cuidadosamente planejados para que o iniciante veja os assuntos de forma gradual, fazendo atividades práticas com feedback imediato, firmando o conteúdo que foi recém visto. Entretanto, a melhor forma de aprender Python é programando muito. Pratique; fazendo projetinhos para resolver problemas do seu dia a dia (mesmo que já existam programas com a mesma finalidade) e resolvendo problemas que exercitem a sua lógica de programação. Existem vários recursos que podem servir como guias nesse processo, como os sites codingbat.com e projecteuler.net. Outro recurso bem interessante, que conheci há pouco, é o projeto Python Koans (github.com/gregmalcolm/python_koans) que é um tutorial interativo em que o sujeito aprende com uma abordagem incremental baseada em testes. Enfim, recursos existem aos montes, basta escolher algum e praticar muito.

Resenha – Python Cookbook

Uma das maiores vantagens da linguagem são as suas bibliotecas embutidas, as famosas ‘baterias inclusas’, no qual oferecem diversas facilidades ao resolver problemas diários enquanto desenvolvemos uma aplicação. E o Python Cookbook veio com uma injeção enorme de diversas bibliotecas que a grande maioria não conhece. Desde o iniciante que está programando a pouco tempo com Python, ou veio de outra linguagem, até o mais experiente programador o livro é indicado.

Python_Cookbook_resenha

Python Cookbook veio com diversos intuitos na verdade, seja para apresentar as novidades que a versão 3 do Python vem agregar, demonstrar como desenvolver soluções pythonicas e elegantes, prover discussões sobre os motivos de escolher essa ou aquela forma de desenvolvimento, levar em consideração o desempenho e processamento que seu código pode ter se escolher a forma errada, e principalmente lhe poupar diversas dores de cabeça.

A comunidade Python esses dias andaram em diversas discussões sobre o futuro da linguagem. Atualmente temos 2 versões disponíveis: 2.x e 3.x. A grande maioria dos projetos atuais se encontram na versão 2.x, sendo a versão preferencial para criação de projetos em produção. Mas por que isso? Por que ainda permanecemos na versão 2.x se já existe uma versão nova e melhorada?

O grande problema que as pessoas enfrentam é no quesito das bibliotecas externas. Até algum tempo atrás grande parte delas não havia sido portada para a nova versão, e sinceramente ainda uma boa parte não foram portadas. E esse processo leva-se um tempo para arrumar, até porque muitas delas são bastante complexas.

E para que não tenha esses tipos de dores de cabeça, muitos dos programadores ainda não migraram para a 3.x. O framework Django tem suporte a versão 3.x, um dos frameworks senão o framework mais utilizado para criação de projetos web, porém ainda encontra algumas incompatibilidades. Mas a cada dia esse cenário está mudando.

Python 3.x vem com diversas melhorias em relação a performance, tratamento de unicodes, sintaxe mais simplificada e diversas outras. Sinceramente em apenas 2 horas de estudos é possível já criar projetos de pequeno/médio porte sem problemas, e IMO, SIM, todos devemos o mais breve possível nos atualizarmos e migrarmos a nova versão.

E com tudo isso dito, o que tem a ver com o livro? Python Cookbook é a porta de entrada para o ingresso nessas novas funcionalidades que a versão traz. Tratando de temas cotidianos como tratamento de strings e integers, arquivos, metaprogramaçao, concorrência, classes e objetos, processamento de dados e outros, e mostrar que é possível utilizar a nova versão sem grandes problemas.

Quem nunca se deparou com alguns desses problemas e levou certo tempo para descobrir como solucionar?

– Manter dicionários em ordem;
– Agrupar registros de acordo com um campo;
– Pesquisar e substituir textos;
– Remover caracteres indesejados de strings;
– Iterar ao contrário;
– Ler e escrever dados CSV;
– Ler e escrever dados JSON;
– Diversos outros.

Mas a questão não é apenas mostrar como resolver isto, é fazer de forma simples, concisa, performática e pythonica.

Este não é um livro para se ler do começo ao fim, é um livro de receitas, que a cada problema que surgir ir fazer uma consulta. Só não digo que é aquele tipo de livro de carregar no bolso porque ele é grande. Mas isso não é algo ruim, muito pelo contrário, a quantidade de informações são indispensáveis.

Uma das coisas mais bacanas é que cada tópico é recheado de exemplos práticos, aqueles que podemos utilizar sem problemas, é tudo sem enrolação. E melhor ainda, em cada um é explicado detalhadamente o porquê de tal escolha ser a mais indicada. Não é algo que a pessoa diz que é o certo e pronto, há em cada um uma seção de discussão. Isso é realmente importante e enriquece muito o conteúdo.

A tradução ficou ótima, respeitando os termos da linguagem, não inventando ou com rodeios. Infelizmente vemos muitos problemas nesse quesito principalmente com livros de tecnologia.

O bacana de tudo é que por tratar de diversos tópicos desde os básicos aos mais avançados, o público alvo do livro atinge praticamente qualquer pessoa que deseja se aprofundar mais sobre o que a linguagem tem a oferecer. Claro que se a pessoa não tem qualquer tipo de conhecimento de programação não irá usufruir, mas tendo o mínimo de conhecimento e já esteja trabalhando em algum projeto, com certeza o livro é um MUST HAVE.

Python se destaca principalmente em sua atuação na web, seja em empresas grandes como Google, Youtube, Disqus, Instagram e outros, mas o que enriquece ainda mais a tecnologia é a sua diversidade. Utilizamos bastante Python para processamento de dados, tratamento de imagens, aplicações desktop, criação de jogos, aplicações mobile, e muito forte em computação científica. Isso é fantástico pois sabendo o mínimo da linguagem você pode ter diversos campos de atuação, você não fica preso a um determinado campo. E principalmente, sabendo apenas Python você consegue abranger a todos, não é necessário um treinamento intensivo para criar e desenvolver.

E isso é uma das maravilhas da linguagem, além do suporte da comunidade e diversos cursos, livros e tutoriais disponíveis tanto em livros como na internet. Livros como o Python Cookbook vem para enriquecer ainda mais seus conhecimentos, sendo muito importante para aprender a desenvolver de forma certa e principalmente para que não haja problemas de performance. Com a velocidade e o crescimento das aplicações, uma hora ou outra nos deparamos com esses problemas, poupando o trabalho de refatoração de código já fazendo a coisa certa desde o começo.

Nos primeiros capítulos começamos com coisas básicas como estruturas de dados e algoritmos, strings e textos, e tratamento de números datas e horas. Apenas nesses 3 tópicos já são mostrados como importar bibliotecas certas para cada tipo de necessidade. Muitos programadores tem a ideia de que uma biblioteca tem diversas funções, isso é verdade em certo ponto, mas o que não sabem é que existem diversas variações, aplicações e resultados que cada uma apresenta.

Depois nos aprofundamos um pouco mais na questão de iteradores e geradores, arquivos e I/O, nesses capítulos são interessantes os detalhes dados no tratamento de unicodes por exemplo, como trabalhar facilmente com a manipulação de iteradores, seja na verificação de aquivos, lista de diretórios, criar arquivos e diretórios temporários e outros.

Temos também Codificação e processamento de dados, fundamentais quando trabalhamos com bancos de dados grandes. Funções, Classes e objetos, como definir funções com argumentos default ou senão funções de callback inline.

Ainda existem diversos outros tópicos importantes que contém o livro que vale a pena dar uma olhada. Fica a dica então de darem uma olhada e ver realmente quão poderosa a linguagem é e as facilidades que ela oferece.

Para mais informações, acesse – http://www.novateceditora.com.br/livros/python-cookbook/

Se deseja ver os capítulos que o livro aborda, acesse o sumário – http://www.novateceditora.com.br/livros/python-cookbook/sumario9788575223321.pdf

E também alguns dos exemplos que falei, a Novatec disponibiliza o primeiro capítulo gratuitamente para analisar a qualidade do material – http://www.novateceditora.com.br/livros/python-cookbook/capitulo9788575223321.pdf

#3 – Fontes de estudo de Flask e um pouco mais

flask

Um dos frameworks que anda surpreendendo as pessoas é o Flask, um micro-framework Python que é muito fácil de se aprender, extensões que resolvem a grande maioria das necessidades ao criar suas aplicações, excelente sua documentação e comunidade.

Juntando o útil ao agradável, deixo alguns links caso haja interesse e outros links para quando se cansar de ler sobre Flask.

Como começar a aprender a programar com Flask

O Bruno Rocha fez um artigo fantástico para o Pythonclub falando sobre como começar um projeto Flask de forma certa, com excelentes dicas e ótima didática. IMPERDÍVEL!

 Preparando o ambiente de desenvolvimento com Flask

RealPython é um excelente blog que explica passo – a – passo como começar a preparar seu ambiente de desenvolvimento, a forma de organizar os arquivos e fazer deploy.

Bônus: No blog já tem a segunda parte do tutorial ensinando a criar uma página de login, não perca.

Criando um tomador de notas em Flask

Já pensou que poderíamos criar uma aplicação personalizada para anotarmos as coisas importantes do dia a dia? Veja então como criar dinamicamente um tomador de notas.

Create a dynamic webpage with Twitter and Flask’s rendering engine, Jinja2

Aprendendo e Ensinando Python

Como colaborar na tradução do Djangobook sem conhecer programação

Diferenças entre Flask e Pyramid

Criando desenhos com Python

Por que usar Python para ensino de programação?

Bônus do bônus:  Livro gratuito de boas práticas e patterns para projetos Flask.