quarta-feira, 28 de dezembro de 2011

Shield Ethernet DFRobot - Problemas com SD Card

Depois de perder algumas horas, tentando fazer uma gravação no cartão SD, utilizando os exemplos da IDE do Arduino sem alteração nenhuma e uma placa Shield Ethernet DFRobot descobri que a mesma não possui suporte ao cartão SD. A placa vem com o soquete para conectar o SD Card, porém o CI Wiznet 5100 vem com um curto circuito de fábrica.

Mesmo no desenho do fabricante é possível ver o curto circuito de longe. Abaixo a foto do meu protótipo.



Esquema do CI Wiznet 5100:



Os pinos curto circuitados são os pinos 55 e 54.  O pino 54 é o ADDR0 que se refere ao endereço zero do barramento de comunicação, enquanto que o pino 55 se refere ao CS (Chip Select)  utilizado no SD Card. O CS deve sair do estado 0 e ir para o estado 1 (5V) para habilitar o SD Card enquanto que o pino de endereço de dados ADDR0 deve oscilar na frequencia de Clock conforme a transmissão dos dados. Outro detalhe é que a maioria dos pinos que não são utilizados, por default, se mantém em nível lógico 0. Portanto ambos não poderiam estar conectados diretamente.

Abaixo mais um link para referência:

http://www.dfrobot.com/index.php?route=product/product&path=35_39&product_id=52


segunda-feira, 26 de dezembro de 2011

Convertendo MySql em SqlServer 2008

Um problema que pode ocorrer devido ao crescimento do banco de dados, uma simples necessidade de mudança de sistema operacional ou até mesmo uma simples mudança de máquina pode gerar a necessidade de mudança do tipo de banco de dados. Existem scripts prontos e softwares que fazem a conversão de um banco para outro onde os tipos de dados podem ser diferentes e precisam ser adequados. Seguem os sites para conversão.

http://gathadams.com/2008/02/07/convert-mysql-to-ms-sql-server/

http://www.spectralcore.com/fullconvert/tutorials/convert-mysql-to-mssql-sql-server.php

http://www.baixaja.com.br/downloads/Windows/Network-Internet/Other/MySQL-MS-SQL-Server-Import-Export_46970.html

http://www.aspfree.com/c/a/MS-SQL-Server/Convert-MySQL-to-an-MS-SQL-Server-2008-Database/


Descriptografando Senha MD5

Até algum tempo atrás uma das formas mais fortes de criptografia era o MD5. O MD5 hoje é extremamente fácil de ser quebrado e vários sites online fazem este trabalho. Quando uma senha de um usuário é salva em um banco de dados ela deve ser criptografada para dificultar o acesso de pessoas que possam acessar a base de dados. Segue a dica de site para descriptografar senhas recuperadas de bancos de dados ou que são inseridos dentro de códigos de programas sistemas.

http://www.md5decrypter.com/

No caso, uma senha pode ser algo como: 21232f297a57a5a743894a0e4a801fc3

Jogando a senha na caixa de texto de descriptografia do site, a senha será exibida após o clique do botão.


Na internet é possível encontrar uma vasta documentação sobre o assunto.

Descompactando Arquivos TAR.GZ no Linux

Para descompactar arquivos por linha de comando no Linux:

Comando mais usado (em 1 passo):

    tar zxvf <filename.tar.gz>

Ou  (em 2 passos):

    gunzip <filename.tar.gz>
    tar xvf <filename.tar>



Verificando SO no PHP

A função abaixo serve para verificar o tipo de sistema operacional e retornará true ou false verificando se o sistema é o Windows. A função poderá ser complementada com um if para verificar se o SO é *nix (Linux) ou MAC.



function isMSWindowsServer()
{
    //Captura 3 primeiras letras do tipo de sistema operacional
    $osID = strtoupper(substr(PHP_OS, 0, 3));



    //Verifica se o sistema é Windows
    $isWindows = (strcmp('WIN',$osID) == 0) ? true: false;
    return $isWindows;


}





segunda-feira, 12 de dezembro de 2011

Tratando Hora no Java

Existem várias formas de se tratar hora no Java. É possível fazer conversões para String e usar substring ou usar o metodo getHours() da classe Date.

   //classe SimpleDateFormat
   SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
   Date datanula = df.parse("00:00:00");
   String firstbox = textbox.getValue().toString().substring(11, 16);
       if(textbox.equals(datanula){
              //exibe a mensagem de erro
              throw new WrongValueException(this.objetoDt,"Mensagem de erro!");
       }

------------------

        //classe Date
        Date myDate = new Date();
        myDate.setHours(00);

        if(textbox.equals(myDate.getHours()){
              //exibe a mensagem de erro
              throw new WrongValueException(this.objetoDt,"Mensagem de erro!");
       }

Como o getHours() está em depreciação, a mais correta forma é usando a classe Calendar. Abaixo seguem linhas de código para emitir um aviso quando a hora e o minuto forem iguais a zero. Cria-se uma instancia de Calendar na variável cal que vai receber a variavel no formato Date do objeto.

// cria a instancia de Calendar na variavel cal
Calendar cal = Calendar.getInstance();

//captura do formulário o valor da hora no formato Date e joga no objeto
cal.setTime(this.objetoDt.getValue());

// validação para hora igual 00h00
if (cal.get(Calendar.HOUR) == 0) {
    if (cal.get(Calendar.MINUTE) == 0) {

        //exibe a mensagem de erro
        throw new WrongValueException(this.objetoDt,"Mensagem de erro!");
    }
}