Algumas novidades do Mageia 4

E o Mageia chega ao seu quarto release estável!

Entre as novidades temos o MageiaWelcome – um aplicativo que executa na inicialização da distro e dá dicas sobre instalação de pacotes adicionais e canais de suporte do Mageia; a disponibilização dos ambientes gráficos Mate e Cinnamon; o port das ferramentas drak para GTK+ 3; a possibilidade de criar pen drives bootáveis através de uma nova ferramenta chamada isodumper; bash-completion instalado por default; a adoção do novo esquema de nomes para interfaces de rede; e mais.

Também temos versões mais modernas de softwares como KDE (4.11.4), GNOME (3.10.2.1), LXDE, XFCE (4.10), Razor-QT, Libre Office (4.1.3.2), RPM (4.11.1), systemd 208, e outros. O GRUB ainda é usado por padrão, mas o GRUB 2 está disponível também. O kernel entregue é o 3.12.8.

Além das novidades listadas temos a atualização de diversos pacotes e a disponibilização de novos. Você pode ver neste quadro uma comparação entre os pacotes do Mageia 3 e Mageia 4.

Especificamente pro pessoal do Python, essa versão do Mageia adicionou o suporte a PythonByteCompiling.

E sobre os pacotes que mantenho na distro, tenho algumas novidades: o pacote abntex2 foi incluído no texlive; os pacotes swi-prolog agora seguem a convenção de nomes de pacotes crossdistro do projeto; disponibilizei 3 lançadores full-screen para o KDE (a saber: plasma-applet-homerun, plasma-applet-simplewelcome e plasma-applet-takeoff); o tema Caledonia, surgido no Chakra Linux, agora pode ser instalado no Mageia (plasma-desktoptheme-caledonia e plasma-desktoptheme-caledonia-wallpapers); temos um cliente para pump.io chamado Dianara; um aplicativo para conversas privativas, Retroshare; um aplicativo para escrita de textos voltado a escritores, Plume-Creator; e mais. Ao todo estou mantendo 13 pacotes, um acréscimo interessante comparado aos 2 disponibilizados no Mageia 3.

Qualquer dúvida ou necessidade de suporte em português, procure a comunidade Mageia do Brasil e ajude o Mageia a ser cada vez melhor.

Leia mais detalhes sobre esse lançamento, bem como instalação e atualização via Mageia 3, na nota oficial traduzida.

Cantor: tour pelas funcionalidades do backend para Python 2

Introdução

python2_selectTela de seleção de backends do Cantor

Em 2013 desenvolvi um backend para Python 2 no Cantor, um projeto financiado em parte pelo Google Summer of Code. Agora este backend está presente na versão do Cantor lançado com o KDE 4.12.

Cantor é um software para programação científica/matemática do KDE que serve como frontend para diferentes engines matemáticas, entregando um ambiente que reúne facilidades típicas de uma IDE (como destaque de sintaxe, tab-complete, gerenciamento de variáveis, etc) e um terminal avançado. Cantor tem uma arquitetura modular que permite ao desenvolvedor escrever o suporte para diferentes engines matemáticas como backends. Atualmente, Cantor suporta Octave, Sage, Maxima, Kalgebra, Qualculate, R, Scilab (este também desenvolvido por mim) e, em sua versão mais recente, Python 2.

Neste post faremos uma “tour” pelas funcionalidades presentes nesta primeira versão do backend para Python 2.

Tela Inicial – Destaque de Sintaxe e Tab Complete

python2_initialscreenTela inicial do Cantor

Após selecionar o backend Python 2, o Cantor mostrará a tela inicial. Basicamente ela dispõe de uma grande tela que serve como o terminal do Python 2, e dois painéis – um para mostrar saídas de ajuda e outro para o gerenciamento de variáveis.

Vamos entrar com alguns comandos básicos no terminal para vermos como ficará a tela da aplicação:

python2_syntaxDestaque de sintaxe

Percebam que o Cantor está destacando a sintaxe do Python 2 e, no painel ao lado, é possível ver as variáveis produzidas durante a interação com o terminal. Voltaremos a este painel em outra seção.

Agora vamos criar novas variáveis com nomes parecidos e testar o tab complete. Veja a figura abaixo:

python2_completeTab complete para variáveis

Após criarmos as variáveis variable_x, variable_y e variable_var, escrevemos até var e teclamos tab duas vezes – Cantor apresentará as variáveis ou funções compatíveis com aquele início de nome. O tab complete também funciona para funções de módulos, como pode ser visto na próxima imagem.

python2_complete2Tab complete para funções de módulos

