Blog do PyCursos

Flask - Casos de Sucesso

13 de Fevereiro de 2013

 

O Flask é um pequeno grande framework, muitos programadores o utilizam tanto no back-end como no front-end. Veja agora alguns sites que utilizam o Flask como seu framework.

 

 

Primeiro o próprio site do Flask é feito em Flask ! :-)

 

http://flask.pocoo.org/

 

 

Flask site

Comiker, um site de tirinhas:

 

http://www.comiker.com/

 

 

DotDhare, site de compartilhamento de arquivos de configuração

 

http://dotshare.it/

 

 

Um site pessoal:

 

http://robinverton.de/

 

 

robinverton.de

Um serviço de request e response:

 

http://httpbin.org

 

 

httpbin

E assim por diante... se formos ver, temos inúmeros exemplos que sites e aplicações feitas em Flask. Faça uma busca no Github ou Bitbucket pra você ver...

O importante é termos um framework que agilize o trabalho, e não d? mais trabalho, o resto agente tem que utilizar nossa criatividade ou nosso amigo Designer !

 

 

Comentar

Introdução à programação em Cython

13 de Fevereiro de 2013

Quando o seu programa exige muita velocidade, não tem jeito, o código tem que ser escrito em C. Mas todo programador sabe o quão penoso pode ser programar em C e os diversos problemas que podem surgir no seu código contribuindo com o atraso na entrega do programa final. E porque não juntar a facilidade de programar em Python com a rapidez de execução de C? Essa é a proposta do Cython, uma extensão Python que permite que sejam utilizados tipos de C dentro do código Python. A instalação é simples e pode ser feita através do easy_install.


TUTORIAL


Para utilizar Cython em seu código, é preciso primeiro criar um arquivo com extenção .pyx. Para um primeiro teste crie um arquivo chamado helloworld.pyx e escreva a seguinte linha:

print "Hello World"
 
Em seguida, crie um arquivo chamado setup.py que tenha o seguinte conteúdo:
 
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

setup(
cmdclass = {'build_ext': build_ext},
ext_modules = [Extension("helloworld", ["helloworld.pyx"])]
)
 

Então, basta compilar utilizando o seguinte comando:

$ python setup.py build_ext --inplace

Depois é só entrar no interpretador e importar o módulo criado:

>>> import helloworld
Hello World

 

Vamos avançar e criar um código que realmente tenha tipos de dados de C. Vamos criar uma função que retorne todos os números primos de 1 até um limite passado como parâmetro e salvar num arquivo chamado primes.pyx:


def primes(int kmax):
cdef int n, k, i
cdef int p[1000]
result = []
if kmax > 1000:
kmax = 1000
k = 0
n = 2
while k < kmax:
i = 0
while i < k and n % p[i] != 0:
i = i + 1
if i == k:
p[k] = n
k = k + 1
result.append(n)
n = n + 1
return result
 

Para declarar tipos C, você deve usar cdef e informar o tipo de dado, como nas linhas 2 e 3. Na linha 3, como qualquer array em C, deve ser informado o tamanho do array.

Nas linha 9 e 11 é que aparece o ganho no desempenho, a iteração dos blocos while é feita com tipos C, que torna a execução mais rápida.

Feito isso, basta criar o arquivo setup.py, como no exemplo anterior:

 

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

setup(
cmdclass = {'build_ext'},
ext_modules = [Extension("primes", ["primes.pyx"])]
)
 

E compilar com o comando:

$ python setup.py build_ext --inplace

  • Tags:

Comentar

Mutirão Python pela PyCursos: 28 dias de aulões grátis!

06 de Fevereiro de 2013

Pessoal,

 

Desde o dia 1 de fevereiro estamos organizando o mutirão Python. Este evento que ocorre durante todo o mês de fevereiro promove 28 dias de aulas grátis sobre temas variados relacionados a Python.

 

Mutirão Python

 

Desde o  dia 01 já tivemos palestras relacionadas a jogos com Pygame, Visão Computacional, Machine Learning, Gráficos e tem muita coisa legal por vir.

 

Para participar não paga nada, pois é tudo gratuito! Basta apenas comparecer na hora marcada a cada dia e se juntar ao professor por meio de uma vídeo-aula direto do Hangout da Google.

 

Aproveitem para participar e fiquem antenados sobre a programação direto da nossa página do facebook http://facebook.com/pycursos  (basta curtir para receber as notícias)

 

Muitas novidades estão por vir,

 

Atenciosamente,

 

Equipe PyCursos

Comentar

Tutorial básico de NumPy

02 de Fevereiro de 2013

NumPy é um pacote de Python que  suporta operações com vetores e matrizes e é essencial para a computação científica com Python. O NumPy é baseado em C, portanto tem um desempenho superior se comparado às operações com vetores originais do Python. Neste post eu quero mostrar uma introdução básica ao NumPy para os iniciantes.

INSTALAÇÃO

Primeiro vamos instalar o NumPy. No Windows, basta baixar a última versão do numpy no site do SourceForge e instalar facilmente com o arquivo .exe. No Linux, instale o pacote "python-numpy" ou mesmo usando o easy_install numpy.

Pronto, agora é só abrir o console Python e importar o pacote:

>>> import numpy

 

CRIAÇÃO DE ARRAY

Para criar um array, é bem simples:

>>> a = np.array([0,1,2,3,4,5])
>>> a
array([0,1,2,3,4,5])

A função array do NumPy, recebe uma lista de Python e transforma em um array NumPy. Você pode checar o tipo:

>>> type(a)

E o tipo dos elementos:

>>> a.dtype

