A mineração de dados é o mais importante conjunto de tecnologias que estão sendo desenvolvidas em nossos dias. É diretamente responsável por quase todas as surpresas que temos todos os dias na Internet. Hoje, por acaso, uma empresa de vendas online me enviou uma promoção de um item que pesquisei ontem em várias outras lojas. Pura coincidência, ou um dos melhores exemplos de troca de informações e mineração de dados que vi este ano. E vemos isso todos os dias.

Drowning by numbers
photo credit: Jorge Franganillo

O R é uma linguagem de programação para estatística e mineração de dados que, nos últimos dois anos tomou de assalto as mentes, e corações de milhões de pesquisadores, cientistas de dados, mineradores, gerentes e estudantes. Baseado em uma ferramenta proprietária, foi desenvolvido e é distribuído em software livre. Permitindo a criação de rotinas, algoritmos e testes de validade ou classificação extremamente rápidos. Eu disse linguagem de programação? Fui modesto, trata-se de um verdadeiro ambiente de desenvolvimento.  Acrescente outra ferramenta livre, o RStúdio, teremos, além do ambiente de desenvolvimento, uma ide amigável e boa qualidade. Ainda assim há um problema.

Algoritmos de mineração de dados requerem grande capacidade de processamento e espaços gigantescos de memória. Para você ter uma idéia no meu modesto dual core, com 4 gigas, minerar exceções em apenas 2000 linhas gastou 2 giga bytes de memória e 45 segundos. Tempo e recursos inaceitáveis para ambientes de produção e mesmo para pesquisas um pouco mais complexas.

Qual não foi minha surpresa ao descobrir que posso minerar dados de graça nas núvens usando um ambiente com capacidades centenas de vezes maior que o meu? A Coudnumbers oferece 2GBytes de armazenamento para seus dados e scripts, 2GBytes de tráfico e 5 horas de processamento por mês, totalmente grátis. Aquela mineraçãozinha de 2000 linhas levou só 8s e acredito que a maior parte deles tenha sido gasta enviando e recebendo dados. Minha internet também não é lá estas coisas. Não conhece o R, não se preocupe, eles aceitam também Python e C/C++ entre outras.

Bons dados o tragam.

A mineração de dados é o mais importante conjunto de tecnologias que estão sendo desenvolvidas em nossos dias. É diretamente responsável por quase todas as surpresas que temos todos os dias na Internet. Hoje, por acaso, uma empresa de vendas online me enviou uma promoção de um item que pesquisei ontem em várias outras lojas. Pura coincidência, ou um dos melhores exemplos de troca de informações e mineração de dados que vi este ano. E vemos isso todos os dias.

OpenCompute-Logo-Main Em mais uma grande iniciativa em favor do desenvolvimento de novas tecnologias, a equipe de desenvolvimento do Facebook criou o projeto Open Compute Project e abriu a tecnologia desenvolvida para a criação de servidores de alto desempenho.

Estão lá as especificações e projetos que incluem desde o chassis até a fonte, passando pelo motherboard em si. Como eles mesmo dizem no vídeo de lançamento. Prontos para que você mesmo possa criar máquinas mais eficiente, criticar o projeto deles e ajudar a criar um mundo mais eficiente.

Esta é a segunda ação digna de nota do Facebook em direção a abertura de divulgação de tecnologias únicas da empresa. A primeira, o projeto HipHop já mudou a forma como distribuímos aplicativos em php. Resta-nos torcer pelo sucesso do OpenServer.

524737main_oss_logo_halfNos dias 29 e 30 de Março de 2011, acontecerá na NASA a primeira cúpula de código aberto patrocinado pela agência espacial americana.

O objetivo é fomentar discussões com expoentes do código aberto e engenheiros e técnicos da Nasa que ajudem a agência a adotar mais soluções de código aberto em seus projetos.

 

Entre os participantes já confirmados estão:

 

