Blog em novo endereço

11, Abril 2009

É com grande satisfação que informo que o Blog mudou de endereço e agora possui domínio próprio, sendo o http://manoelcampos.com. No endereço novo já existem alguns artigos novos, que não existem neste. Este blog ainda continuará, mas apenas para informar a URL do novo Blog. Assim, você deve atualizar seus favoritos para o novo endereço http://manoelcampos.com.

Aqueles que são leitores do blog, já de algum tempo, por favor, divulguem o novo endereço, que está de cara nova e com mais recursos.

Aguardo vocês lá!


Dispositivo de entrada virtual: detecção de movimento por meio de uma WebCam

4, Abril 2009

Acesso o artigo no meu novo blog.

Eu juro que tinha pensado nisso. O programa CamSpace faz detecção de movimentos a partir de uma WebCam e assim pode-se usar as mãos ou qualquer outro objeto como um dispositivo de entrada para o seu computador, como um Joystick, por exemplo. O melhor de tudo é que o programa é gratuito.

Veja vídeo no olhar digital.


Archive.org – Versões antigas de páginas da web de várias empresas

4, Abril 2009

Veja artigo no meu novo blog.

Já pensou em ver como eram sites como o da Apple e da Microsoft a alguns anos atrás? Pois é, isto é possível por meio do site http://www.archive.org, que faz um registro de vários sites na internet, mantendo um histórico de versões desses, sites durante o passar dos anos.

Veja esse vídeo no olhar digital sobre a estrutura física montada para armazenamento dessas páginas.


Gerador de Cores RGB

3, Abril 2009

Acesso o artigo no meu novo blog.

Trabalhando com Processamento de Imagens no SciLab no Ubuntu, precisei, para conferir se alguns resultados de operações de manipulação de cores estavam corretas, de uma ferramenta para que, a partir de 3 valores RGB (Red, Green, Blue), na faixa de 0 a 255, fosse mostrada qual a cor equivalente. No SciLab tem como fazer isso, mas não encontrei uma forma fácil. Assim, pesquisando no Google, encontrei a página ColorSchemer OnLine, que faz exatamente o que queria. Desta forma, não preciso instalar programa algum para ver a cor referente a valores de RGB.


Carregando bibliotecas adicionais no SciLab, o “MatLab” OpenSource

3, Abril 2009

Acesse o artigo no meu novo blog.

Já tinha citado no post Ferramentas MatLab no Linux, sobre o programa SciLab, uma ferramenta
OpenSource, semelhante ao MatLab, para operações com matriz, com versões para Linux, Mac e Windows.
Eu baixei a mesma via apt-get e estou usando para trabalhar com processamento de imagens. Porém, ao tentar usar algumas funções para essa finalidade, descobri que ele não vem com bibliotecas padrões para isso.
Desta forma, precisei procurar no Google, até que encontrei as bibliotecas SIP ToolBox (SciLab Image Processing) e SIVP (SciLab Image and Video Processing) ToolBox. A diferença do SIVP pro SIP é que o primeiro permite fazer processamento também em arquivos de vídeo. Encontrei essas bibliotecas também a partir da página ToolBox Center do SciLab.

As duas ToolBox precisam da biblioteca OpenCV. Tentei baixar o arquivo opencv-linux lá no site oficial, mas o mesmo não existia, então tive que procurar no google por opencv-linux1.1, que encontrei nesse site.
Você precisará compilar o pacote e fazer todo o processo manual de instalação, assim, abra um terminal na pasta onde baixar o arquivo e digite os comandos abaixo:

# descompactar o arquivo
tar -zxvf opencv-1.1pre1.tar.gz

# configurar o OpenCV para compilação
# os parâmetros passados para o configure são:
# –enable-apps = compilar aplicações de exemplo
# –with-ffmpeg = habilitar suporte para manipulação de vídeos com a biblioteca ffmpeg, como explicado antes
# –without-quicktime = não usar bibliotecas do QuickTime, acredito que só seja é necessário se você não tiver o QuickTime
# alguns dos parâmetros não sei pra que são, fico devendo :)
# para ajudar digite ./configure –help
./configure –enable-apps –with-ffmpeg –with-gnu-ld –with-x –without-quicktime CXXFLAGS=-fno-strict-aliasing

# compilar
make

# instalar
sudo make install

Os parâmetros de instalação retirei desse site. Mas lá são informados mais passos que não foram necessários para mim.