Para criar matrizes multidimensionais é bem simples também:

>>> a = np.array([[0,1,2,3], [4,5,6,7], [8,9,10,11]])

A função arange é bem parecida com a função range, só que retorna um array ao invés de uma lista:

>>> x = np.arange(11.)
array([  0.,  1.,  2., 3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])

É possível definir mais parâmetros pra função arange:

>>> x = np.arange(10, 30, 5) #(limite inferior, limite superior, passo)
array([10, 15, 20, 25])

TAMANHO DO ARRAY

A propriedade shape mostra o tamanho de cada dimensão da matriz:

>>> a.shape
(3,4)

É possível, também, modificar essa propriedade:

>>> a.shape = (2,6)
>>> a
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11]])
 
 

FUNÇÕES IMPORTANTES

A função sum soma todos os elementos do array:

>>> np.sum(a)
66

Podemos usar o parâmetro axis e determinar em qual eixo queremos a soma:

>>> np.sum(a, axis=0)
array([12, 15, 18, 21])
>>> np.sum(a, axis=1)
array([ 6, 22, 38])

Alternativamente, podemos usar o método sum:

>>> a.sum()
66
>>> a.sum(axis=0)
array([12, 15, 18, 21])

As funções amin e amax retornam o valor mínimo e o valor máximo do array, respectivamente:

>>> b = np.array([3.4, 5., 33., 8.])
>>> np.amin(b)
3.4
>>> np.amax(b)
33.0

argmin e argmax retornam o índice do menor valor e do maior valor do array, respectivamente:

>>> b.argmax()
2
>>> b.argmin()
0

O atributo flat retorna um iterator que permite acessar elementos de um array multidimensional como se ele fosse uma lista:

>>> a = np.array([[0,1,2,3], [4,5,6,7], [8,9,10,11]])
>>> a.flat
<numpy.flatiter object... >
>>> a.flat[:]
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
 

Bom pessoal, esta foi uma demonstração básica do que pode ser feito com o NumPy. Existem diversas outras características e funções que podem ser exploradas e são minuciosamente estudadas em nossos cursos.

Comentar

Flask – Este framework é para grandes aplicações também ?

20 de Janeiro de 2013

O Flask é um microframework para desenvolvimento web criado em Python. Ele é singular em suas features pois é um framework magrinho, leve, porém é mantido em uma base sólida que nos permite criar grandes aplicações e também adicionar novas features padronizadas e funcionais no seu escopo.

O Flask é basicamente a união de duas grandes ferramentas: Werkzeug e Jinja2, respectivamente seu WSGI toolkit e seu motor de templates. Com isto conseguimos fazer inúmeros tipos de aplicações. Para mim é um grande framework, pois, além de nos permitir fazer muita coisa, nos dá uma grande “liberdade organizada”. Para fazer uma aplicação mais enxuta, leve e rápida o Flask é a ferramenta ideal, com ele facilmente teremos uma aplicação web rodando e não somente com um Hello World, mas com acesso a banco de dados, segurança nos formulários, e até mesmo uma api RESTfull se quisermos. Sua documentação é muito rica e bem organizada.

Ok, tudo muito bonito, muito fácil leve e simples, mas e se eu quiser fazer uma grande aplicação, com segurança, muitos módulos, muitos acessos a banco, muitos usuários, como faço isto com o Flask ? Eu posso fazer isto com o Flask ? SIM ! Como disse antes o flask é nos permite uma liberade bem grande, porém para se ter uma aplicação com imenso número de acessos e uma boa resposta para cada um dos usuário não depende somente da aplicação, porém quando a questão de organização da nossa app, pode deixar que o flask fará o melhor possível.

Para se montar grandes aplicações com Flask, existem duas grandes dicas que são encontradas na própria docunentação do Flask na web, que são:

  1. Utilize packages python ao invés dos módulos como fazemos normalmente nas apps Flask, ou seja não criem seus métodos e classes em arquivos, mas sim em diretórios com o arquivo “__init__.py”. Isto permite que tenhamos uma organização muito mais visualmente agradável para os mantenedores do projeto e até para nós mesmos.

Veja a diferença em uma aplicação :

/yourapplication
/yourapplication.py
/static
/style.css
/templates
layout.html

e

/yourapplication
/yourapplication
/__init__.py
/static
/style.css
/templates
layout.html

Não parece muito diferente né, porém ao longo do tempo, quando sua aplicação for crescendo você vai ver que foi bom manter este padrão.

  1. Crie e utilize os Blueprints do Flask, este recurso do framework permite que tenhamos módulos no nosso sistema, e permite a utilização de todos os recursos normalmente da aplicação dentro dos módulos, como as rotas por exemplo: podemos ter rotas diferentes para cada módulo (blueprint) da app e dentro dos módulos cada um com suas rotas. Aliás, estes blueprints eu apresento-os no curso de Introdução do Flask que dou no PyCursos.

 

A conclusão é que o Flask é um grande framework, que nos permite fazer de pequenas a imensas aplicações, desde que tenhamos uma certa organização e sigamos seus padrões de programação. Fora que é feito em Python, uma linguagem de altíssimo nível, que nos deixa focados somente no problema a resolver e não em como resolver os nossos problemas programaticamente. Eu tenho utilizado o flask para muitos projetos e aplicações que estou criando e logo logo disponibilizarei um pequeno projeto em Flask que já conterá um formato bem legível e alguns dos plugins mais utilizados e úteis para a maioria das apps. Fiquem ligados.

Post orignal de http://pythonrs.org

Comentar

2012 PyCursos - Python aplicado na teoria e prática