Portrait of Pascal Finette Pascal Finette, Mozilla                    Portrait of Bob Sutor  Dr. Robert Sutor, IBM

Portrait of Brian Stevens Brian Stevens, RedHat                    Portrait of Chris Wanstrath Chris Wanstrath, GitHub

 

Há alguns anos a Nasa está engajada no uso de código aberto. Alguns softwares desenvolvidos por eles podem ser encontrados aqui. O mais interessante que conheço, usado pela Nasa e pelo exército americano é o BRL-CAD.  Entre usar e incentivar e promover uma cúpula há uma grande diferença.

Em um comunicado oficial em seu site de tecnologia a Dell informa que está liberando o OpenManage server administrator para Ubuntu.

Chris Powell Ubuntu Tattoo
Creative Commons License photo credit: Myles Braithwaite

O OpenManager Server Administrator (0MSA) é um aplicativo com interface web para a gestão de servidores, madura e segura que agora pode ser instalada nativamente via apt nos seus servidores Ubuntu.

Se você não conhece, deveria testar, pelo menos.

Além de mim, tem mais alguém por aqui que usa servidores Ubuntu? Ou que goste de paraquedismo?

Anúncio oficial.

Documentação.

Todos os dias me surpreendo mais com as opções da linha de comando. Não me entenda mal. Ainda acho que fazer qualquer coisa na linha de comando é coisa pré histórica e deveria ser assunto de museu. Contudo, todos os dias acabo caindo na maldita tela preta.

Working
Creative Commons License photo credit: totalAldo

Hoje, precisei gravar a trilha de áudio de um vídeo em mp3 para ouvir no celular. Nada mais simples, qualquer débil mental consegue fazer isso. Existem por ai uma centena de aplicativos para isso. O único problema é que não conheço nenhum deles, nunca fiz isso antes e não tinha tempo para pesquisar. Esse foi o momento que lembrei do ffmpeg então…

Como minha máquina não o tinha tive que instalá-lo.

sudo apt-get install ffmpeg

Depois fui forçado a ler o man para entender o programa que nunca tinha usado antes e, cinco minutos depois digitei

ffmpeg -i arquivovideo.mp4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 arquivoaudio.mp3

Só de ódio eu movi para o celular na linha de comando.  E lhe dou mais 4 comandos interessantes.

Para converter avi para flv
ffmpeg -i video.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320×240 -f flv video.flv

Para converter avi em mpg
ffmpeg -i video.avi video.mpg

Para converter wav em mp3
ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3

Para converter um vídeo em um conjunto de imagens estáticas
ffmpeg -i video.mpg image%d.jpg

E olha que como estava com pressa não li nem a metade do manual….:) Deus! Eu odeio a linha de comando.


Há alguns dias publiquei um pequeno artigo sobre como configurar o Apache2 para servir conteúdo comprimido. Ação necessária mas não suficiente para aumentar a velocidade dos seus sites. Existem muitas outras ações que você pode tomar para fazer seus sites mais rápidos e mais eficientes. Uma delas é usar o mod_expires.

Apache Chief
photo credit: Stinkie Pinkie

Todas as transções entre o navegador do seu cliente e seu servidor web são feitas através de requisões Http. A parte mais importante destas requisições são os headers. Uma coleção de “comandos” que são utilizados para controlar o processo de transferência de dados. Entre estes comandos nos interessa o expire.

O Expire server para informar a todos os serviços de cache no caminho a validade de um determinado arquivo forçando o cache a sevir os conteúdos que ainda não expiraram. Deixe-me colocar isto um pouco melhor.

Sua página usa duas imagens, um background que muda uma vez por ano e um pequeno gŕafico que muda todos os dias. Você configura o header destes requests de forma a informar essa taxa de atualização aos navegadores dos seus usuários. Assim, todas as vezes que ele acessar sua página o navegador só emitirá a requisição do gráfico. Diminuíndo sua banda, carga no servidor e aumentando a velocidade total de navegação do seu usuário.

