Ir para o conteúdo
ou

Software livre Brasil

Minha rede

 Voltar a planetas
Tela cheia Sugerir um artigo
 Feed RSS

Planeta do Gnome Brasil

11 de Fevereiro de 2010, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.

Jorge Pereira: - Depuração: Parte 1

1 de Julho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Seja Elegante

Talvez possa ser algo que passe despercebido por vários desenvolvedores, porém dúvido quem nunca tenha se deparado com mensagens de “log” vagas ou sem nenhum nexo ou bem pior, como mensagens idênticas replicadas por várias partes do código! :shock:
A algum tempo atrás estava trabalhando em um projeto em que um respectivo desenvolvedor da equipe possuia o costume de espalhar ou replicar centenas de printf() pelo código com mensagens tipo!

printf(“!!! FULANO – Aqui!!!”);

ou

printf(“!!! FULANO – Arquivo.cpp:  Aqui!!!\n”);

Precisa falar que isto e pessímo? Certo que e preciso um bom senso com o uso de mensagens de depuração pois dependendo ao invés de ajudar podem só atrapalhar. principalmente quando você necessita ter controle sobre tais mensagens, como por exemplo obter a localização da mensagem através do nome da função, arquivo e linha.

Lembrando que dependendo da situação e contexto eu sou a favor de utilizar o pragma no compilador ativando o “poison” desativando dentre várias funções o printf (), evitando de ter espalhada pelo sistema! Futuramente um post sobre o poison.

O pré-processador do GCC oferece (*) várias macros, as que irei utilizar em questão são:

  • __FILE__ : Substituída pelo nome do arquivo.
  • __PRETTY_FUNCTION__ : Substituídas pelo nome nome da função.
  • __LINE__ : Substituída pelo número da linha de código.

(*) Mais detalhes sobre as macros do GCC.

A utilização dessas macros irá facilitar a localização das mensagens de depuração, Abaixo um simples exemplo demonstrado em debug1.c.

/**
 * By Jorge Pereira <jpereiran@gmail.com>
 * Date: Tue Jun 29 02:51:44 BRT 2010
 */

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

// Macro condicional
#ifdef DEBUG
#	warning "Debug is enabled"
#	define TRACE_DEBUG(fmt, ...) \
	fprintf(stderr, " ** DEBUG: %s:%d %s(): "fmt"\n", \
	__FILE__, __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__)
#else
#	warning "Debug is disabled"
#	define TRACE_DEBUG(fmt, ...)
#endif

#define MAX_STRING 5 /* tamanho maximo de uma string */

// Função simples de exemplo...
void
show_name (const char* name,
		   size_t len)
{
	size_t offset = len;

	// Verificação qualquer...
	if (len > MAX_STRING)
	{
		// Abaixo mensagem de depuração, perceba que ela será ativada apenas
                // quando em tempo de compilação você ativar a macro "DEBUG"
		TRACE_DEBUG ("Ooops! Tamanho da string(%d) e excedeu o limite(%d)...",
			len, MAX_STRING);
		offset = MAX_STRING;
	}

	// Manipulação qualquer...
	write (STDOUT_FILENO, name, offset);
	write (STDOUT_FILENO, "\n", 1);
}

int
main (int argc, char* argv[])
{
	if (argc < 2)
	{
		printf ("Usage: %s <string>\n", argv[0]);
		exit (1);
	}

	show_name (argv[1], strlen (argv[1]));

	return 0;
}

Com este exemplo básico em mãos, vamos compilar e executar.

[jpereira@miracleworld Codes]$ gcc -Wall -o debug1 debug1.c
debug1.c:18:3: warning: #warning "Debug is disabled"
[jpereira@miracleworld Codes]$ ./debug1 "Jorge"
Jorge
[jpereira@miracleworld Codes]$ ./debug1 "Jorge Pereira"
Jorge
[jpereira@miracleworld Codes]$