Cantor também trata erros no terminal. A próxima figura apresenta a mensagem de erro durante um import incorreto.

python2_errorMensagem de erro

Também é possível salvar o estado do terminal ou apenas os comandos e suas respectivas saídas em um arquivo externo. Cantor também permite enviar/baixar um exemplo do terminal para um servidor remoto. Explore estas funcionalidades na aba “Arquivo“.

Painel de Ajuda

Cantor exibe a ajuda do Python, obtida a partir do comando help, em um dos painéis laterais da interface. A figura abaixo apresenta a saída de ajuda para a função complex:

python2_helpPainel de ajuda

Como Cantor usa tecnologias Qt/KDE, é possível deslocar os paineis laterais e mudar o formato da tela. Abaixo temos um exemplo onde o painel de ajuda está na direita do terminal enquanto o gerenciador de variáveis está na esquerda.

python2_help_completePainéis de cada lado da tela

Gerenciamento de Variáveis

python2_variablesPainel de gerenciamento de variáveis

Além de ter a clara função de apresentar as variáveis e seus respectivos valores, o painel de gerenciamento de variáveis permite algumas operações adicionais através dos botões na parte inferior do widget. São eles, da esquerda para a direita: Adicionar uma nova variável, Carregar variáveis, Armazenar variáveis, e Limpar variáveis.

Adicionar uma nova variável é uma funcionalidade simples que exibe um pop-up e permite a criação de uma variável.

Carregar variáveis e Armazenar variáveis fazem uso do módulo shelve para persistir os dados do ambiente de execução do Python. Quando os botões são clicados, Cantor carrega scripts que irão, no primeiro caso, ler um arquivo e carregar as variáveis no ambiente e, no segundo, varrer o dicionário global do python salvando as variáveis em um arquivo. Vale comentar que, como utiliza-se o shelve, estamos sujeitos às restrições desse módulo – por exemplo, não é possível salvar variáveis que referenciam módulos importados. As figuras abaixo apresentam as operações descritas.

python2_save_variablesSalvando variáveis

python2_load_variablesCarregando variáveis

Entre a operação de armazenamento e de carregamento das variáveis, utilizamos Limpar variáveis para apagar todas as variáveis do ambiente. O código varre o dicionário global e vai deletando variável por variável. O código carregado pelo Cantor é o seguinte:

python_backend_variable_management_usecase6Gráficos no Cantor

python_command_to_plotCódigo para criação de um gráfico usando matplotlib

python_plot_resultGráfico carregado no ambiente do Cantor

As figuras anteriores apresentam o carregamento de um gráfico no ambiente do Cantor. Quando a planilha é exportada, o gráfico estará lá também. Essa funcionalidade pode ser modificada para a criação do gráfico numa janela separada – que é o comportamento default do backend.

Conclusão e Futuro

Essa é a primeira versão estável do suporte para Python 2, e apesar do básico estar funcionando muito bem, é possível que alguns erros e bugs estejam espalhados pelo sistema.

Gostaria era de ouvir feedbacks da comunidade Python de programação científica/matemática. Eu não sou um pythonista, então conto com a ajuda de vocês para caçar bugs, relatar comportamentos estranhos, e sugerir melhorias e funcionalidades.

Para a próxima versão teremos o suporte ao editor de scripts, que infelizmente não foi possível entregar neste lançamento.

Cantor é uma das muitas iniciativas das comunidades de software livre que visa entregar uma solução de qualidade para programação científica/matemática. Espero que a comunidade Python se aproprie dessa ferramenta e ajude no seu desenvolvimento e evolução.

Para os interessados nos bastidores do backend, há uma série de posts em português e inglês onde descrevo o processo de desenvolvimento da ferramenta. E para quem quiser colocar a mão na massa, basta clonar o repositório do Cantor – cujo código está disponível sob a GPLv2.

E quaisquer dúvidas ou feedbacks, postem aí nos comentários ou mandem e-mail para filipe em kde.org.

Olá Planeta PythonBrasil

Olá comunidade pythonística brasileira,

Sou Filipe Saraiva e não sou um desenvolvedor python (ainda estou aprendendo esta linguagem), mas sou um desenvolvedor C++ e KDE.

Recentemente desenvolvi um backend para Python 2 no Cantor, o software matemático do KDE que serve como frontend para diversos motores de programação científica (octave, sage, kalgebra, scilab, entre outros). Este backend foi lançado com o KDE 4.12 e agora está disponível para todos.

Eu gostaria de ouvir alguns feedbacks da comunidade python, em especial daqueles que desenvolvem aplicações científicas, sobre melhorias para o backend. Eu pretendo desenvolver backends para Python 3 e iPython também, no futuro próximo.