Deu para entender? Essa é a idéia em linhas gerais. De uma forma muito, muito simples.

Para habilitar essa dádiva do Http você precisa habilitar o mod_expires. No ubuntu digite:

sudo a2enmod expire

Pronto! Agora acabou….

Depois crie um arquivo com suas opções e expiração em /etc/apache2/mods-available/expires.conf. O meu, que uso há anos é:

[php]
<IfModule mod_expires.c>

# ExpiresDefault "access plus 2 months"

ExpiresByType image/x-icon "access plus 2 days"
ExpiresByType image/png "access plus 2 days"
ExpiresByType image/jpg "access plus 2 days"
ExpiresByType image/gif "access plus 2 days"
ExpiresByType image/jpeg "access plus 2 days"
ExpiresByType application/pdf "access plus 2 days"
ExpiresByType audio/x-wav "access plus 2 days"
ExpiresByType audio/mpeg "access plus 2 days"
ExpiresByType video/mpeg "access plus 2 days"
ExpiresByType video/mp4 "access plus 2 days"
ExpiresByType video/quicktime "access plus 2 days"
ExpiresByType video/x-ms-wmv "access plus 2 days"
ExpiresByType application/x-shockwave-flash "access 2 days"
ExpiresByType application/css "access 2 days"

ExpiresByType text/css "access plus 2 days"
ExpiresByType text/javascript "access plus 2 days"

</IfModule>
[/php]

Como você pode ver meus sites estão sempre em um grande nível de desenvolvimento. Se esse não for o seu caso pode mudar a palavra days por months ou years. Você pode ler mais sobre essa configuração aqui.

Calma…. ainda não acabou. 🙂 Falta reiniciar o apache2.

sudo /etc/init.d/apache2 restart

rSe pudéssemos colocar todas as mazelas da internet em uma única expressão essa seria: Limitação de Banda.

吉祥物大集合
Creative Commons License photo credit: tutchiio

Para ajudar um pouco nesse problema podemos configurar o servidor Apache2 para comprimir tudo que for interessante no lado do servidor e enfiar os arquivos comprimidos na rede.

Do lado do cliente, os navegadores darão seu jeito para descomprimir e colocar tudo no lugar certo. Conteúdo lindo e faceiro.

Para fazer isso, precisamos habilitar um módulo extra: O mod_deflate.

O uso deste módulo permite que você comprima arqivos de texto (html,javascript, css)  com fatores de compressão da órdem de 40%.
Essa compressão causa um pequeno aumento de carga nas cpus do servidor. Fique tranquilo quanto a isso, o ganho de banda mais que compensa o aumento de carga.

Habilitar o mod_deflate no ubunto é simples. Primeiro abra uma sessão no terminal, com direitos de root e digite:

a2enmod deflate

Este comando tão complexo, habilitará o mod_deflate e pronto. Não fique tão contente. Nem tudo são flores e ainda não acabamos. Para que o mod_deflate funcione, você terá que reiniciar o apache. Então digite:

/etc/init.d/apache2 restart

Nem todo mundo tem a graça e a felicidade de usar o Ubuntu ou o Debian para estes não tão felizes, será necessário editar o arquivo de configuração do Apache (http.conf, apache.conf, ou coisa parecida)  e incluir a seguinte linha:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

Calma! Ainda não acabou.

Você ainda precisa criar ou editar o arquivo deflate.conf que fica em /etc/apache2/mods-available/ e determinar o que deve ou não ser comprimido. O meu arquivo, que uso a anos sem pestanejar, segue:

[php]
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE application/x-httpd-eruby

DeflateCompressionLevel 9