Imagine que seu sistema possui inúmeros arquivos e você precisa em determinados pontos obter o máximo de informação sobre as mensagens de depuração, talvez seja interessante ter além de uma mensagem objetiva obter juntamente o nome da função, arquivo e linha de onde foi invocada tal mensagem.

[jpereira@miracleworld Codes]$ gcc -Wall -DDEBUG -o debug1 debug1.c
debug1.c:13:3: warning: #warning "Debug is enabled"
[jpereira@miracleworld Codes]$ ./debug1 "Jorge"
Jorge
[jpereira@miracleworld Codes]$ ./debug1 "Jorge Pereira"
 ** DEBUG: debug1.c:36 show_name(): Ooops! Tamanho da string(13) e excedeu o limite(5)...
Jorge
[jpereira@miracleworld Codes]$

Agora veja situação que você está trabalhando em um sistema com várias checagens complexas de cenários “nada convencionais” em que você não tem certeza se vai acontecer sempre ou não.
Sem falar que torna-se um atrativo a possibilidade de você poder ativar/desativar o simples mecanismo, como por exemplo poder criar macros para depuração de componentes específicos (ex.: relacionadas a sockets, I/O, sgdb, …), isto poderá facilitar a identificação e remoção de bugs.

Lembrando que este e o primeiro post entre vários que pretendo publicar relacionados a sugestões e técnicas de depuração. Fique de olho na segunda parte desta saga em que irei explicar uma mais dinâmica do mesmo assunto abordado neste post associando ao uso de variáveis de ambiente.
Dúvidas e Sugestões, são sempre bem vindas! ;)

Autor: Jorge Pereira




Leonardo Ferreira Fontenelle: Usando o Mallard para documentação geral

28 de Junho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Na qualidade de médico de família e comunidade, tenho que lidar com uma variedade de problemas muito grande. (Confira meu blog sobre Saúde da Famíla!) Na maioria das situações, as informações de que preciso já foram assimiladas. Em outras situações, preciso consultar a Internet, ou um livro sobre medicamentos, ou uma lista com os códigos para todas as doenças conhecidas pelo homem (e viva o Classix). Mas existe também um meio-campo, de informações que talvez eu esqueça, ou pequenas listas de dados, e para isso eu tenho usado há alguns meses o Mallard.

O Mallard é o novo sistema de documentação do GNOME. Tem uma ênfase em documentos avulsos (em vez de aninhados)e focados cada um num tópico, como na Wikipédia. De quebra, traz uma nova linguagem XML, muito mais fácil que a do DocBook, usada até então. A Equipe de Documentação do GNOME está convertendo a documentação do GNOME aplicativo por aplicativo, e as pessoas envolvidas parecem estar gostando da experiência.

Deixando de lado a sintaxe específica para software (telas, código-fonte etc.), o Mallard é muito adequado para qualquer documento que seja consultado através de um computador. É claro que não faltam alternativas, mas para mim tudo se encaixou perfeitamente. É claro que ser parte do GNOME também ajuda!

Cada assunto fica num arquivo, e todos os arquivos estão num mesmo diretório. Para abrir o diretório, basta executar yelp $DIRETÓRIO — vale até criar um lançador na barra de ferramentas ou na área de trabalho (vamos ver como isso fica com o GNOME Shell). Também é possível converter para HTML ou XHTML usando o gnome-doc-tool, e então abrir com o navegador comum. A única limitação séria do Mallard é que, por enquanto, o caminho do diretório não pode conter caracteres não ASCII (cedilha, acento, til…).

Existia um projeto de editor amigável para o Mallard, mas até hoje não vi o produto. Agora está sendo desenvolvida uma interface web para a edição da documentação do GNOME. Não resolve muito o meu problema, mas tudo bem. Basta editar os arquivos XML no editor de textos favorito, o que no meu caso é o gedit. (Também gosto muito do Vim, mas não para XML. Vai entender.) O destaque de sintaxe ajuda muito, e a ferramenta de inserção de trechos (para destaque XML, não Mallard) também. A documentação on-line do Mallard é muito boa, um dia desses tenho que dar um jeito de copiar para o meu disco rígido. (Nem sempre tenho acesso à Internet.)