Logo mais escreverei um “tour post” sobre as funcionalidades do backend para Python 2, mas se você quiser você pode dar uma olhada nos posts sobre o desenvolvimento do backend a partir da tag python-backend (posts em inglês e português brasileiro).

Cantor – palavras-chave dinâmicas no python backend

No post anterior, eu mencionei sobre palavras-chave dinâmicas no python backend. A ideia é que, após importar um módulo python na área de trabalho do Cantor, funções, palavras-chave, variáveis e mais deste módulo são carredados no Cantor e disponibilizados para o destaque de sintaxe e tab complete.

Esta funcionalidade já está implementada e você pode testá-la compilando o Cantor do branch python-backend.

Mas vamos antes ver mais algumas informações sobre esta funcionalidade.

Existem várias maneiras de importar um módulo python no console python. Você pode usar “import modulename”, “import modulename as modulevariable”, “from modulename import *”, “from modulename import function_1, function_2, …”, e mais. Cada maneira de fazer um import provoca diferentes consequências na experiência do usuário.

As quatro maneiras de realizar um import mencionadas anteriormente são suportadas pelo python backend. Veremos agora como esses diferentes imports se comportam e como o python backend reage a cada um deles.

import modulename

A maneira mais básica e simples de fazer um import. Após este comando, uma variável chamada “modulename” é definida e as funções e mais palavras-chave do módulo são disponibilizadas através de “modulename.keyword”.

python_import_modulenameTab Complete

python_import_modulename_highlighting

Destaque de Sintaxe

import modulename as modulevariable

Nesta forma o usuário define uma variável “modulevariable” para referenciar o “modulename”, e “modulename” não é definido. Portanto, você pode acessar as funções e mais palavras-chave do “modulename” usando “modulevariable.keyword”.

python_import_modulename_as_modulevariable

Tab Complete

python_import_modulename_as_modulevariable_highlithing

Destaque de Sintaxe

from modulename import *

Nesta forma o usuário importa todas as funções e palavras-chave do “modulename”, mas nenhuma variável é definida para acessar o “modulename”. As funções do módulo são acessadas diretamente.

python_from_modulename_import_all

Tab Complete

python_from_modulename_import_all_highlithing

Destaque de Sintaxe

from modulename import function_1, function_2, …

O usuário importa apenas funções específicas do “modulename”, e não todas as funções.

python_from_modulename_import_specific

Tab Complete

python_from_modulename_import_specific_highlithing

Destaque de Sintaxe

Cantor plugin

Eu também desenvolvi um plugin para importar módulos no Cantor. Este plugin abre uma janela de diálogo para o usuário entrar com o módulo e, após apertar o Ok, Cantor executará um “import modulename” e as palavras-chave estarão disponíveis. O diálogo é acessado via o menu “Packaging”, na barra de menu.

python_import_cantor_plugin

Plugin de import no Cantor

Identificando erros

O backend pode identificar vários tipos de erros durante o import.

python_import_errors

Identificando erros no import

Conclusões

A funcionalidade está desenvolvida e madura para uso, entretanto, ela não suporta todas a maneiras de realizar um import em python. Entretanto, imagino que estas cinco maneiras de realizar o import representam as formas mais comuns utilizadas por desenvolvedores python com foco em softwares científicos.

O importante é que esta funcionalidade permite ao python backend suportar os mais variados tipos de módulos python, e não somente scipy, numpy, and matplotlib, como eu havia proposto no início desse projeto.

Agora, deixe-me saber como você importa módulos no python. Eu desenvolverei o suporte para novas formas de import em futuras versões do backend.

Por enquanto, espere por mais novidades deste projeto logo mais!

Lançado o KDE 4.11

Foi lançado há alguns dias o KDE 4.11, apresentando uma série de novidades.

Na área de trabalho (Plasma) temos mais elementos portados para QtQuick, novas funcionalidades para o monitor de bateria, kmix, e área de notificações, além da adoção por padrão do KScreen. O kwin recebeu mais efeitos, foi portado para tecnologias OpenGL mais modernas, e a partir desta versão trás suporte experimental ao Wayland.

Nas aplicações destacam-se melhorias e adições de novas funcionalidades no Kontact, KMail, Blogilo, Okular e outros, adição de plugins para desenvolvimento em python no Kate, suporte a WebP no Kolourpaint, suporte a Ogg Opus no Juk, e mais.

Na plataforma KDE, melhorias e correções de bugs na kdelibs e grandes otimizações no Nepomuk, que agora indexa os arquivos numa velocidade 6 vezes mais rápida que em sua versão anterior, além de conseguir indexar aqruivos ODF e DOCX.

