Filipe Saraiva's blog

Tecnologia, sociedade e política.

Archive for the ‘planetkde-portugues’ tag

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

with one comment

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

with 2 comments

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.

Eu sou um Mago!

without comments

Bem, na verdade é só uma expressão. =D

Dia 27 de maio de 2013 me tornei oficialmente um empacotador no Mageia, distro Linux baseada no Mandriva. A data marca a criação de uma conta com acesso ao repositório dos pacotes e ao build system da distro para mim.

Comecei a contribuir com o Mageia desde os primeiros dias do projeto, traduzindo o manifesto para português. Desde então ajudei em fóruns, IRC, listas de discussão, consegui mirrors de alta disponibilidade no Brasil, divulguei matérias nos portais de notícia de software livre no país, e fiz mais trabalhos de promoção. Entretanto, eu queria disponibilizar software pro Mageia, pois esse é um trabalho bastante técnico que sempre tem demanda e nem todos podem contribuir.

Para me tornar empacotador tive que participar de um programa de tutoria onde fui orientado pelo amigo português José Jorge, ou zezinho para os íntimos. Aprendi muito com ele sobre a arte de criar pacotes RPM. Obrigado zezinho!

Apesar de só ter conseguido a conta agora, os pacotes que fiz já estão disponíveis no Mageia 3, lançado há poucos dias. Estou empacotando o SWI-Prolog e o abnTeX2, e pretendo continuar a manter mais softwares de cunho científico e algumas coisinhas do KDE, como temas e plasma applets. E bem, talvez algumas coisas que gosto/uso, como o jogo Cave Story, e o gerenciador de backups WBFS, Wiithon.

Fica então meu relato e uma espécie de convite: se você tem proximidade com a área técnica de desenvolvimento de software, considere seriamente a possibilidade de contribuir para alguma comunidade de software livre nessa área. Assim você auxilia diretamente na qualidade e melhoria do produto, trabalhando em uma área bastante crítica e específica, onde nem todos podem contribuir.

Written by Filipe Saraiva

May 29th, 2013 at 12:52 pm

Mageia 3 saiu do caldeirão

without comments

E na noite do dia 18 de maio diversos magos, feiticeiros, bruxas e fadas tiraram do caldeirão colaborativo onde todos mexem a colher a nova versão estável da distribuição Mageia, agora em sua terceira encarnação.

Mageia é uma distro comunitária criada a partir de um fork do Mandriva. Essa versão conta com boas novidades, com softwares em suas versões mais recentes: KDE 4.10.2, GNOME 3.6, XFCE 4.10, Linux 3.8, systemd 195, rpm 4.11, LibreOffice 4.0.3, e mais.

O lançamento é dedicado à memória de Eugeni Dodonov, que foi gerente de desenvolvimento do Mandriva e teve contribuições significativas para o software livre em geral. Em seus últimos trabalhos, Dodonov estava alocado na Intel desenvolvendo uma melhor integração entre as placas gráficas da empresa e o kernel Linux. Dodonov nos deixou muito cedo, fazendo parte da triste estatística dos ciclistas que perderam a vida em acidentes automobilísticos. A fatalidade ocorreu nos arredores da cidade de São Carlos, em 2012.

Este lançamento também é especial para mim pois os primeiros pacotes que comecei a manter no Mageia agora estão disponíveis para o público na versão estável. Estou empacotando o SWI-Prolog e o abnTeX2, e pretendo continuar a manter mais softwares de cunho científico e algumas coisinhas do KDE tipo temas e plasma applets. E bem, talvez o Cave Story, porque ali é um belo jogo que todos merecem conhecer! =)

As notas de lançamento podem ser conferidas em português ou inglês. Lá também é possível encontrar links para download e como atualizar o Mageia 2 para esta nova versão.

Written by Filipe Saraiva

May 19th, 2013 at 8:52 pm

Baixando dependências de compilação de pacotes SRPM via urpmi

without comments

Como usuário Mageia e contribuidor de um pequeno conjunto de softwares livres, sempre injevei as distribuições que disponibilizavam comandos específicos para baixar os requisitos de compilação de determinados pacotes. Por exemplo, na distro Debian e suas crias temos o apt-get build-dep; no OpenSUSE há o zypper si -d; no Fedora existe o yum-builddep; e por aí vai.

Mas a verdade é que distribuições baseadas no Mandriva, que utilizam o urpmi como gerenciador de pacotes, também dispõem de um comando com essa finalidade. A diferença é que, neste caso, você precisa apontar para o pacote SRPM do software que quer baixar as dependências. E esse pacote pode estar em um repositório remoto.

O comando é:

urpmi –buildrequires <package.src.rpm>

Lembre-se que são dois hífens na opção buildrequires. Substitua <package.src.rpm> pelo endereço do pacote src.rpm que você quer baixar as dependências. Por exemplo, para baixar as dependências do LibreOffice faça:

urpmi –buildrequires ftp://mageia.c3sl.ufpr.br/mageia/distrib/cauldron/SRPMS/core/release/libreoffice-4.0.2.2-4.mga3.src.rpm

Para navegar nos pactes SRPM você deve visitar o repositório de sua distro e pegar o nome completo do pacote por lá. Por exemplo, para a distro Mageia há um repositório Tier 1 no C3SL, na página http://mageia.c3sl.ufpr.br/mageia/distrib/cauldron/SRPMS/.

Seria legal que páginas de compilação de softwares mostrassem essa alternativa de download de requisitos, pois há um número considerável de distros que utilizam urpmi, por exemplo Mandriva, Mageia, PCLinuxOS, ROSA, Unity-Linux e outros. De qualquer forma, fica a dica para os desenvolvedores que trabalham com essas distros.

Written by Filipe Saraiva

May 5th, 2013 at 2:57 pm

Air cursor com Qt e Kinect

with one comment

Já faz alguns meses que a Nemein desenvolveu uma biblioteca para utilizar os sinais enviados pelo Kinect como dispositivo de entrada em aplicações Qt. O vídeo acima apresenta o funcionamento de um cursor de mouse utilizando esta tecnologia.

O projeto, chamado Qt AirCursor e disponibilizado sob a licença LGPL,  está no github da empresa.

Mais informações sobre a comunidade de desenvolvedores que está libertando o Kinect do X-Box e levando-o para várias outras plataformas podem ser obtidas no site OpenKinect.

Written by Filipe Saraiva

April 20th, 2013 at 1:46 pm

KDE 4.10 Release Party em São Carlos

without comments

Desde o lançamento do KDE 4.7 organizamos release parties em São Carlos, interior de São Paulo. E agora, com o lançamento do 4.10, a tradição continua!

A festa de lançamento ocorrerá no dia 20 de fevereiro às 19:30h no bar GIG.

Apareça lá para conversarmos sobre o KDE e sobre as comunidades de software livre em geral, sobre a cena da comunidade em São Carlos, conhecer pessoas e, claro, beber umas! =)

Maiores informações sobre a release party estão neste link.

E não esqueça de ler as novidades do KDE 4.10 nas notas de lançamento.

Written by Filipe Saraiva

February 20th, 2013 at 4:23 pm