Em suma, o Mallard é uma ótima forma de manter documentação, seja para software ou para outros fins. Sugiro a todos que confiram o tutorial de dez minutos, para sentir como funciona!



Jorge Pereira: - Adicionado ao Kernel o suporte nativo as teclas especiais do notebook “Sony Vaio VPC-EB15FB”

27 de Junho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Sempre tive preferência pelos produtos produzidos pela Sony, em especial os notebooks. O meu antigo VGN-FS750 começou a apresentar alguns problemas após eu ter dado um tombo nele, desde então nunca mais foi o mesmo. :roll:

Porém no mês passado resolvi comprar um novo notebook que fosse preferencialmente da Sony, e após várias buscas cheguei ao modelo VPC-EB15FB. Então fui ao shopping e comprei diretamente na loja da SonyStyle o brinquedinho abaixo.

Assim que cheguei em casa fiz o download do Ubuntu 9.10 e instalei, após o primeiro boot que iniciei a configuração e recuperação dos meus backups do notebook antigo percebi que algumas teclas de atalhos não funcionaram, estranho né? Abaixo imagem das teclas na qual estou me referindo.

Obviamente que não fiquei de braços cruzados, fiz checkout diretamente pelo GIT do Kernel o modulo “platform-drivers-x86” e após alguns ajustes já estava adicionado o suporte das novas teclas da série EB de notebooks da Sony ao Kernel do Linux.

Resumindo, suporte adicionado seguido de patch gerado e submetido ao Kernel. Agora e aguardar a próxima versão do Kernel para termos por padrão o suporte a tais teclas! ;)

Patch gerado a partir do Kernel ??2.6.35-rc3




Jorge Pereira: - Adicionado ao Kernel o suporte nativo as teclas especiais do notebook “Sony Vaio VPC-EB15FB”

27 de Junho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Sempre tive preferência pelos produtos produzidos pela Sony, em especial os notebooks. O meu antigo VGN-FS750 começou a apresentar alguns problemas após eu ter dado um tombo nele, desde então nunca mais foi o mesmo. :roll:

Porém no mês passado resolvi comprar um novo notebook que fosse preferencialmente da Sony, e após várias buscas cheguei ao modelo VPC-EB15FB. Então fui ao shopping e comprei diretamente na loja da SonyStyle o brinquedinho abaixo.

Assim que cheguei em casa fiz o download do Ubuntu 9.10 e instalei, após o primeiro boot que iniciei a configuração e recuperação dos meus backups do notebook antigo percebi que algumas teclas de atalhos não funcionaram, estranho né? Abaixo imagem das teclas na qual estou me referindo.

Obviamente que não fiquei de braços cruzados, fiz checkout diretamente pelo GIT do Kernel o modulo “platform-drivers-x86” e após alguns ajustes já estava adicionado o suporte das novas teclas da série EB de notebooks da Sony ao Kernel do Linux.

Resumindo, suporte adicionado seguido de patch gerado e submetido ao Kernel. Agora e aguardar a próxima versão do Kernel para termos por padrão o suporte a tais teclas! ;)

Patch gerado a partir do Kernel 2.6.35-rc3




Jorge Pereira: - Adicionado suporte as teclas especiais do “Notebook Sony Vaio VPC-EB15FB” ao Kernel.

27 de Junho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Sempre tive preferência pelos produtos produzidos pela Sony, em especial os notebooks. O meu antigo VGN-FS750 começou a apresentar alguns problemas após eu ter dado um tombo nele, desde então nunca mais foi o mesmo. :roll:

Porém no mês passado resolvi comprar um novo notebook que fosse preferencialmente da Sony, e então após várias buscas cheguei no modelo VPC-EB15FB. Então ao shopping e comprei diretamente na loja da SonyStyle o brinquedinho abaixo.