A biblioteca SIVP tem disponível no Sypnatic do Ubuntu 8.10, mas ocorre um erro na instalação que não consegui resolver.
E pra priorar, nem deixou remover e causau um problemão, pois toda vez que tentava baixar um programa via apt-get, ele dava erro tentando terminar a instalação do SIPV. Tentei fazer o download a partir do SourceForge, mas o arquivo para a versão 0.5 não existia. Encontrei em um site, que não lembro mais, os fontes dessa versão, mas ao tentar compilar, ocorria também um erro. No repositório LauchPad tem a versão 0.5 para Ubuntu 9.04, mas funcionou no 8.10 sem problemas. Existem alguns pré-requisitos que são listados na página e que existem pacotes deb deles também, mas no meu caso, todos já estavam instalados no meu sistema. Se você desejar trabalhar com vídeo, precisará instalar antes a biblioteca ffmpeg, para manipulação desse tipo de arquivo. Você pode baixá-la via apt-get.

No caso dessa versão 0.5.0 do SIVP, a biblioteca é instalada em /usr/lib/sivp-0.5.0. Para carregar bibliotecas externas no SciLab você precisar carregar um arquivo .sce, normalmente de nome loader.sce. Para a biblioteca SIVP, você deve digitar o comando load no SciLab, seguido do nome do arquivo .sce a ser carregarado. Assim, digite exec(“/usr/lib/sivp-0.5.0/loader.sce”) que as funções estarão prontas para uso. Você encontra documentação das funções da biblioteca em http://sivp.sourceforge.net/doc.php.

O SIP, a outra biblioteca para processamento de imagens, na versão atual 0.4, não compila no SciLab 5.1, a versão atual, e não há um pacote deb para ela. Encontrei um pacote deb para a versão 0.3.99rc2 no repositório do Ubuntu, não tão menor que a versão 0.4 disponibilizada no site oficial. Já tendo instalado o OpenCV, como mostrado anteriormente, todos os outros pré-requisitos são encontrados na página para download do pacote deb do SIP, mostrada logo acima.

Esta versão é instalada no diretório /usr/lib/scilab/contrib/sip, que acredito ser o correto, diferente do diretório do SIVP. Assim, para carregar a biblioteca no SciLab, digite nele o comando exec(“/usr/lib/scilab/contrib/sip/loader.sce”). Você encontra documentação, inclusive em portugês, na página inicial do site oficial. Encontrei um tutorial nesse link.

Testei a biblioteca SIP e fiz algumas brincadeiras iniciais. O mais legal é que as funções tem a mesma assinatura das do MatLab (nome e parâmetros são iguais), assim, fica fácil pegar exercícios propostos para MatLab e executar no SciLab facilmente.

Tenho que descobrir ainda como fazer para carregar essas bibliotecas de forma automática. Se descobrir, postarei aqui.

Para finalizar, todos sabem que essas ferramentas OpenSouce não são tão completas e poderosas quanto o MatLab. Elas tem suas deficiências. Uma análise comparativa entre o SciLab e o MatLab pode ser vista aqui.


Definindo o GMail como cliente de email padrão no Linux Ubuntu

28, Março 2009

Veja o artigo no meu novo blog.

Todo mundo que tem Gmail adora ele, quem ainda não tem, não sabe o que tá perdendo. Assim, para aqueles que, como eu, abandonaram os clientes de email como Outlook Express e Mozilla Thunderbird há anos, é muito chato você clicar num link de email em uma página e abrir um programa cliente de email. No Windows você pode resolver isso instalando o GMail Notifier e tornar o GMail o cliente de email padrão.

Para quem usa alguma distribuição linux como o Ubuntu, não precisa nem se quer de um programa para isso, basta usar este script aqui e seguir os passos abaixo:

  1. Salve o arquivo no seu diretório home. Depois, no Ubuntu, vá no menu System >> Preferences >> Preferred Applications.
  2. No primeiro campo abaixo de Mail Reader escolha Custom
  3. No campo Command logo abaixo digite /home/nomeDoSeuUsuario/open_mailto.sh %s
    por exemplo /home/manoel/open_mailto.sh %s
    Preferred Applications no Ubuntu

    Preferred Applications no Ubuntu

    Agora pode fechar a janela
  4. Abra um terminal para adicionar permissão de execução no seu script, digitando o comando chmod u+x ~/open_mailto.sh

Pronto, agora, ao clicar em um link maito:, será aberta a página de envio de email do GMail no Firefox.

Os comandos no script sh são mostrados abaixo:

#!/bin/sh

firefox “https://mail.google.com/mail?view=cm&tf=0&to=
`echo $1 | sed ’s/mailto://’`”

O segundo comando não possui quebra, deve ser digitado numa linha só.

