Cflags mais agressivas para o Gentoo 64 bits

Notei que algumas CFLAGS se comportam melhor no ambiente 64 bits e podem proporcionar, de forma geral, um desempenho maior aos pacotes compilados. As flags são -ftree-vectorize e -ftracer.

A primeira permite fazer a vetorização de loops e a segunda torna as otimizações mais eficientes. Estas flags, em especial a -ftree-vectorize, possuem uma reputação ruim, devido a problemas em sua implementação e seu comportamento em ambientes 32 bits, onde ainda hoje causam problemas isolados.

Entretanto, tudo indica que o cenário no ambiente 64 bits é mais animador, permitindo inclusive o uso delas globalmente, definindo-as no make.conf. O meu atual Gentoo (~amd64) utiliza estas flags mesmo em pacotes problemáticos (ex: Mozilla Firefox) e não apresentou nenhum problema até o momento, sendo que se fosse 32 bits, normalmente eu receberia um Segmentation Fault bem bonito :) .

Com relação ao desempenho, geralmente leva a ganhos consideráveis, tendo observado algo em torno de 2% em compactadores. Possui efeito negativo em algumas aplicações, como o ffmpeg, mas no Gentoo não é problema, uma vez que nestes casos flags mais agressivas são filtradas.

Concluindo, se você utiliza o Gentoo 64 bits como desktop, seria bastante vantajoso ativar as flags -ftree-vectorize e -ftracer no seu make.conf, mesmo com um risco um pouco maior de encontrar bugs. Lembrando que não recomendo usá-las em ambientes 32 bits ou em arquiteturas diferentes da x86, por ter um histórico considerável de problemas.

abnTeX no Gentoo

Alguns professores tem exigido o uso de algumas normas da ABNT nos trabalhos desenvolvidos para o meu curso de Engenharia. Como usuário do LaTeX, não me agrada muito ter que usar o OpenOffice para desenvolver meus trabalhos. Felizmente, há alguns dias descobri um pacote LaTeX com classes para normas ABNT, o abnTeX.

Com o abnTex fica facil formatar os trabalhos utilizando as normas ABNT, através de poucos e simples comandos.

Usuários Gentoo podem contar com um pacote para o abnTeX, desenvolvido por mim, e presente no meu overlay. Para instalar basta seguir as instruções, aqui:

http://overlay.rafaelmartins.eng.br/

O pacote possui suporte ao LyX e à instalação da documentação (recomendável) através de USE flags (lyx e doc, respectivamente).

Bons trabalhos, e até a próxima!

Usando GCC Specs para forçar LDFLAGS no Gentoo

O comportamento padrão do GCC pode ser alterado via Specs, que são arquivos contendo as instruções sobre quais flags usar e em que circunstâncias. Você pode olhar a spec padrão do seu GCC com o comando:

# gcc -dumpspecs

Após ler o artigo sobre –as-needed do Gentoo percebi que poderia usar isso para forçar o uso de minhas LDFLAGS, umas vez que alguns pacotes não respeitam aquelas definidas no make.conf. O procedimento é bastante simples:

# export SPECSFILE=$(dirname "$(gcc -print-libgcc-file-name)")/ldflags.specs
# export CURRPROFILE=/etc/env.d/gcc/$(gcc-config -c)
# gcc -dumpspecs | sed -e '/link:/,+1 s:--eh-frame-hdr:\0 *SUASFLAGS*:' > "$SPECSFILE"
# sed "${CURRPROFILE}" -e '1i\GCC_SPECS='$SPECSFILE > "${CURRPROFILE}-ldflags"
# gcc-config "$(basename "${CURRPROFILE}")-ldflags"
# source /etc/profile

No caso, basta substituir o *SUASFLAGS* pelas suas LDFLAGS, no meu caso (que uso -O1 –as-needed –hash-style=gnu –sort-common) ficaria assim:

# gcc -dumpspecs | sed -e '/link:/,+1 s:--eh-frame-hdr:\0 -O1 --as-needed --hash-style=gnu --sort-common:' > "$SPECSFILE"

Esta dica deve ser usada apenas por usuários avançados e que sabem o que estão fazendo. Como visto no passos acima, basta usar o gcc-config para alternar entre os diferentes specs ou mesmo o GCC vanilla.

Tux

“O Tux é a mascote oficial do sistema operativo GNU/Linux. O Tux, criado por Larry Ewing em 1996, é um pinguim gorducho que tem um ar satisfeito e saciado. A ideia da mascote do Linux ser um pinguim veio de Linus Torvalds, o criador do núcleo do Linux.
O Tux foi criado para um concurso de logotipos para Linux. O logotipo vencedor foi criado por Larry Ewing usando o GIMP (um pacote de software livre de edição gráfica) e foi lançado por ele sob as seguintes condições:

