Archive for the hardware Category

uma aplicaçao cliente/servidor com monitoramento web para gps

Posted in aleatorios, hardware, projetos, utilitarios with tags , , , , , , , , , , on 01-03-2009 by sirboderafael

ja faz algum tempo que retomei o contato com o meu amigo Mateus Mendes, que atualmente esta desenvolvendo um projeto de monitoramento utilizando o sistema global de posicionamento, famoso GPS

fui convidado para participar do projeto para facilitar as coisas, computacionalmente falando… e tambem por ja ter fritado bastante em projetos passados, quando ainda moravamos em STZ, interior de SP…

as metas iniciais do projeto foram:

  • pegar as informaçoes do modulo GPS
  • comunicar o modulo GPS com o modulo GPRS
  • transmitir e capturar dados via internet atraves dos dois modulos conectados
  • capturar as informaçoes enviadas atraves de um serviço instalado em uma maquina, utilizando o protocolo UDP
  • gravar os dados recebidos em algum local
  • exibir os 10 ultimos dados gravados, atualizados de 5 em 5 segundos em uma pagina da web

bom… eh ai que entra a historia do cliente/servidor que gostaria de compartilhar… utilizei varias fontes espalhadas pela web para conseguir as informaçoes necessarias… fiz algo bem simples, que eh somente um alfa para conseguirmos testar as coisas, sem pensar em segurança e em nada demais… conseguimos um esqueminha de comunicaçao bem simples e legal…

tudo foi escrito em C e isso nos traz o beneficio de ser algo realmente rapido… entao nao teremos a preocupaçao com gargalos assim tao cedo… hahahah! (jah to falando como se tivessemos milhoes de acessos! hehehe)

para os interessados, aqui estao os codigos fonte do servidor e do cliente

a ideia eh abrir uma porta (no caso foi a 25000) e utilizar o protocolo UDP para a comunicaçao… mas porque UDP? eh porque o modulo GPRS vai enviar os dados de 5 em 5 segundos aproximadamente… e pouco me importa saber se o dado chegou ou nao, assim como a ordem de trasmissao dos pacotes… entao, eh por isso que nao escolhemos TCP, que no caso seria como matar uma mosca com uma bazuca… (alem de consumir mais banda e consequentemente custar mais caro pra transmitir os dados, uma vez que atualmente, as operadoras de telecomunicaçoes cobram a mensalidade de acordo com o volume de dados transmitidos)

para compilar eh simples… basta fazer:

bode@bodacious:~/projetos/gps$ gcc -o server udpserver.c
bode@bodacious:~/projetos/gps$ gcc -o client udpclient.c

agora temos um cliente, que maravilhosamente se chama: client e um servidor, que milagrosamente se chama server… beleza na montanheza?

para botar seu servidor para rodar, utilize o comando:

bode@bodacious:~/projetos/gps$ ./server >> log 2>&1 &


obs-1.: isso significa que estamos redirecionando com este comando, a saida padrao e a saida de erros padrao para um arquivo de logs (atraves de uma concatenaçao com seu conteudo atual)… tambem estamos lançando o processo em background… se quiser saber mais sobre os redirecionamentos, aconselho voce a dar uma olhada em um post escrevi sobre isso

o monitoramento via web eh feito com uma pagina contendo um script php, que tambem esta disponivel para download


obs-2.: como voces podem observar, o esquema em geral eh beeeem simples… o monitor nao tem formataçao CSS nem atualizaçao AJAX… na verdade nao estamos nem ai pra isso (por enquanto)… o refresh eh feito com meta-tag mesmo…. enfim… acho que nao preciso explicar pra ninguem o sentido da palavra alfa…

olhando o codigo vemos que o log eh gravado no mesmo diretorio que o servidor reside e o script pega esse mesmo log, que esta no mesmo diretorio em que reside este tambem… entao chegamos a brilhante conclusao de que tudo foi jogado no mesmo diretorio que um virtual host tenha acesso… entao… “crianças, soh façam isso em casa se forem testar alguma coisa… do tipo experimento sem compromisso…”

se voce montou seu ambiente, que deve de alguma forma se parecer com o que descrevi, jah eh possivel acessar seu monitor PHP atraves de seu servidor web e ativar seu cliente UDP no console… quando digitar alguma coisa e pressionar enter, a informaçao ira viajar ateh o socket de seu servidor UDP, que esta escutando na porta 25000, uma informaçao sera gravada no log e como seu monitor PHP se atualiza mostrando os 10 ultimos dados recebidos a cada 5 segundos… logo logo, emocionantemente, sua informaçao estara pipocando em seu navegador…

soh pra constar… o hardware jah eh capaz de se comunicar com esse serviço que implementamos… o proximo passo que darei em minha vertente do projeto eh integrar as coordenadas capturadas com o google maps… dai a coisa vai começar a ficar mais interessante… mas… como dizem, isso vai ser suave na nave!