Observe que é chamado o firefox, na página de envio de email do gmail, passando o email recebido do mailto: como parâmetro para o script. Se você usar outro navegador, basta alterar nesse arquivo. Mais detalhes são dados dentro do arquivo disponibilizado acima.

Para mim, ao clicar num link maito:, ele sempre abre uma nova aba no firefox. Se não abrir, troque o comando
no script pelo exibido abaixo (digite numa única linha):
firefox -remote “openurl(https://mail.google.com/mail?view=cm&tf=0&to=`echo $1 | sed ’s/mailto://’`,new-tab)”

Fonte: http://www.howtogeek.com/howto/ubuntu/set-gmail-as-default-mail-client-in-ubuntu/


Ferramentas para MatLab no Linux

26, Março 2009

Veja o artigo no meu novo blog.

Bem, mais um semestre começa no mestrado em Engenharia Elétrica na UnB. Esse semestre estou cursando as disciplinas de Sistemas Multiagentes (agentes inteligentes, agentes móveis, multi agentes, programação distribuída, inteligência artificial), Introdução a Sistemas Inteligentes (inteligência artificial, redes neurais, lógica fuzzy, algoritmos genéticos) e Processamento de Imagens.

Sem querer, todas as disciplinas envolvem álgebra relacional, que estou tendo que estudar novamente, pois vi isso a muito tempo na faculdade e não apliquei pra nada no meu curso de tecnologia (infelizmente). Por isso, o título do post, sobre MatLab. Inicialmente eu não estava querendo trabalhar com MatLab, eu queria implementar tudo em C ou Java. Até que um amigo me falou que algo que você faz em MatLab em segundos, você vai gastar muito mais tempo fazendo em outra linguagem. Depois disso, vi a necessidade e importância de se aprender MatLab, que no fim das contas não é nada difícil e agiliza muito o desenvolvimento dos trabalhos.

Para quem não sabe (como eu não sabia), o MatLab é ideal para trabalhar operações sobre matrizes, como somas, multiplicações, inversão e tudo o mais. Porém, esta é uma ferramenta proprietária e para Windows. No Linux temos duas ferramentas semelhantes: o Octave e o SciLab.

Inicialmente testei o octave, que baixei via apt-get. Ele é uma ferramenta de linha de comando (o MatLab nunca vi). O Octave tem uma interface gráfica chamada QtOctave (que usa a biblioteca gráfica Qt4). Acho que baixei ele também pelo apt-get. O SciLab possui uma interface gráfica simples, mas as principais tarefas nessas ferramentas são feitas a partir de comandos em uma tela semelhante a um terminal. No caso do SciLab, ele lhe permite executar comandos do sistema operacional de dentro dele. Os comandos linux que testei e funcionaram foram pws, cd e ls. Outros como rm não funcionaram. Ele permite também, depois que você digitou o inicio de algum comando, pressionar tab para exibir o recurso de autocompletar, válido também para completar nomes de arquivos e diretórios do sistema operacional.

Bem, a grande finalidade dessas ferramentas é facilitar a realização de operações com matrizes, como já citei. Para iniciar o Octave basta digitar num terminal a palavra octave e para o SciLab, digitar scilab. Testei inicialmente o Octave. Conseguir facilmente criar duas matrizes a e b (por exemplo, a = [1 2 3; 4 5 6], matriz de 2 linhas e 3 colunas), mas ao tentar multiplicar duas matrizes compatíveis (ou seja, a quantidade de linhas da segunda tem que ser igual a quantidade de colunas da primeira) não consegui. Tentei o operador padrão de multiplicação *, fazendo a*b, mas não funcionou. Tentei o help via linha de comando e nada. Obviamente se eu pegasse qualquer manual básico iria conseguir. Porém, parti logo para o SciLab pois não achei o octave intuitivo.

No SciLab, meu primeiro teste, a multiplicação de duas matrizes, funcionou de primeira. Assim, achei a ferramenta mais intuitiva, pois nunca tive contato com MatLab e sua linguagem, apenas instalei o programa e sem nenhuma consulta a manual algum, consegui fazer uma operação básica. Assim, recomendo o SciLab, que funciona em Windows, Linux e Mac.


Update com Join no MySQL

22, Março 2009

Como fazer um update em uma tabela do MySQL, com base no valor de um campo de outra tabela com a qual essa se relaciona? Veja o modelo a seguir:

update TabelaQueDesejaAtualizar, TabelaComAQualVaiRelacionar
set TabelaQueDesejaAtualizar.CampoParaAtualizar = TabelaComAQualVaiRelacionar.CampoComValorDesejado
where TabelaQueDesejaAtualizar.CampoParaRelacionar = TabelaComAQualVaiRelacionar.CampoParaRelacionar;

Exemplo:

update Funcionario, PessoaFisica
set Funcionario.codPessoa = PessoaFisica.codPessoa
where Funcionario.codPessoaFisica = PessoaFisica.codPessoaFisica;

Considerando as tabelas Funcionario e PessoaFisica, atribui ao campo codPessoa na tabela Funcionario o valor do campo codPessoa da tabela PessoaFisica, levando em conta que as tabelas Funcionario e PessoaFisica possuem um relacionamento por meio do campo codPessoaFisica existente nas duas tabelas. Desta forma, na tabela Funcionario, no campo codPessoa, teremos o mesmo valor deste campo no registro correspondente na tabela PessoaFisica.

Claro que esse campo codPessoa na tabela Funcionario não faz nenhum sentido e é totalmente redundante, sendo que o mesmo existe na tabela PessoaFisica. O exemplo foi apenas para mostrar como funciona um update com “join” no MySQL, e que deve funcionar em outros bancos. Eu lembro que no SQL Server havia uma forma diferente de se fazer isso, mas não lembro exatamente como.


Curso Online Grátis de Inglês e outras línguas

21, Março 2009

Veja este artigo no meu novo blog.

O site Live Mocha pode ser muito útil para quem deseja aprender uma língua como o inglês. É um curso online gratuito, onde você tem materiais como de um curso regular, para poder aprender sozinho.

Você pode ainda conversar com outros estudantes e com pessoas nativas na língua que você está aprendendo, além de poder praticar redação e submeter para que alguém corrija pra você. Não encontrei nenhum recurso para conversas com voz, pois só falando mesmo pra conseguir fluência na língua. Mas acredito que é um sistema muito bom e que vale a pena dar uma olhada. Eu estou há alguns meses fazendo o curso online da EnglishTown, que é um curso pago, e excelente. Nunca tive tanto progresso no meu inglês como tive lá. O único problema é que a ferramenta para as aulas de conversação ao vivo, com voz, é somente para Windows e o site só funciona no Internet Explorer, mas isso não foi um impecilho.


GMail, muito mais do que um WebMail – A bíblia (ou quase) :)