A autorização para o uso e/ou modificação desta imagem é concedida desde que me reconheça lewis@isc.tamu.edu e o GIMP, caso alguém pergunte” – Wikipedia

Tux original

Essa (acima) foi a única imagem satisfatória do tux que eu consegui encontrar pela internet em formato SVG. Porém, não pude deixar de observar como essa imagem não se comportou nada bem tanto nos banners quanto nos logotipos que tentei fazer para o projeto utilizando-a. Por isso editei a imagem e criei um meu “Tux simplificado”, que se comportou melhor nos banners e logotipos, então compartilho-o aqui com vocês (clique na imagem para ampliar ou aqui para acessar o site e baixar o svg)

MeuTux

Tux Simplificado

Tux simplificado - Preto e Branco

Tux simplificado - Preto e Branco

xCHM – Um leitor de arquivos chm para GNU/Linux

xCHM rodando no KDE 4.4

CHM (Microsoft Compiled HTML Help) é um formato em que páginas HTML são agrupadas em um único arquivo, bastante usado em arquivos de ajuda no Windows e em alguns ebooks. Eu prefiro os PDFs ou mesmo DJVUs para os meus ebooks, mas alguns só são encontrados em formato .chm, por isso tive que encontrar uma solução para ler estes arquivos no GNU/Linux. O programa eleito foi o xCHM, um leitor escrito em wxGTK e chmlib, funciona muito bem com os ebooks que testei. O Okular do KDE suporta chm e usa a mesma chmlib, entretanto, ele é bem mais lento e instável para lidar com estes ebooks, por isso acabei optando pelo xCHM, mesmo sendo um usuário do KDE.

O xCHM está disponível em praticamente todas as grandes distribuições e pode ser instalado facilmente. No Gentoo Linux, ele está na árvore oficial e pode ser instalado com o comando abaixo:

# emerge -av xchm

Espero que a dica seja útil, pois pra mim deu um trabalho e tanto achar um leitor de chm que realmente faz o que promete.

E a Mozilla responde: engine javascript duas vezes mais rápida

Hoje compilei o Mozilla Firefox 3.7 alpha4 para ver como estão os progressos com a engine javascript e o resultado foi bastante animador, segundo o benchmark do SunSpider, está 2x mais rápida que a versão atual 3.6. Também fiz a comparação com uma build atual do Chromium e podemos ver que o Firefox está cada vez mais próximo do concorrente mais forte em termos de engine javascript.

Site do g-octave no ar!

Já a algum tempo está no ár o site do g-octave e eu esqueci de avisar aqui.

Trata-se de uma instancia do Trac, excelente software para visualização de código-fonte em SCM's, administração de documentação (wiki) e bug-tracking.

Segue o link:

http://g-octave.rafaelmartins.eng.br/

Até a próxima!

cmus: Um player em modo texto

Nesses últimos dias tenho procurado muitas aplicações em modo texto, simplesmente por serem leves e funcionais. Para IRC estou usando o Irssi, ao invés do xchat-gnome, e tem me servido bem depois que aprendi a configurá-lo, mas isso fica pra outro dia.

Hoje eu vim falar de um player chamado cmus e como o própio site do programa diz :”cmus é um pequeno, rápido e poderoso player de música no console para linux e *BSD.

CMUS player rodando no modo library(2)

CMUS player rodando no modo library(2)

Agora vamos para as vantagens:

  • Suporta diversos formatos de áudio: Ogg/Vorbis, MP3, FLAC, Musepack, WavPack, WMA, WAV, AAC, MP4 e outros
  • ReplayGain, Streaming de OGG e MP3, Lista de reprodução, Filtros de playlist.
  • Cores e atalhos de teclado personalizáveis facilmente.
  • Pesquisa e linha de comando no estilo Vi

1. Instalando

Provavelmente sua distribuição deve ter um pacote do cmus, faça uma breve pesquisa e você o encontrará ;)

Para o Gentoo eu usei:

#emerge -av cmus

Chequei se as flags estavam ok e instalei:

[ebuild N ] media-sound/cmus-2.3.1 USE=”aac alsa flac mad musepack unicode vorbis wavpack wma -ao -debug -examples -mikmod -modplug -mp4 -oss -pidgin -pulseaudio -zsh-completion” 0 kB