eis a previa do nosso prototipo fisico:
Free Image Hosting at www.ImageShack.us

assim que tiver mais novidades sobre o projeto postarei aqui… ok?

[]’s!
t++!

Anúncios

testando sua memoria ram com o memtest86

Posted in hardware, kernel, utilitarios with tags , , , , , , , , , , , , on 28-02-2009 by sirboderafael

para aqueles que desejam verificar se sua memoria ram esta funcionando corretamente, existe um utilitario chamado memtest86.

ele deve ser carregado na hora do boot, no lugar do sistema operacional… para aciona-lo pode-se utilizar disquete, cdrom, pendrive ou mesmo o gerenciador de boot (como o grub ou o lilo — que verificaremos mais adiante)…

os testes realizados, podem expor falhas de maquinas cujo comportamento se pareça normal, mas que vez ou outra mostram problemas, que aparentemente sao vindos do alem…

uma vez que os endereços defeituosos sao identificados, é mostrada uma saida formatada para um patch que se aplica no kernel do linux, chamado BADRAM, cujo intuito eh permitir o uso de pentes de memoria defeituosos, excluindo-se da faixa de endereços disponiveis aquelas porçoes identificadas como defeituosas… mas isto eh uma tarefa dedicada somente aos corajosos de plantao…

seu funcionamento se da atraves da escrita de inumeros padroes de dados em cada endereço de memoria… entao o dado escrito eh comparado com o dado esperado e assim ocorre a verificaçao de erro… eh um processo exaustivo, e como jah foi bem frisado, o intuito eh checar cada porçao da memoria e encontrar areas defeituosas… claro, o algoritmo nao eh simples assim, foi soh uma tentativa de dizer a voces: “olha, ele testa a parada pra caramba e se ele nao achar defeitos, provavelmente nenhuma outra ferramenta os achara…” quem quiser saber quais os algoritmos utilizados e as politicas de asserçao de erros, tudo esta bem documentado em uma seçao especial no site do projeto.

a titulo de curiosidade, mas soh para os fritoes de plantao… esses testes tambem podem revelar se sua memoria continua funcionando bem quando overclockada… hahaha! o memtest86 permite que voce mude a frequencia de trabalho de sua memoria… entao… nao perca tempo e prepare um omelete em cima de seu pente de memoria ram!

de boa na canoa? vamos logo para a parte da hora do negocio, que eh testar esse testador maluco! =)

baixe o codigo fonte:

bode@bodacious:~/pacotes$ wget http://www.memtest86.com/memtest86-3.5.tar.gz

extraia, entre no diretorio do pacote e compile, pois ele jah vem com o Makefile:

bode@bodacious:~/pacotes$ tar vxf memtest86-3.5
bode@bodacious:~/pacotes$ cd memtest86-3.5
bode@bodacious:~/pacotes/memtest86-3.5$ make

apos terminada a compilaçao (sem erros), iremos colocar nosso memtest86 como uma opçao de inicializaçao em nosso lilo… para isso, basta copiar o arquivo (imagem de boot) memtest.bin que foi gerado, para o diretorio /boot… arrume suas permissoes, por questoes esteticas — hahaha, essa foi boa heim galera! (soh root pode ler e escrever, os demais soh podem ler…) ok?:

root@bodacious:/home/bode/pacotes/memtest86-3.5# cp memtest.bin /boot
root@bodacious:/home/bode/pacotes/memtest86-3.5# chmod 644 /boot/memtest.bin

para que a bagaça seja efetivada, vamos colocar as devidas linhas, responsaveis pela opçao de inicializaçao do memtest86, no final do arquivo /etc/lilo.conf:


image = /boot/memtest.bin
    root = /dev/hda2
    label = memtest86
    read-only


obs.: hda2 eh a partiçao onde se encontra a raiz do meu Slackao, por isso substitua de acordo com sua instalaçao (olha, rimou!)… mas sem lambanças, por favor! =)

reconstrua seu MBR com as modificaçoes que adicionamos agora… para isso, rode:

root@bodacious:/home/bode/pacotes/memtest86-3.5# lilo

bom, depois disso o resto eh historia!!! reinicie sua maquina e escolha no menu de boot do lilo a opçao memtest86… durante os testes voce ira se deparar com uma tela semelhante a esta:

caso seu pente de memoria ram esteja baleado, a tela ficara deste jeito… eh… ¬¬ eu realmente espero que voce nao passe por isto:

mas se passar… ja sabe… o titulo de corajoso pode servir depois de aplicar o patch em seu kernel, recompilar, colocar os endereços invalidos em blacklist… dae sim, pode se sentir suave na nave!!!

[]’s!
t++!