21, Março 2009

Acess o artigo no meu novo blog.

Hoje descobri que o tão sensacional GMail é mais sensacional ainda. Mas nós brasileiros, que usamos ele em português, não tinhamos acesso às últimas novidades em desenvolvimento desta mavarilhosa aplicação web. Porém, com o aniversário de 5 anos do GMail, dia 01/04/2009 esses recursos passaram a estar disponíveis em 49 idiomas.

Eu resolvi ir nas configurações do GMail e alterar o idioma para inglês (apesar de estar disponível em Português agora). No canto superior direito tem um link Configurações para você fazer isso. Após mudar o idioma para inglês, salvar e voltar para página inicial do GMail, você já vai perceber dois links novos no canto superior direito: New stuff in Labs!, que mostra as novidades para o GMail que estão em desenvolvimento, mas que você já pode testar, e o link Labs GMail Labs para você habilitar esses novos recursos no seu GMail.

Um dos mais fantásticos recursos, ao meu ver, é o GMail Off-line, que permite que você leia seus emails mesmo estando off-line. Ao habilitar este recursos, aparecerá um novo Link Off-line no canto superior direito do GMail. O segredo para a navegação off-line é que este recurso instala um plugin para o seu navegador (Firefox, Safari ou IE, no Linux, MAC, Windows, Windows Mobile ou Android), chamado Google Gears, que adiciona novos recursos a ele, para permitir que aplicações Web possam ter maior interação com o sistema operacional, como se fossem uma aplicação desktop, claro que com muitas restrições de segurança e solicitações de confirmação nas ações a serem executadas. Após instalação e configuração do GMail off-line, as suas mensagens são baixadas para o seu computador para que você faça acesso off-line, podendo ler mensagens e enviar, sendo que estas ficam na caixa de saída, até que você se conecte a internet, quando são despachadas automaticamente. Você só não pode mandar mensagens com anexo enquanto estiver off-line, por enquanto é claro :) . Após configurar o serviço, um novo ícone ao lado do GMail Labs mostrará o status do serviço (sincronizado, sincronizando, etc).
Bem, já que você ia perguntar, vou falar antecipadamente: as mensagens para acesso off-line são salvas no seu computador. Nesta página você pode ver onde elas são salvas, dependendo do seu SO e browser. Na Configuração do Gmail Off-line você pode ver mais detalhes. Um FAQ sobre o recurso está disponível aqui.