# Netscape 4.X has some problems
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Setup custom deflate log
# DeflateFilterNote Input instream
# DeflateFilterNote Output outstream
# DeflateFilterNote Ratio ratio
#
# LogFormat ‘"%r" %{outstream}n/%{instream}n (%{ratio}n%%)’ deflate
# Example of log file (add to vhosts)
# CustomLog logs/deflate_log DEFLATE
</IfModule>
[/php]

Você pode tirar os comentários da última parte para criar um log escial só para o deflate.

Dia difícil… Ano mais difícil ainda. O cara depijama anda de terno muitas horas por dia, muito trabalho e pouco tempo. Equipe nova todos em treinamento. Pessoal promissor, ativo, pesquisador mas inexperiente no mundo Unix.

Ontem precisei imprimir uma página web em pdf e lembrei do cups-pdf. Instalei na minha máquina e resolvi escrever um pequeno tutorial para quem mais precisar fazer isso. Muito, muito difícil então, preste muita atenção.

Laptop Stickers 04
Creative Commons License photo credit: ghindo

Em uma linha de comando digite:

sudo apt-get install cups-pdf

O sistema vai pedir sua senha. Não tenha medo. DIGITE SUA SENHA!

Agora vá até sua pasta home e crie a pasta PDF. Assim mesmo, com letra maiúscula.

Como você já está no terminal pode digitar:

mkdir ~/PDF/

Pronto, sempre que você for imprimir qualquer coisa irá aparecer a impressoa PDF escolha esta impressora e o arquivo pdf será salvo na pasta PDF que você criou.

Por favor, mantenha isso em sigilo. Pode ferir a autoestima de pessoas mais sensíveis. Testado e executado no Ubuntu 9.04.

Hoje tive o grande prazer e a honra de ser entrevistado, ao vivo, pela bela, charmosa e muito inteligente, Alessandra Consoli, apresentadora do Bom Dia Paraná. Jornal da RPC, rede de televisão paranaense afiliada da Rede Globo.

entrevista no Bom Dia ParanáSegundo meus amigos e esposa a entrevista foi boa. Vendo e ouvindo agora, sem falsa modéstia, vi que faltou algo importante. Faltou agradecer a Alexandra, aos editores e a equipe do Bom Dia Paraná, durante a entrevista pela oportunidade de falar um pouco, para tão grande audiência, sobre software livre e de código aberto.

Fui convidado graças ao meu envolvimento com software livre e acessibilidade mas, principalmente para falar, como consultor, de um projeto fantástico desenvolvido pelo Fernando Botelho, com software livre, para cegos e visando inclusão social e digital.

Fica aqui, eternizado esse meu agradecimento, em meu nome e em nome dos que se esforçam, todos os dias para fazer esse mundo um pouquinho melhor acreditando que o conhecimento deve ser livre, amplo, geral e irrestrito.

E olha que eu nem estava de pijama.

Descobrir a versão do sistema operacional que um computador está rodando não é uma atividade trivial. Maximize isso no mundo linux. Essa informação esta espalhada por alguns arquivos e você precisa saber que arquivos são esses para descobrir que sistema operacional está sendo executado. Aqui há uma lista modesta de comandos que podem ser executados para essa tarefa.

Macro Music ♫♪
photo credit: LaserGuided

Primeiro vamos descobri a versão do kernel. Para isso usamos o uname. Digite o seguinte comando:

$ uname -a

Este comando vai retornar uma linha com informações básicas sobre o kernel. O uname consegue recuperar outras informações interessantes dê uma olhada na página do man deste programa e ficará surpreso.

Agora vamos ver o sistema operacional propriamente dito. Para sistemas baseados no RedHat usamos um pequeno arquivo que está no /etc

$ cat /etc/redhat-release

Para sistemas baseados em Debian,

cat /etc/debian_version

O Ubuntu requer um pouco mais de atenção. Podemos usar o comando:

cat /etc/issue

ou

cat /etc/lsb-release

Este último lista detalhes sobre a versão instalada. Com uma saída parecida com a mostrada a seguir:

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION=”Ubuntu 9.04″