Assim que cheguei em casa fiz o download do Ubuntu 9.10 e instalei, após o primeiro boot que iniciei a configuração e recuperação dos meus backups do notebook antigo percebi que as teclas de atalhos não funcionaram, estranho né? Abaixo imagem das teclas na qual estou me referindo.

Obviamente que não fiquei de braços cruzados, fiz checkout diretamente pelo GIT do Kernel o modulo “platform-drivers-x86” e após alguns ajustes já estava adicionado o suporte das novas teclas da séria EB de notebooks da Sony ao Kernel do Linux.

Resumindo, suporte adicionado seguido de patch gerado e submetido ao Kernel. Agora e aguardar a próxima versão do Kernel para termos por padrão o suporte a tais teclas! ;)

Patch gerado a partir do Kernel 2.6.35-rc3




Lucas Rocha: Raw Grooves

25 de Junho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

It’s hard to define what groove is. It’s a combination of swing, rhythm, and use of space. Usually it arises from the right interaction of sounds from the rhythm section – drums, bass, guitar, and keyboards. You know when it’s there and you know when it’s not. Maceo Parker, a groove maven, usually starts his concerts with something like this:

We’d like to present 2% Jazz and 98% funky stuff. This is known as happy music. Happy music is when you hear it, you start moving and shaking something automatically!

I love groovy music. But I have especial preference for more raw grooves. By raw I mean the grooves that are powerful because they are imperfect, human, noisy and full of energy. Grooves are becoming too synthetic, metronomic, clean, and perfect nowadays. They often lose the point. So, here’s a quick list of some of the raw groovy tunes I love.

Sex Machine by James Brown. Yes, the classic one. It’s full of energy and has a tight groove. Great example of use space between bass, guitar, and drums.

Shake Everything You’ve Got by Maceo Parker. He is one of the most prominent disciples of the James Brown “university” – as he usually says. This song is all about enjoying the moment. My favourite version is in the album Life on Planet Groove.

Rocks by Brecker Brothers. They are a great jazz fusion duo – Michael on sax and Rangy on trumpet. I first heard Rocks in one of the 5 Brecker Brothers albums I bought last year. The groove arises from the alternation of bass and guitar lines on top of a powerful drum beat.

Cissy Strut by The Meters. This is a classic groove – for those into funky stuff. Cissy Strut is a slow-tempo funky song. Great use of space, packed with swing. The drum beat is simply awesome!

Serpentine Fire by Earth Wind & Fire. Ok, it’s quite hard to pick only one tune from those guys. They have a countless number of amazing groovy songs. Serpentine Fire has such a great vibe. Maurice White delivers a great singing performance, packed with energy.

As I said, this is just quick list. Groove is everywhere and, because it’s a subjective thing, people tend to have different favourite artists groove-wise. What are your favourite raw grooves?



Fábio Nogueira: Grsync – Uma mão na roda

23 de Junho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Recentemente precisei de uma solução para sincronizar as minhas fotos, pois para não perdê-las não as deixo num lugar apenas, distribuo em alguns dispositivos móveis. Encontrei o Grsync! Uma GUI do rsync que é uma mão na roda. Backup, sincronismos de arquivos e pastas é com ele mesmo.

Vamos para a sua instalação! Abra o console e digite:

sudo apt-get install grsync

Pronto! Instalado com sucesso…

Gostei tanto do Grsync que resolvi traduzi-lo para o nosso bom e velho (nem tanto) Português do Brasil. Já contatei o desenvolvedor e nas próximas edições o mesmo já virá com as minhas traduções. Enquanto isso, basta baixar o grsync.mo (na pasta \tmp por exemplo) e no console, dentro da mesma, executar:

sudo cp grsync.mo /usr/share/locale/pt_BR/LC_MESSAGES/

Voilá! Grsync totalmente traduzido! Qualquer sugestão sobre a tradução será muito bem vinda.

