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.


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


Apostila Básica sobre Manutenção de Computadores

24, Novembro 2008

Vasculhando meus arquivos, encontrei uma apostila sobre Manutenção de Computadores que elaborei em 2006 quando estava fazendo um curso na Digitec Informática, em Palmas-Tocantins.

A apostila é bem básica, possui muitas figuras que eu mesmo fiz, e não possui referências, pois foi elaborada apenas pelas notas de aula do professor André (cujo sobrenome não lembro e não tenho, e no certificado também não consta). Infelizmente a escola não tem um site para eu colocar aqui no post, mas o curso era excelente, faltou apenas ter uma apostila da própria escola, com as devidas referências. Esta apostila que fiz valeu como avaliação teórica do curso.

Há muito tempo não trabalho mais nessa área, assim, não lembro de muita coisa que tem na apostila, mas pode ser útil para iniciantes, principalmente na parte de eletricidade básica e arquitetura de computadores.

Espero que seja útil.
Clique aqui para visualizar a apostila.


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+