O PSL-PI tem por objetivo incentivar o uso e a produção de software livre no Piauí como política de combate à exclusão digital. Acreditamos que a distribuição de conhecimentos proporcionada pelo Open Source/Software Livre tornará nossa sociedade mais justa e próspera, exatamente por dar a todos as mesmas condições de conhecimento e desenvolvimento.
Software Livre é uma grande oportunidade de construirmos uma sociedade produtora de ciência, independente e efetivamente competitiva. Estamos reconstruindo as bases da nossa sociedade, não mais calcados nos braços do Estado, mas sim, amparados pela iniciativa própria, pela auto-determinação. Nós somos capazes de nos auto-governar. Somos capazes de construir uma sociedade efetivamente Livre. Esta é a essência do PSL-PI.
O PSL-PI é formado pela articulação de indivíduos que atuam em instituições publicas e privadas, grupos de usuários e desenvolvedores de software livre, empresas, governos ou ONGs, e demais setores da sociedade. O importante é a consciência e disposição para propagar o uso de software livre e a cultura colaborativa nas diferentes esferas da sociedade.
Filipe Saraiva: Anunciada a Open Source Robotics Foundation
17 de Abril de 2012, 0:00 - sem comentários aindaWillow Garage, conhecido laboratório de pesquisas e desenvolvimento em robótica, mantenedores do ROS, anunciou o lançamento da OSRF – Open Source Robotics Foundation.
Os objetivos da fundação são dar suporte ao desenvolvimento, distribuição e adoção de software open source para uso em pesquisas de robótica, educação e desenvolvimento de produtos.
Maiores detalhes ainda serão revelados, incluindo demais participantes da entidade, modelo de governança e mais. Entretanto, a OSRF já inicia apoio aos dois principais projetos mantidos pela Willow Garage, a plataforma ROS e o simulador Gazebo. Outros projetos também serão alvo de ações da fundação, como a conhecida plataforma open hardware Arduino e a comunidade de projetistas Make.
Vamos acompanhar mais essa iniciativa da comunidade de robótica livre, e torcer para que a filosofia cultural típica das comunidades de software livre se difunda cada vez mais nas comunidades de pesquisa em robótica. Certamente, o ambiente típico de colaboração do “mundo livre” tem muito a contribuir para o avanço da área de robótica.
Você pode ler a nota completa de lançamento da Open Source Robotics Foundation neste link.
Francisco Fernandes: const correctness em C++: Substituição de valor
13 de Abril de 2012, 0:00 - sem comentários aindaUma das coisas que sempre me pegam quando vou ler um código C++ é pegar uma declaração desse tipo:
const Classe * point = new Classe();
No meu entender, a palavra-chave const sempre teve aquela função em C de declarar uma variável sem se utilizar de valores definidos no pré-processador
por exemplo, quando a gente usa um #define CONSTANTE. De fato, o propósito
original de const foi exatamente substituir o #define.
const é uma palavra que em C++ foi ampliada em diversos usos e quero nos próximos posts ir relatando minha compreensão quanto a ela. Essa primeira parte é relativa a constantes de fato, substituição de valores (mais específicamente constant folding) e tipos de linkagem.
const para constantes
Quando você define um valor no pré-processador, o compilador não tem acesso a tipagem, logo corre-se o risco de ocorrer bugs sutis, muito difíceis de achar.
Por exemplo, em
#define BUFFER 100
BUFFER vai se comportar na maioria das vezes como uma variável qualquer. No entanto isso não é assegurado, sem falar no problema de tipagem, já que não se sabe o que foi definido, um float, double ou int. Agora, usando const,
const int buffer = 100;
pode-se usar buffer em qualquer lugar onde o compilador tem acesso. Com isso o compilador irá guardar o valor na tabela de simbolos e substituir na constante, caracterizando o constant folding. em que o compilador irá reduzir uma expressão de constante complicada para uma mais simples, apenas fazendo alguns cálculos em tempo de compilação.
const em cabeçalhos (headers)
Dar preferência a const em vez de #define nos leva a questionar o seu uso em arquivos de cabeçalho. const em C++ tem linkagem interna, por padrão. Isso significa que uma constante definida por ela é visível apenas no arquivo em que foi definida. Assim, deve-se sempre atribuir um valor a uma variável caracterizada como const, já que em linkagem interna não se pode apenas declarar valores, deve-se defini-las com algum valor.Uma exceção a isso é o uso de extern, em que define explicitamente que uma variável tem linkagem externa e com isso terá um espaço alocado para armazenar o valor (normalmente os compiladores evitam armazenar consts em memória, deixando guardada a definição na tabela de símbolos).
extern const int buffer;
O motivo de const ser definida como linkagem interna por padrão é que o linkador não irá tentar interligar definições de const em vários arquivos, evitando colisões. Se fosse externa, memória seria alocada, gerando conflitos de nomes no linkador.
consts seguros
#include <iostream>
using namespace std;
const int i = 100; // constante tipica
/*
* por ser definida a partir de outra constante, j irá ser
* armazenada na tabela de simbolos, como uma constante típica
*/
const int j = i + 10;
//essa linha força a alocação de j por requerer seu endereço
long address = (long) &j;
//como o compilador reconhece j como const, pode-se utiliza-lo
//para definir o tamanho de buf
char buf[j + 10] ;
int main(){
cout << "insira um caractere ";
// como o valor da constante 'c' é definida em tempo de execução
// será necessário alocar valor na memória (como em C), ao invés
// de armazenar numa tabela de símbolos.
const char c = cin.get();
const char c2 = c + 'a';
cout << c2;
}
Diferenças em relação ao C
const int bufsize = 100;
char buffer[bufsize];
não é permitida em C. Por ser armazenada em algum lugar, bufsize teria que ser tratada como constante de tempo de compilação, o que não ocorre em C. Por isso o compilador não irá saber o valor de bufsize, já que estará em memória e não será acessivel em tempo de compilação. A alternativa seria
const int bufsize;
Já em C++, a declaração acima é invalida, pois está declarando uma variável const, mas não está definindo: toda variável declarada como const deve ser inicializada em C++, devido a linkagem interna. Para apenas declarar esta variável, em C++ deve-se usar extern,
extern const int bufsize;
indicando ao compilador que a linkagem foi definida como externa.
Como em C++ não se cria espaço para armazenamento para const, a visibilidade é apenas no arquivo declarado. Por exemplo, se um const é definido fora de qualquer função/método seu escopo é o arquivo declarado. Isso difere de outras variáveis de C++ e de const em C. Assim, se for desejável ter acesso em outros arquivos de uma constante definida, deve-se declará-la como extern,
extern const int y = 20;
isso força alocação de y, mas previne o constant folding de uma constante em C++.
Francisco Fernandes: Krita 2.4 Lançado!
12 de Abril de 2012, 0:00 - sem comentários aindaFinalmente é lançado o Krita 2.4, primeiro release realmente pronto para uso por artistas profissionais. Ja faz um tempo que acompanho a lista dos desenvolvedores e os caras colocaram muito esforço em cima dessa versão. Estabilidade foi a principal delas, resultando numa aplicação bastante agradável de se produzir.
As principais melhorias foram a integração de novos pincéis, aumento no desempenho do programa, pintura espelhada (gera-se cópias refletidas da pincelada feita em um ou mais eixos definidos no canvas ), melhoria na sensibilidade de pressão via tablet, compartilhamento (usando as funções do desktop semântico Nepomuk ) e Quick access wheel (acessar de maneira mais ágil as ferramentas favoritas do artista).
Quick-access wheel |
Também tem um instalador experimental para Windows do Calligra em que o Krita esta integrado, mas é ainda o RC 2. Caso alguém se aventure por lá, dá um feedback aqui ;).
Para mais informações, tem este PDF com descrição completa das novas funcionalidades e este tópico no fórum do KDE com produção artística, pra se
ter ideia do que o programa é capaz.
Lucas M.A.C.: O social dissociado
10 de Abril de 2012, 0:00 - sem comentários aindaFilipe Saraiva: All right to LAkademy!
10 de Abril de 2012, 0:00 - sem comentários aindaIn the last mounths, brazilian KDE community worked in the organization of first KDE latin-american meeting, the LAkademy. This meeting will happen from April 27 to May 01, in Porto Alegre – RS/Brazil.
LAkademy aims to KDE community established, so this isn’t a disclosure event. In the scheduling we have hacking sessions between latin-american developers, presentations about hot themes in KDE community (like Plasma Active and Qt5), latin-america promo meetings, and more activities.
I fell good vibrations about LAkademy. The last event like this was Akademy-BR, in 2010. Since, the brazilian community were is several free software promotional meetings, like IV ENSL, Latinoware 2011, FISL, and others, but a specific meeting of KDE community to evaluate it, talk about the KDE future in Latin America, and imagine goals, only now in LAkademy. So this is importance of event.
My TODO list to LAkademy is:
- See some friends!
- Work in improves to Cantor’s Scilab backend;
- See Rocs with Tomaz and Wagner;
- See Plasma Active with Lamarque;
- Work in a new wiki to KDE Brazil with Aracele;
- Discuss about the sustainability of KDE Brazil;
-
Discuss about free software events in Brazil in which KDE Brazil will be present;
- Drink some beer and to eat the traditional gaucho barbecue!! =D
I desire (and we will work to) that LAkademy will become routine in Latin America, and enter to the international KDE community calendar, like Camp KDE, conf.kde.in, Akademy, and others.