Inté!

Twitter Facebook Google Reader Google Buzz LinkedIn Delicious Ping Blinklist Reddit Box.net Google Gmail FriendFeed Technorati Favorites Share/Bookmark



Fábio Nogueira: Grsync – Uma mão na roda

23 de Junho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Recentemente precisei de uma solução para sincronizar as minhas fotos, pois para não perdê-las não as deixo num lugar apenas, distribuo em alguns dispositivos móveis. Encontrei o Grsync! Uma GUI do rsync que é uma mão na roda. Backup, sincronismos de arquivos e pastas é com ele mesmo.

Vamos para a sua instalação! Abra o console e digite:

sudo apt-get install grsync

Pronto! Instalado com sucesso…

Gostei tanto do Grsync que resolvi traduzi-lo para o nosso bom e velho (nem tanto) Português do Brasil. Já contatei o desenvolvedor e nas próximas edições o mesmo já virá com as minhas traduções. Enquanto isso, basta baixar o grsync.mo (na pasta \tmp por exemplo) e no console, dentro da mesma, executar:

sudo cp grsync.mo /usr/share/locale/pt_BR/LC_MESSAGES/

Voilá! Grsync totalmente traduzido! Qualquer sugestão sobre a tradução será muito bem vinda.

Inté!

Twitter Facebook Google Reader Google Buzz LinkedIn Delicious Ping Blinklist Reddit Box.net Google Gmail FriendFeed Technorati Favorites Share/Bookmark



Fábio Nogueira: Java no Ubuntu

21 de Junho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Quando você precisa do Java e o mesmo não se encontra nos repositórios, existe uma receita rápida, fácil e indolor.

1. Abra o terminal e digite:

sudo add-apt-repository “deb http://archive.canonical.com/ lucid partner”

Será adicionado o repositório, neste caso ao Ubuntu 10.04 (Lucid Lynx)

2. Em seguida, atualize a lista de fontes e realize a instalação dos pacotes:

sudo apt-get update && sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts -y

Irá aparecer uma tela de confirmação com os termos da licença. Pronto… Java instalado com sucesso! Quer testar a instalação, digite no terminal:

java -version

Até!



Jorge Pereira: - Introdução aos Linux Device Drivers (ILDD)

19 de Junho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Olá,

Este com certeza e um dos melhores matérias sobre ‘Linux Device Drivers’. Vale a pena conferir caso você tenha curiosidade ou necessidade de conhecer sobre o assunto.

Introdução aos Linux Device Drivers (ILDD) é um curso que tem por objectivo apresentar os princípios básicos do desenvolvimento de device drivers no Linux kernel. Pretende-se com este curso, que o leitor tenha contacto com várias ferramentas e sub-sistemas existentes no kernel, adquirindo assim as bases que lhe irão permitir desenvolver o suporte para a grande maioria dos dispositivos. Alguns dos temas introduzidos são: estrutura básica de um device drivercomunicação com o userspacememória dinâmicaeventos assíncronosprimitivas de sincronizaçãocomunicação com o hardware.

Este curso aborda o tema de uma perspectiva pedagógica, através da sistematização dos conceitos em conjunto com uma forte componente prática, na qual se convida o leitor à implementação gradual de um device driver que dará suporte a um dispositivo especificamente concebido para o efeito. O leitor poderá ainda consultar a literatura de referência, de onde se destacam os excelentes títulos: Linux Device DriversUnderstanding the Linux KernelLinux Kernel in a Nutshell.

O autor, com a ajuda dos seus revisores, investiu mais de um ano de trabalho na elaboração e preparação deste curso, no sentido de oferecer à comunidade, não só um manual de aprendizagem abrangente, mas também uma importante referência futura. Caso encontre alguns erros ou tenha sugestões que visam melhorar ou complementar este trabalho, não hesite em contactar o autor.

Download aqui




Tags deste artigo: gnome planet planeta