A partir desta versão, a área de trabalho entrará em freeze e só receberá correções de bugs e pequenas melhorias. Os desenvolvedores dessa parte do KDE estarão focados no chamado Plasma 2, que usará o KDE Frameworks 5. O desenvolvimento de novas funcionalidades se dará neste projeto.

Leia mais detalhes sobre o KDE 4.11 no link com as notas de lançamento em português -> http://kde.org/announcements/4.11/index.php?site_locale=pt

Backend Python para Cantor – Destaque de Sintaxe, Tab Complete, e Modo Interactive

Meu projeto no Google Summer of Code 2013, o desenvolvimento de um backend para python no Cantor, atingiu alguns objetivos nas últimas semanas.

Primeiramente eu desenvolvi a versão preliminar para as funcionalidades de destaque de sintaxe e tab complete. Esta etapa utilizou processamento de arquivos XML para prover um conjunto básico de palavras-chave e funções predefinidas para aquelas funcionalidades. Para ativar o tab complete, basta pressionar o botão Tav após ter digitado alguma letra ou conjunto de letras. Abaixo temos alguns screenshots destas funcionalidades (clique com o botão direito do mouse para ampliar as imagens):

python_syntax_highlighting

Um simples destaque de sintaxe

python_backend

Mais destaque de sintaxe e tab complete

Em seguida, a versão inicial do backend desenvolvido durante o LaKademy foi criada para dar suporte ao modo de script do python. Mas seria mais interessante dar suporte ao modo interactive no terminal do Cantor. Então, para fazer isso, eu implementei um pré-processamento nos códigos do python que o usuário insere no Cantor antes de enviá-los ao interpretador python, adicionando alguns comandos para simular o modo interactive do python.

Esta solução utiliza o PyRun_SimpleString da API python/C para processar os comandos python em modo de script. Existem outras funções da API python/C para processar os comandos python diretamente em modo interactive, por exemplo, PyRun_InteractiveOne, mas esta função requer que os comandos python a serem processados estejam em um arquivo, além do que acessar a saída desse processamento é algo bastante difícil. Então, para o momento,  PyRun_SimpleString + pré-processamento dos comandos é uma solução que está funcionando muito bem.

Você pode ver nas screenshots que ilustram este post que as variáveis e resultados de operações apresentados na tela do Cantor não usam o comando print. Esta é uma das características do modo interactive do python:

python_backend_aninhado1Mais exemplos de destaque de sintaxe e interactive mode

python_backend_aninhado2

Mais exemplos de destaque de sintaxe e interactive mode

Agora eu estou desenvolvendo uma funcionalidade para listar todas as funções predefinidas e palavras-chave de um módulo python específico que tenha sido importado durante a execução do programa. Para tanto, eu estou usando o comando dir do python para capturar esses dados. Esta funcionalidade proverá estas palavras para o destaque de sintaxe e o tab complete, de uma forma dinâmica. Assim, o backend para python dará suporte a qualquer módulo python, e não mais apenas ao scipy, numpy, e matplotlib.

O backend para python está disponível no branch python-backend no repositório do Cantor. Fique a vontade para testá-lo, mas lembre-se que o código não está estável e finalizado no momento.

Cantor + Python no Google Summer of Code 2013

Esse ano tive a felicidade de ter um projeto aceito no Google Summer of Code. É a segunda vez que participo do programa, e a possibilidade de receber uma bolsa para bancar minha contribuição ao software livre, que já faço de graça há vários anos, muito me alegra.

Neste ano estou de volta ao Cantor, software que serve como IDE e frontend para diversos softwares matemáticos. Em 2011 desenvolvi o backend para o Scilab, bancado pelo Google durante o Google Summer of Code. Meu mentor foi Sylvestre Ledru, do time Scilab.

Desta vez meu projeto, orientado pelo Alexander Rieder do KDE, trata de dar um melhor acabamento e esmero ao backend para programação científica em python, utilizando as bibliotecas scipy, numpy e matplotlib, que comecei a desenvolver no último (e até agora único) LaKademy. Este backend já tem a funcionalidade de comunicação entre Cantor e python implementada, então já é possível programar em python utilizando o Cantor. Faltam agora as funcionalidades mais voltadas para prover facilidades na IDE, como destaque de sintaxe e tab-complete.

Existem algumas ideias para a implementação que vão desde o uso de arquivos XML (como implementados no Scilab) até a utilização da tecnologia que o pessoal do Kdevelop emprega. Estou pesquisando qual a que devo implementar.

Aguardem mais atualizações sobre este projeto, e sigam a tag gsoc2013-python-backend.