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.


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.


ls, clear e outros comandos do Linux no Windows

2, Março 2009

Você tá tão acostumado com Linux que quando está num prompt de comando Windows, a toda digita ls ou clear, sendo que estes comandos só existem no Linux, sendo respectivamente dir e cls no Windows?

Pois bem, para ter esses comandos e qualquer outro do linux que tenha um similar on Windows é bem simples. Crie um arquivo .bat na pasta system32 do Windows com o nome de ls.bat, sendo que seu conteúdo deve ser apenas a palavra (comando) dir. Para o comando clear, crie um arquivo bat de nome clear.bat na mesma pasta, sendo que seu conteúdo deve ser a palavra (comando) cls.

Agora, a partir do prompt do Windows você pode digittar ls para executar um dir ou clear para executar um cls.

Bem esta é a forma mais lógica que você pode resolver isso, mas há outra maneira que não está na cara que é abrir o arquivo c:\AutoExec.bat no bloco de notes e adicionar aliases para os comandos desejados como mostrado abaixo:

@doskey n=notepad
@doskey ls=dir
@doskey clear=cls

Onde ao digitar n, no prompt de comando, executará o notepad, ls executará um dir e clear, um cls.

Para que entre em ação essas configurações, sem precisar reinicar o PC, basta no prompt de comando executar c:\AutoExec.bat

No Linux pode-se utilizar o mesmo recurso de aliases. Para que isso valha para todos os usuários, edite o arquivo /etc/bashrc e adicione os aliases. Podemos adicionar aliases dos comandos Windows, citados anteriormente, para que funcionem no Linux, como mostrado abaixo:

alias cls=”clear”
alias dir=”ls”


Acessar partições ext2 e ext3 no Windows

30, Janeiro 2009

Para acessar partições ext2 e ext3 no Windows, você pode instalar o programa Ext2 IFS for Windows. Ele é um programa freeware que permite acessar esses sistemas de arquivos do Linux, a partir do Windows Explorer, permitindo tanto acesso de leitura como escrita. Porém, para partições Ext3, o sistema as monta como Ext2, segundo o FAQ no site do programa.

Acessando partições Ext2/Ext3 no Windows

Acessando partições Ext2/Ext3 no Windows Explorer


Problemas na instalação de drivers do Windows XP no Notebook HP Pavilion dv6345

30, Janeiro 2009

Depois de resolver reinstalar o Windows XP no meu notebook HP Pavilion dv6345, tive uma grande surpresa. Alguns drivers como o da placa de som não instalavam de maneira alguma. Eu tenho os drivers do Windows XP que baixei no próprio site da HP para o modelo que citei. Para instalação do driver no Windows XP SP2, é necessário a instalação do pacote “Microsoft Universal Audio Architecture (UAA) Bus Driver for High Definition Audio”. Pelo que cita na descrição do instalador, é um pacote de melhorias e correções para o XP SP2. Porém, mesmo após instalar esse pacote, o driver da placa de som (Conexant Intel 82801GBM ICH7-M High Definition Audio Controller) não instalava, o instalador gerava exibia a mensagem de erro “Falha na instalação do driver: Impossível localizar o dispositivo para este driver”, como se eu estivesse instalando o driver errado.

Fiz várias buscas no google e algumas davam a entender que o problema era do SP3 do Windows XP, porém, mesmo com o SP2 o erro ocorria.

No Gerenciador de Dispositivos do Windows, a placa de som aparecia em “Outros dispositivos” com uma exclamação e uma interrogação, indicando que havia algum problema com o driver.

Depois de muita pesquisa e nenhuma solução, me deu uma luz. Ao executar o instalador do driver (Conexant Intel 82801GBM ICH7-M High Definition Audio Controller), os arquivos são descompactados em “c:\swsetup\SP33443″. Daí, fui ao “Painel de Controle”, “Adicionar Hardware”. Na primeira tela cliquei em avançar, na segunda informei que já havia conectado o hardware, na terceira escolhi “Adicionar novo dispositivo de hardware”, ignorando o dispositivo que aparecia com uma interrogação e exclamação no início da lista. Na próxima tela escolhi “Instalar o hardware que eu selecionar manualmente em uma lista”. Escolhi “Controlador de som vídeo e jogo” e na próxima tela cliquei no botão “Com disco” e selecionei a pasta “c:\swsetup\SP33443″. Pronto, aí apareceu o nome da placa de som e bastou avançar para concluir a instalação e a placa funcionar imediatamente.

Para o modem teve o mesmo problema, mas como não o uso, não me preocupei em instalar, mas deve funcionar seguindo a mesma lógica.


Alterando a pasta de dados do PostgreSQL 8 no Windows

22, Fevereiro 2008

