Validação de CPF por javascript

Depois de testar várias funções, encontrei uma – na verdade, encontraram e me encaminharam – que parece funcionar corretamente, pois o que mais acontecia era funcionar com uns, e com outros não, aí trocava a função e parava de funcionar com alguns mas com outros começava a rolar.

function ValidarCPF(Objcpf){
    var cpf = Objcpf.value;
    exp = /.|-/g
    cpf = cpf.toString().replace( exp, "" );
    var digitoDigitado = eval(cpf.charAt(9)+cpf.charAt(10));
    var soma1=0, soma2=0;
    var vlr =11;
    for(i=0;i<9;i++){
        soma1+=eval(cpf.charAt(i)*(vlr-1));
        soma2+=eval(cpf.charAt(i)*vlr);
        vlr–;
    }   
    soma1 = (((soma1*10)%11)==10 ? 0:((soma1*10)%11));
    soma2 = (((soma2+(2*soma1))*10)%11);
   
    if(cpf == "11111111111" || cpf == "22222222222" || cpf ==
"33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf ==
"66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf ==
"99999999999" || cpf == "00000000000" ){
        var digitoGerado = null;
    }else{
        var digitoGerado = (soma1*10) + soma2;
    }

    if(digitoGerado != digitoDigitado){
       return false;
    }
    return true;
}

Menu por ano e mês no WordPress

Mexendo no template de um blog do WordPress, precisei inserir aquele menu que tem os anos e os mêses desses anos para navegacão.

O código é simples:

<ul>
<?php
/**/
$years = $wpdb->get_col("SELECT DISTINCT YEAR(post_date) FROM $wpdb->posts WHERE post_status = "publish" AND post_type = "post" ORDER BY post_date DESC");
foreach($years as $year) :
?>
	<li><a href="<?php echo get_year_link($year); ?> "><?php echo $year; ?></a>
		<ul>
		<?	$months = $wpdb->get_col("SELECT DISTINCT MONTH(post_date) FROM $wpdb->posts WHERE post_status = "publish" AND post_type = "post" AND YEAR(post_date) = "".$year."" ORDER BY post_date DESC");
			foreach($months as $month) :
			?>
			<li><a href="<?php echo get_month_link($year, $month); ?>"><?php echo date( "F", mktime(0, 0, 0, $month) );?></a></li>
			<?php endforeach;?>
		</ul>
	</li>
<?php endforeach; ?>
</ul>

Com isso, será exibido um menu mais ou menos assim

2009

  • Maio
  • Abril
  • Março
  • Fevereiro
  • Janeiro

2008

  • Dezembro
  • Novembro

 

Criando miniatura de imagem no PHP com a GD

Nesse post eu havia falado, por cima, sobre a biblioteca GD, que possibilita a manipulação de imagens no PHP.

Uma das funcionalidades mais necessárias no PHP é criar uma thumbnail (miniatura) de uma imagem – e certamente é uma das primeiras coisas que alguém que começa a programar em PHP e precisa fazer com imagens, tem a necessidade.

Segue abaixo a função que eu uso – há anos. Não foi desenvovida por mim, achei ela no Google anos atrás, e sei que ela se popularizou!

 

<?php
   //imagem original
    $source_image = "spork.jpg";

   //altura máxima
    $thumb_height = 40;

    //prefixo da miniatura
    $thumb_prefix = "thumb_";

   //qualidade – vai de 0 a 100
    $quality = 100;

   //checa se imagem existe
   if(!file_exists($source_image)) {
      echo "Imagem não encontrada";
   } else {
       //tipos suportados (jpg, png, gif, etc…)
        $supported_types = array(1, 2, 3, 7);

        //retorna informações da imagem
        list($width_orig, $height_orig, $image_type) = getimagesize($source_image);

        //checa se é um tipo suportado
        if(!in_array($image_type, $supported_types)) {
            echo "Tipo não suportado de imagem: " . $image_type;
        }
        else
        {

           //nome da imagem
            $path_parts = pathinfo($source_image);
            $filename = $path_parts["filename"];

            //calcula as proporções
            $aspect_ratio = (float) $width_orig / $height_orig;

            //calcula a largura da thumb baseada na altura
            $thumb_width = round($thumb_height * $aspect_ratio);
 
            //detecta o tipo de arquivo
            $source = imagecreatefromstring(file_get_contents($source_image));

            //cria canvas
            $thumb = imagecreatetruecolor($thumb_width, $thumb_height);

            imagecopyresampled($thumb, $source, 0, 0, 0, 0, $thumb_width, $thumb_height, $width_orig, $height_orig);
           //destrói, para liberar memória
            imagedestroy($source);
 
            //cria thumb baseada no tipo da imagem
            switch ( $image_type )
            {
                case 1:
                    imagegif($im, $fileName);
                    $thumbnail = $thumb_prefix.$filename . ".gif";
                    break;

                case 2:
                    $thumbnail = $thumb_prefix.$filename . ".jpg";
                    imagejpeg($thumb, $thumbnail, $quality);
                    break;

                case 3:
                    imagepng($im, $fileName);
                    $thumbnail = $thumb_prefix.$filename . ".png";
                    break;

                case 7:
                    imagewbmp($im, $fileName);
                    $thumbnail = $thumb_prefix.$filename . ".bmp";
                    break;
            }
        }
    }
