IDE para Python – Pycharm + Temas de cores extras.

Para desenvolvimento em Python eu utilizo o ide PyCharm, ele é realmente bem inteligente e a integração com controle de versão funciona muito bem. A interface pode ser amplamente configurada sendo que pode-se retirar todas as janelas e botões, ficando bem minimalista, com foco apenas no código. Ou pode-se mostrar arvores e estruturas criando um ambiente para gerenciamento da estrutura do projeto. É possível inclusive utilizar o esquema de comandos do Vim.

Totalmente voltado para o Python, o PyCharm possui muitas ferramentas de integração com bibliotecas ou frameworks de uso comum, como o Django, Flask, Unittest, Sphinx, além de outros. 

Além de tudo ainda faz deploy via sftp com um click, muito prático.

A versão grátis limita-se ao Python para projetos Open Source e a versão licenciada custa USD $99 (USD $59 a renovação) e integra outras linguagens.

Segue um link com mais alguns temas de cores para personalizar o PyCharm. Eu pessoalmente gosto dos temas escuros, como o Darkula (incluído por padrão) ou SpaceCadet, Sunburst, Twilight (presentes no link).

 Image

Novas funções nas câmeras Canon com o CHDK

As maquinas fotográficas Canon possuem muitas funções escondidas.

Sabe aqueles vídeos de construção onde onde o tempo é comprimido e tudo a acontece muito rápido? Como este aqui: http://www.youtube.com/watch?v=4qrtABVwRRA

Ou fotos noturnas de longa exposição, como esta: 

Estes efeitos e muitos outros são possíveis de obter com as câmeras Canon comuns, mesmo as antigas.

O segredo para tal é substituir o firmware, o software interno da câmera, por um novo firmware chamado de CHDK.

Resumidamente, baixa-se o firmware compatível com a sua câmera, grava ele em um cartão SD, liga o “lock” do cartão (aquela pequena chavinha no lado do cartão) e coloca na câmera. Para reverter o processo, basta limpar o cartão ou desligar o “lock”.

Além dos efeitos, o CHDK ainda permite programar a câmera com scripts e também dispara-la por um sinal na porta usb.

O processo detalhado e todas as funções etão descritos aqui: http://chdk.wikia.com/wiki/CHDK_User_Manual

Otimizando o Python: Cython

Otimizar um programa é fazer com que este programa ou algumas de suas funções rode mais rápido.Uma regra básica é que quanto menor o nível da linguagem de programação (quanto mais perto da linguagem de máquina) maior a possibilidade de otimização.

python

A linguagem Python é famosa por ser uma linguagem de alto nível e de alta produtividade por facilitar a vida do programador. A linguagem C é famosa por ser uma linguagem de baixo nível extremamente eficiente em termos computacionais.

Uma forma comum de otimizar o código Python fazer com que ele execute módulos escritos em C, a biblioteca padrão do Python vem com uma porção de módulos que funcionam assim, por exemplo o itertools. Algumas bibliotecas externas também usam este recurso para maior eficiência, o Numpy é um ótimo exemplo, ele é extremamente eficiente.

Para o usuário é possível escrever suas próprias extensões em C que podem ser chamadas diretamente pelo código Python, contudo isto requer o conhecimento avançado de C.

A biblioteca Cython elimina esta dificuldade, com ela é possivel escrever extensões em Python que são convertidas para uma forma mais eficiente em C, são compiladas e podem ser chamadas como módulos com o comando import.

Abaixo segue um exemplo onde a concatenação de duas strings é repetida 70 milhões de vezes, esta operação é realizada primeiro em Python e depois em um  módulo convertido para C, sobre como usar o Cython, consultar a documentação.

import cProfile
import pyximport
pyximport.install()
import Cythonteste

def juntar_texto(texto1, texto2):
    for i in range(70000000):
        texto_final = texto1+texto2

print "Normal: ----------------------------------------------------"
cProfile.run("juntar_texto('Feliz ', '2013')")
print "Cython: ----------------------------------------------------"
cProfile.run("Cythonteste.juntar_texto('Feliz ', '2013')")

O módulo Cythonteste consiste de um arquivo com exatamente a mesma função juntar_texto, ele é convertido e compilado automaticamente pelo módulo pyximport.
Para medir o tempo de execução é utilizado o cProfile. Veja o resultado, são gastos 8.51 segundos no Python contra 2.35 segundo no código compilado para rodar a mesma função.

Normal: ----------------------------------------------------
4 function calls in 8.509 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
 1 0.000 0.000 8.509 8.509 <string>:1(<module>)
 1 6.053 6.053 8.509 8.509 teste_comparativo.py:6(juntar_texto)
 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
 1 2.456 2.456 2.456 2.456 {range}

Cython: ----------------------------------------------------
 3 function calls in 2.352 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
 1 0.000 0.000 2.352 2.352 <string>:1(<module>)
 1 2.352 2.352 2.352 2.352 {Cythonteste.juntar_texto}
 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}

O Cython possui ainda outros recursos que este simples exemplo não aborda, vale a pena dar uma no site.

Material Qgis e Geoprocessamento

Esta pergunta no GisStackexchange gerou uma boa coleção de material sobre o Qgis, estou compilando uma lista com os links aqui:

http://qgis.org/en/documentation/manuals.html

http://maps.cga.harvard.edu/qgis/

http://www.baruch.cuny.edu/geoportal/practicum/gis_prac_intro.html

http://www.surfaces.co.il/wp-content/uploads/2010/11/Exercises.pdf

http://www.surfaces.co.il/?p=872

http://mundogeo.com/webinar/osgeo/osgeo-pablo.pdf 

Drive Time Isochrones – An Example Using Finnish Airports (via Free and Open Source GIS Ramblings)

Drive Time Isochrones - An Example Using Finnish Airports Site analyses can benefit greatly from using "drive-time" isochrones to define the study area. Drive time isochrones are often significantly different from simple buffer areas which disregard natural barriers such as rivers or slow roads. Of course, creating drive time isochrones requires more input data and more compute-intensive algorithms than a simple buffer analysis. It is necessary to create a routable network graph with adequate weights to … Read More

via Free and Open Source GIS Ramblings

An Introduction to Time Manager for QGIS (via Free and Open Source GIS Ramblings)

Este Plugin para QGIS permite a visualização em forma de animação de dados com atributos temporais, vale a pena conferir, funciona muito bem.

An Introduction to Time Manager for QGIS Analyzing spatio-temporal data using a GIS can be a tedious task without the correct tools. A series of techniques has been developed to visualize spatio-temporal data. These techniques can be divided into two classes: static visualizations and dynamic animations. In static maps, temporal change can be visualized using appropriate different symbology or annotations. Another option is to create map series with one map for every time frame of inter … Read More

via Free and Open Source GIS Ramblings

Printing Map Part I: Map design with QGIS (via MikeOnGIS)

Post mostrando como fazer um ótimo design no QGIS.

Printing Map Part I: Map design with QGIS I had a task to print the whole map in various zoom levels. Solved few problems while I was on it and would like to share them with you.  First thing to do was build a nice looking map. Quite a while ago, on GIS.StackExchange I've posted a question about beautiful maps with Qgis.  There was only one answer, and while it had some very useful information, it seems there is no step by step guide with useful tips and tricks. The result I've got has b … Read More

via MikeOnGIS