Bem, hoje vou postar algo sobre uma necessidade que tive no PostgreSQL no Windows, e que porém, deu bem mais trabalho de resolver do que com o MySQL, por exemplo. Eu tenho o costume de colocar todos meus dados em uma unidade D: , para evitar de precisar formatar o Windows ( o que não é raro :( ) e perder arquivos importantes. Assim, sempre altero a pasta padrão onde os servidores de bancos de dados que uso (Firebird, SQL Server, MySQL e PostgreSQL) para esta unidade para evitar de perder meus bancos de dados.

Para realizar esta tarefa no PostgreSQL, logo procurei um arquivo postgresql.conf. Logo encontrei o arquivo na pasta data de instalação do PostgreSQL. Porém, ao encontrar, descomentar e alterar a chave data_directory no arquivo, o servidor não iniciou mais. Alterei as permissões da pasta, tentei colocar barra no final do endereço da pasta, tentei usando as barras \ e / e nada.

Na luta em tentar descobrir como resolver o problema, olhando no serviço do PostgreSQL na janela de administração dos serviços do Windows, verifiquei que o endereço da pasta de dados era passado por parâmetro para o serviço. Logo, pensei em reinstalar o serviço. Para isto, depois de buscar no google e encontrar apenas pistas de como resolver, encontrei na pasta bin do PostgreSQL o utilitário pg_ctl, utilizado para  configurar e controlar o serviço do PostgreSQL. Vendo os parâmetros disponíveis, chamando pg_ctl –help, logo descobri como remover e reinstalar o serviço, que deve ser feito com um usuário administrador.

Assim, abra o prompt de comando na pasta bin de instalação do PostgreSQL.
Para  remover o serviço digite:
  pg_ctl unregister -N “nome_serviço_pgsql” -U WinUser  -P SenhaWin

nome_serviço_pgsql é o nome do serviço do PostgreSQL nos serviços do Windows. Para saber qual é esse nome, na janela de adminsitração de serviços do Windows, encontre o PostgreSQL e pressione ALT+ENTER para abrir as propriedades do serviço. Na janela que abre, na primeira aba, existe um campo “Nome do serviço” contendo o nome que deve ser utilizado para remover o serviço.  Veja exemplo da utilização do comando:

    pg_ctl unregister -N “pgsql-8.2″ -U postgres -P postgres

WinUser deve ser o nome do usuário do Windows, criado para rodar o PostgreSQL. Este usuário foi definido durante a instalação do PostgreSQL e o nome padrão é postgres. SenhaWinUser é a senha deste usuário, também definida durante a instalação do PostgreSQL.

Para  registrar o serviço digite:
  pg_ctl register -N “nome_serviço_pgsql” -U WinUser  -P SenhaWinUser -D “diretorio_desejado”

diretorio_desejado deve ser o diretório onde deseja que os bancos do PostgreSQL sejam salvos. Não esqueça de dar permissão total para o usuário postgres neste diretório.

nome_serviço_pgsql é o nome que você deseja dar para o serviço a ser registrado.
Veja exemplo de utilização do comando abaixo:

  pg_ctl register -N “pgsql8″ -U postgres -P postgres -D “D:\PostgreSqlData\”

Agora, você precisa copiar (ou recortar) todos os arquivos da pasta Data de instalação do PostgreSQL para a pasta que você especificou no parâmetro -D .

Depois reinicie o servidor PostgreSQL e é isso. T+


WinSquid – Servidor Proxy para Windows

13, Janeiro 2008

Veja artigo no meu novo blog.

O Squid é um servidor proxy para sistemas Linux/BSD bastante conhecido e utilizado. Não sou especialista em redes de computadores, mas entendo um pouco dessa área, até porque tenho a filosofia de que é preciso saber um pouco de tudo e muito de um pouco. Algumas das funções de um servidor proxy são: filtrar o conteúdo que chega da internet a uma rede local, fazer cache das páginas visitadas para aumentar a velocidade e otimizar a utilização da banda. A filtragem do conteúdo que chega da internet aos computadores de uma rede é utilizada para impedir o acesso à páginas indevidas, que não são permitidas pelas políticas de uma empresa, como páginas pornográficas, de vídeos ou pirataria. O Squid realiza este trabalho muito bem. Como não trabalho na área de redes, nunca tive a necessidade de utilizar tal tipo de software para as finalidades citadas.

Já tinha utilizado um servidor proxy freeware, bem simples, para Windows, o AnalogX Proxy, apenas para compartilhar a conexão de internet de um modem ADSL bright (um modem roteador já possui um software nele que permite o compartilhamento da conexão). Porém, há alguns dias uma prima me pediu que compartilhasse a internet da casa da minha mãe com ela (sendo que as duas são vizinhas). Minha mãe possui um modem roteador que permite este compartilhamento sem softwares adicionais como um servidor proxy, porém, minha prima pediu que eu bloqueasse o acesso a sites pornôs, para que o filho dela, pré-adolescente, não ficasse visitando este tipo de site. Então tive que procurar na net um servidor proxy para Windows, que realizasse a tarefa de filtrar o tráfego da interet.

Em pouco tempo, procurando no google, encontrei o WinSquid, um “clone” do Squid para Windows. Não sei se ele faz tudo o que o Squid faz, mas para o que eu precisava ele foi perfeito. Ele possui um instalador que automatiza a instalação, porém, apesar de ele permitir alterar o caminho de instalação, a versão que utilizei (não lembro qual o número) não funcionou em uma pasta diferente da padrão, pois os arquivos de configuração não foram alterados para o caminho que escolhi durante a instalação. Sorte que detectei o problema rápido e reinstalei usando a pasta padrão. Nunca tinha trabalhado com Squid na vida, mas rapidamente encontrei documentação no site oficial do WinSquid mostrando como configurar o servidor, especificamente na seção de configuração do controle de acesso. Pelo jeito a configuração deve ser semelhante a do Squid no Linux/BSD. Em pouco tempo estava com o servidor proxy filtrando o conteúdo vindo da internet. De forma simples inclui-se as regras negando o acesso a páginas com conteúdo indesejado.

O problema que encontrei foi a necessidade de reiniciar o computador para que as novas regras passassem a ter efeito, pois pelos serviços do windows não é possível reiniciar o WinSquid (até para evitar que os usuários espertinhos façam isso). Não me preocupei em resolver isto pois estava com pressa, mas deve ter uma forma, e simples, de fazer isso. Testei e recomendo.


Identificadores lowercase em MySql no Windows

29, Agosto 2007

O MySql, por ser um banco muito ágil, leve e bastante popular, está disponível em diversos planos de hospedagem de sites por aí. Eu particularmente prefiro o PostgreSQL e o Firebird, pois possuem recursos de views, stored procedures e triggers a bastante tempo, coisas que o MySql só veio ter na versão 5.

Pelo fato de o MySql ser incluído sem custo nos planos de hospedage, tive que utilizá-lo num sistema web de gerenciamento financeiro que estou desenvolvendo para um cliente, utilizando Borland Developer Studio 2006, com linguagem ASP.NET e Delphi.

O MySql no Windows é case insensitive, porém, em um servidor Linux é case sensitive. Aí começam os problemas. No Windows, o padrão do MySql é criar os identificadores (tabelas, nomes de campos e tudo mais) em minúsculas (lower case). Mesmo que você coloque o nome de uma tabela, por exemplo, entre apóstrofos, o MySql no Windows cria a tabela com nome em minúsculas. Assim, mesmo fazendo create table Cliente …. ou create table `Cliente`…, ele criará a tabela como cliente (tudo minúsculo). Ao fazer a sincronização da estrutura do banco de dados de desenvolvimento, no servidor Windows, para um servidor Linux de produção serão descobertos os problemas. Como no Linux o MySql, por padrão, obedece o case dos nomes dos objetos, se você tem uma tabela Cliente e gerar um script sql a partir do seu banco no servidor Windows com uma instrução como drop table cliente a mesma não será executada, pois no banco no servidor Linux não existe uma tabela cliente e sim uma tabela Cliente.

Desta forma, o script sql gerado no seu banco no servidor Windows deverá ser todo modificado manualmente para poder rodar no servidor MySql no Linux.

Depois de estar de saco cheio de ter que ficar ajustando script na mão, resolvi procurar na net como resolver isto, até que encontrei algumas perguntas em fóruns que me levaram a este link no site do MySql. Lá mostra que existe um parâmetro que você pode usar no MySql para definir este comportamento. Assim, resumindo, você precisa adicionar a linha a seguir no arquivo my.ini, localizado na pasta de instalação do mysql, que sendo a versão 5, normalmente está em c:\arquivos de programas\mysql\mysql server 5\

set-variable = lower_case_table_names=0

Onde o parâmetro lower_case_table_names define se os identificadores ficarão todos em minúsculas ou não. Assim, defini 0 para indicar que não.

Em Windows, por ter um sistema de arquivos case insensitive, segundo o site do MySQL, forçar os identificadores a serem case sensitive, mudando lower_case_table_names para zero, pode corremper índices ao acessar tabelas MyISAM com o case diferente do que foi definido. Mas como não uso tabelas MyISAM, não tenho com o que me preocupar.

Mais informações em http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

Isto foi o que aprendi de novo hoje.
Espero que ajude muita gente.
T+