?>

Google Analytics libera API para desenvolvedores

Ontem li no Profissionais Web que o Google disponibilizou uma API para o Google Analytics, isso significa que agora será possível desenvolver aplicativos utilizando as estatísticas vindas do Analytics.

Uma verdadeira mão na roda!

 

O que é possível fazer com a API do Analytics?

Com a API significa que você pode ter acesso a TODOS os dados disponíveis no Analytics de um aplicativo terceirizado ou desenvolvido por você, ou em sites de terceiros. Para o meu caso pensei em duas aplicações.

 

1. Exibir relatórios para os clientes em interface própria

 

Atualmente eu trabalho com aplicativos web e com CMS próprio (GS Intra), porém nunca desenvolvi um sistema de estatísticas para ele por dois motivos principais relacionadas ao Analytics:

  • Gratuito
  • Não utiliza recursos do meu servidor
  • Superioridade técnica ao que eu poderia desenvoler

Com o uso da API será possível que eu centralize em um só aplicativo o gerenciamento do conteúdo, dos clientes e estatísticas do site de meus clientes. Não preciso mandar o cliente para um site externo para que ele visualize as estatísticas. Facilita para o cliente, é obviamente é melhor para o desenvolvedor, que agrega mais funcionalidade e valor ao sistema.

 

2. Acompanhar impacto de mudanças no site

Eu tenho sérios problemas para acompanhar o impacto das alterações realizadas no And After. Por exemplo, adiciono um elemento de navegação visando aumentar o tempo médio de visita dentro do site no dia 27 de abril.

Preciso de um log, onde eu adicione nesta data todas as alterações feitas para que posteriormente eu colete informações do "antes e depois". Utilizei por algum tempo o Excel para fazer isso, mas era praticamente no CTRL+C e CTRL+V para mesclar dados do Buscapé, AdSense e Analytics em uma mesma tabela, além das datas das modificações.

Agora é possível eu tem um banco de dados com todas as alterações realizadas em no site (como o exemplo do elemento de navegação) e mesclar com os dados que serão importados da API, facilitando a criação do "antes e depois" das alterações de forma automática. 

Quando (e se) a API do AdSense for liberada então, ficará show. Em um único aplicativo será possível medir o impacto de mudanças nas visitas e rendimentos de um site. 

 

Ta aí a dica para um aplicativo que eu utilizaria. haha 🙂

 

 

Saiba mais sobre a API do Analytics em

Blog oficial do Google Analytics

Google Code Analytics

Javascript

Java

 

 

O que já existe desenvolvido?

Polaris

Até o momento testei um aplicativo desktop, o Polaris. Ele utiliza a plataforma (plataforma?) Adobe Air, e a versão free é extremamente simples de usar.

Apresenta diversas informações em uma pequena janela com uma interface bastante intuitiva. 

Confira algumas telas do Polaris , o  analytics desktop:

Polaris - Google analytics destkop

Polaris - Google analytics destkop

Polaris - Google analytics destkop

Polaris - Google analytics destkop

 

Recomendo! 

 

Mobile

Não testei, mas no blog oficial do Analytics recomendaram uma aplicação Android do Analytics.

 

 

Assim que eu fizer testes com a ferramenta publicarei os resultados e programações aqui no O desenvolvedor, se você já desenvolveu alguma coisa ou quer compartilhas suas idéias pode publicar um artigo ou comentar. 🙂

Biblioteca GD: trabalhe com imagens no PHP

Com PHP é possível além de trabalhar com a saída (x)html ter manipulação de imagens. A biblioteca mais utilizada é a GD – http://br.php.net/gd

Por padrão ela já vem instalada desde a versão 4.3 do PHP, e com ela é possível desde criar imagens do 0, escrevendo textos, usando filtros de opacidade, até criar miniaturas de outras imagens ou, ainda mesclar as mesmas, criando mosaicos e afins, com saídas em formato jpg, png, e por aí vai. As possibilidades são infinitas, e ficam a disposição e necessidade de quem for implementar.

Abaixo segue o exemplo clássico de uso mais simples da biblioteca: criar uma imagem com largura e altura definida, com um texto no miolo dela.

<?php

function createImageWithText($width, $height, $txt) {

       //cria uma imagem com largura x altura definida pelo usuário
        $im = imagecreatetruecolor($width, $height);
        //aloca as cores para imagem
        $text_color = imagecolorallocate($im, 233, 14, 91);
        //escreve o texto na imagem
        imagestring($im, 1, 5, 5,  $txt, $text_color);
       
        //inicia buffer
        ob_start();
        // cria imagem de saída, formato jpeg, bom 85% de qualidade
        imagejpeg($im, NULL, 85);
        //captura saída para string
        $contents = ob_get_contents();
        //finaliza captura
        ob_end_clean();
        //libera memória
        imagedestroy($im);
        //escreve arquivo em disco, usando os comando básicos do PHP
        $fh = fopen("temp/img2.jpg", "w+" );
            fwrite( $fh, $contents );
        fclose( $fh );

   
    }

   createImageWithText(400, 200, "meu texto");

?>

Em breve farei outros posts a respeito!