O Google Calendar e o Google Docs em inglês também possuem o recurso para trabalhar off-line, mas não permite que os compromissos agendados sejam alterados enquanto off-line, obviamente sendo apenas um questão de tempo para que este recurso seja implementado.

Outro recurso também espetacular é o Undo Send, que depois de clicar no botão Send para enviar o email, lhe dá cinco segundos para desistir, exibindo um link “Sending… Cancel” que você pode clicar para cancelar o envio. Vai dizer que você nunca mandou um email e só depois de clicar em Send é que percebeu que o email era pra pessoa errada ou que haviam erros grosseiros no texto?

O recurso de Tasks adicona um novo link do lado esquerdo, abaixo dos Contatos, para você criar anotações rápidas.

O Google Calendar gadget integra o Google Calendar ao GMail, criando um novo box para adicionar novos compromissos e visualizá-los diretamente no GMail.

Outros recursos bastantes legais são o YouTube previews in mail, que permite exibir vídeos do YouTube, em links recebidos por email, direto no GMail, e o Picasa previews in mail, que permite ver figuras do Picasa.

O Pictures in chat permite ver a foto da pessoa com quem você está conversando no GMail.

O Right-side chat altera o visual do GMail, colocando o chat do lado direito. O Right-side labels faz o mesmo para os Labels.

O Forgotten Attachment Detector decteca quando você faz referência a uma anexo na mensagem e esqueceu de adicionar o mesmo, evitando que você envie a mensagem sem ele. O problema é que ele só detecta se você esqueceu o anexo se você escrever a frase “I have attached” ou “is attached” em algum lugar da sua mensagem. Outras variações como “See the attachment” não funcionam. O ideal é que você pudesse definir quais as frases que definem que você está enviando um anexo, e assim, se o plugin encontrar uma dessas frases dentro do seu texto e você não tiver anexado nada, lhe avisar antes do envio, algo que é bem simples de ser implementado.

O Create a Document permite criar um documento no Google Docs, a partir de uma conversa de email.

Senti falta ainda de um recurso para integrar o Google Reader, leitor de RSS, no GMail, mas acredito que é questão de pouco tempo para lembrarem disso.

Há algum tempo eu encontrei um programa chamado GMDesk, uma aplicação desktop desenvolvida em Adobe Air (necessitando a instalação do runtime do mesmo), que permite que você acesse várias das aplicações do Google como GMail, Google Calendar, Google Reader e outras, a partir de um programa instalado no seu computador. Baixei e instalei o mesmo e não vi nenhuma vantagem, pois com o recurso de abas existentes em todos os navegadores atuais, não há nenhum problema em acessar estes sistemas diretamente do browser. E além de agora termos esses diversos recursos dentro do próprio GMail. Mas fica a dica, alguém aí pode gostar do GMDesk.

No GMail ainda há o recurso de permitir fazer video chamadas, mas parece que só está disponível para Windows, infelizmente não funciona no Linux, ainda.

Nas configurações você tem um recurso de Contas, onde você pode receber todos seus emails de outras contas, como do Yahoo e email da empresa onde você trabalha, tudo diretamente no GMail. Algo bastante interessante deste recurso é que você pode criar contas para os emails externos que deseja receber no GMail e cadastrar quais destas contas você pode utilizar para enviar email’s a partir do GMail. Assim, se você quer enviar um email pro seu chefe e deseja enviar não com seu email do GMail mas sim com seu email do trabalho, este recurso é útil pra isso. Habilitando essas contas de envio de email, no campo De, na página de envio de email, você terá listados o seu email do GMail e os que você cadastrou.

Um recurso padrão bem útil, que já está disponível há algum tempo na versão em português do GMail, é o de visualizar arquivos PDF’s diretamente no GMail, sem precisar baixá-lo, o que é muito útil.

Com o recurso de Labels você pode separar os email’s das diferentes contas que estão sendo recebidos pelo GMail e assim manter tudo organizado, o email’s com assuntos de trabalho não ficarão com misturados com seus email’s particulares, juntos com as piadas e links para vídeos do YouTube que você recebe :) .

Bem, quanto aos recursos do GMail apresentados, acredito que é uma grande evolução nos WebMail. Há alguns anos não sei mais o que é usar clientes de email como Mozilla Thunderbird ou Microsoft Outlook Express, como também não acesso outros WebMails para checar todas as minhas contas de email, faço isso direto do GMail.
Como podem ver, você pode tirar muito mais proveito do GMail do que achava. Pra mim, atualmente sinônimo de email é gmail, assim como sinônimo de site de busca é google