Fonte de notícias Brasileiras sobre software livre!
RSS:
Publications
Comments

Monthly Archives: June, 2009

Foxit reader no Linux

Nem tudo nessa vida é perfeito como gostaria. Em meu caso específico, ainda uso  Windows no trabalho e muitos documentos que utilizo são em formato PDF. Tá, tudo bem, aí vem um e me pergunta, poxa mas porque não utilizar o Linux em vez do usar o…

Firefox 3.5 e Tab Mix Plus

Dica rápida:
1) Novo Firefox na praça
2) o TabMixPlus pra variar ainda não foi lançado oficialmente, permanece a sugestão dos releases anteriores: vá ao fórum do desenvolvedor e baixe a versão de testes: basta clicar no link em azul no final do primeiro post Tab Mix Plus Dev-Build 0.3.7.4pre.090516
(ou neste é claro)

Google Developer Day

Eh, eu fui ao Google Developer Day. Não devo ser uma pessoa deslumbrável. Ou minha personalidade de diva resmungona realmente chegou ao ápice. A falta de internet me incomodou (tinha wireless do hotel, mas custava uma pequena fortuna), a falta de chá/café me incomodou (tava frio, pô, eu sei que lindas modelos distribuíram picolés [...]

Ubuntu at FISL 10 in Brazil

As some of you may know, we had the FISL 10 in Porto Alegre, here in Brazil. As always, it was a great event with a lot of good speaks and crazy people hanging out! If you had never been there, I really advise you to make an effort to go for it!
This year we [...]

10º FISL – Uma resenha pessoal

Terminou a maratona do 10º FISL, especial pela edição (com direito a 8000 pessoas e o presidente Lula) quanto por ser o meu primeiro. A expectativa era muito e hoje ao escrever estas palavras posso dizer que a mesma foi alcançada com boas n…

Variaridade

GCC Uma função variádica variária – em inglês variadic, variable arity, aridade¹ variável – é aquela que suporta uma quantidade variável de parâmetros.

Muitas linguagens suportam funções variárias, aliás de forma bem simples. Python usa o operador * para indicar quantidade variável de parâmetros, Lua usa o operador ... e Common Lisp o operador &rest.

Outras linguagens podem ser ainda mais simples, como por exemplo Perl, onde toda função é variária e os parâmetros são recebidos na lista @_, tradicionalmente capturados por shift.

Java não suporta funções verdadeiramente variárias devido a sua limitação forçada de tipagem, no entanto é possível simular com o uso de Object e casting («vazamento» na falta de uma tradução melhor):

void myFunction(Object... args) {    // Código do método    …}

Funções variárias em C/C++

C/C++ usa o cabeçalho stdarg.h para suporte a funções variárias.

O exemplo apresentado na Wikipédia é bastante simples: uma função printargs que recebe uma quantidade arbitrária de números inteiros, encerrando com -1 (ou qualquer número negativo em nosso exemplo), e os exibe na saída padrão.

Precisamos incluir dois cabeçalhos em C++, cstdarg para suporte a funções variária e cstdio para exibir o resultado:

#include <cstdio>#include <cstdarg>

Ou, em C:

#include <stdio.h>#include <stdarg.h>

A assinatura da função fica assim:

void printargs(int arg1, ...) {

Para acesso aos parâmetros múltiplos é usado um objeto va_list:

    va_list args;

A função va_start() inicializa o objeto. Ela recebe dois parâmetros: o objeto va_list e o nome do último argumento antes da lista:

    va_start(args, arg1);

Portanto é preciso haver pelo menos um argumento antes da lista variável. Podemos então exibir o primeiro parâmetro, recebido no argumento arg1:

    printf("%d", arg1);

A função va_arg() retorna o argumento seguinte. Ela recebe como parâmetros o objeto va_list e o tipo do parâmetro da lista a ser recuperado.

O tipo precisar ser plenamente promovido, ou seja, ponteiro, inteiro, ponto flutuante ou precisão dupla. Outros tipos, como char precisam sofrer casting, como por exemplo (não faz parte do código de printargs):

char c = static_cast<char>(va_arg(va, int));

Continuando o código, podemos agora reiterar sobre os resultados de va_arg() até encontrarmos o valor de parada negativo:

    int arg;    while((arg = va_arg(args, int)) >= 0)        printf(" %d", arg);

Após o fim da reiteração dos parâmetros obtidos do objeto va_list através de va_arg(), é preciso encerrar o objeto:

    va_end(arg);    printf("\n");}

Caso você queira restringir o formato de entrada da função, isso é possível usando __attribute__ em sua declaração. Por exemplo, se a função log() recebe o nível de log como primeiro parâmetro, uma string de formatação como segundo parâmetro (2) e os parâmetros variáveis a partir do terceiro (3), com formato similar ao da função printf(), isso é feito com a seguinte assinatura:

extern voidlog(int level, cons char *fmt, ...)__attribute__((format(printf, 2, 3)));

As opções para format() são printf, scanf, strftime e strfmon. Veja Declaring Attributes of Functions da documentação do GCC.

[]‘s
Cacilhas, La Batalema

¹Aridade: em Matemática é o número de operandos de uma função.

Google Docs agora tem um Linear Solver

O Google lançou uma nova feature no Google Docs, um Linear Solver para problemas de Otimização Linear. A utilização é muito simples, basta construír uma planilha com os dados, entrar com a função objetivo desejada (maximizar ou minimizar) e ir…

Palavra do presidente

Tem quem não goste, tem quem critique. Porém eu senti firmeza nessas palavras.
Tagged: Discurso, Fórum Internacional de Software Livre, FISL, Lula, Política, Software Livre

I Encontro Brasileiro de Usuários Archlinux

Na quarta feira (dia 24/04) aconteceu o I encontro de usuários brasileiros do Archlinux no FISL. O encontro contou com 4 palestras:

“Introdução ao Archlinux” por mim mesmo;
“From * import Arch” pela Kessia “even” Pinheiro;
“Archlinux Brasil – O que somos seremos e fomos” por Douglas Soares de Andrade
“Construindo pacotes para o Archlinux” por Hugo Dória

Nosso objetivo [...]

fotos

FISL 10

http://picasaweb.google.com/guilhermemunizdacunha/FISL10

LatinoWare 2008

http://picasaweb.google.com/guilhermemunizdacunha/LatinoWare2008

TcheLinux 2008

http://picasaweb.google.com/guilhermemunizdacunha/Tchelinux2008