Depois da instalação eu facilmente o abri via terminal com o comando cmus, mas e agora, como adicionar músicas?

2. Adicionando músicas

Músicas podem ser adicionadas facilmente com o comando :add "/pasta/de/musicas/" logo você verá que os artistas foram adicionados na lista da esquerda,  ao navegar nela você pode apertar espaço para expandir e ver os álbuns de cada artista e tab para trocar de coluna.

3. Modos
Você pode navegar entre os modos simplesmente apertando os números de 1 até 7 no seu teclado:

Ver biblioteca (1) : Tela inicial do programa, com duas colunas, uma para artistas/albuns e outra para as músicas.
Ver biblioteca classificável (2): É a mesma da imagem no início do post, como o nome já diz, você pode escolher a ordem em que as músicas são classificadas(album,artista,faixa etc…).
Ver lista de reprodução (3): Aqui você ver sua lista de reprodução.
Ver fila de reprodução (4)
Navegador (5): Nessa tela você pode navegar pelas pastas procurando músicas
Ver filtros (6):Filtros usados
Ver preferências (7): Aqui existem várias opções que podem ser personalizadas, inclusive os atalhos do teclado.

4. Personalizando
Vamos começar configurando a ordem da biblioteca classificável usando :set lib_sort. A minha configuração está assim

:set lib_sort album discnumber tracknumber title albumartist filename

Ou seja ele vai organizar a música pelos albums, depois pelo número do disco, depois pelo número da faixa, e assim por diante, a ordem pode ser trocada,  os parâmetros mais a esquerda tem maior prioridade que os da direito, logo se você quer organizar sua biblioteca pelos artistas:

:set lib_sort albumartist …(não esqueça dos outros parâmetros)

Agora vamos configurar como as músicas aparecerão na playlist.

:set format_playlist=%-30l – %2n. %-30t %a %= %d

O comando acima diz que a ordem mostrada é Album/No. da faixa/Título/Artista/Duração. Os número(30,2…) indicam o número o numero de caracteres máximo e o sinal de menos(-) serve para alinhar a esquerda.

5.Conhecendo mais

cmus é um player muito rico e cheio de propriedades, caso queira conhecer melhor e configurá-lo completamente sugiro ler a documentação online ou um man cmus

[]‘s. Até a próxima pessoal.


hg-echangelog-0.1.4

Acabo de liberar uma nova versão do hg-echangelog, script que criei para gerar ChangeLogs para meu overlay com pacotes para o Gentoo Linux, utilizando a API do Mercurial.

Esta nova versão conta com algumas pequenas melhorias, gerando ChangeLogs mais próximos aos "originais", gerados pelo echangelog.

Veja as mudanças aqui:

http://hg.rafaelmartins.eng.br/hg-echangelog/

Ou instale aqui:

http://overlay.rafaelmartins.eng.br/

Até a próxima!

Por que usar LXDE?

LXDE

“O Lightweight X11 Desktop Environment, é um ambiente de área de trabalho extremamente rápido, ágil e poupador de energia. Ele é mantido por uma comunidade internacional de desenvolvedores e vem com uma bonita interface com o usuário, suporte a múltiplos idiomas, atalhos de teclado padrões e características adicionais, como um gerenciador de arquivos com navegação em abas. O código-fonte do LXDE está licenciado parcialmente sob os termos da Licença Pública Geral (GPL) e parcialmente sob a LGPL. O projeto LXDE iniciou-se em 2006 quando Hong Yen Jee,de Taiwan, conhecido como PCMan, publicou o primeiro componente, chamado ‘PCMan File Manager’.” – LXDE.org

LXDE

O LXDE é um ambiente de área de trabalho que tem seu desenvolvimento focado em máquinas de menor desempenho (como netbooks, por exemplo) sem depreciar a usabilidade. O nome LXDE significa significa “Lightweight X11 Desktop Environment” ou “Ambiente de área de trabalho leve para o X11″ em português, tendo como características o fato de ser leve, rápido, bonito [de uma forma simples], desenvolvido em GTK+2, possuindo um conjunto de programas padrão para torná-lo um ambiente destkop que busca ser completo.

Opinião

O LXDE pode ser considerado uma opção perfeitamente adequada para quem procura um ambiente de trabalho leve e rápido, mas não abre mão de certas facilidades. Ultimamente sua comunidade tem crescido e o seu desenvolvimento tem apresentado melhorias consideráveis. Podemos afirmar que é um dos melhores ambientes para quem está cansado dos ambientes desktop inchados e cheios de firulas desnecessárias.

LXDE: Screenshots