set 30

Dígito verificador ou algarismo de controle é um mecanismo de autenticação utilizado para verificar a validade e a autenticidade de um valor numérico, evitando dessa forma fraudes ou erros de transmissão ou digitação.

É usado normalmente em representações numéricas que exijam integridade, como por exemplo CPF, CNPJ, RG.

O método de cálculo desses dígitos varia conforme o caso, porém muitos deles se baseiam em duas rotinas tradicionais: Módulo 11 e Módulo 10.

O cálculo do Módulo 10 é feito da seguinte maneira:

Cada dígito do número, começando da direita para a esquerda (menos significativo para o mais significativo) é multiplicado, na ordem, por 2, depois 1, depois 2, depois 1 e assim sucessivamente.

Número exemplo: 261533-4

  +---+---+---+---+---+---+   +---+
  | 2 | 6 | 1 | 5 | 3 | 3 | - | 4 |
  +---+---+---+---+---+---+   +---+
    |   |   |   |   |   |
   x1  x2  x1  x2  x1  x2
    |   |   |   |   |   |
   =2 =12  =1 =10  =3  =6
    +---+---+---+---+---+-> = (16 / 10) = 1, resto 6 => DV = (10 - 6) = 4

A função abaixo traduz este esquema na linguagem CSharp e poderá ser utilizada em seus projetos .net.

private string modulo10(string str)
{
    int digito=0;
    int flag=2;
    str=str.Substring(0,str.Length - 1);
    for (int i = str.Length-1; i >= 0; i--)
    {
        int valor = Convert.ToInt32(str[i].ToString()) * flag;
        int soma = 0;
        if (valor.ToString().Length > 1)
        {
            string svalor = valor.ToString();
            for (int j = 0; j < svalor.Length; j++)
            {
                soma += Convert.ToInt32(svalor[j].ToString());
            }
        }
        else
        {
            soma = valor;
        }
        digito += soma;
        flag = (flag == 2) ? 1 : 2;
    }
    digito = digito % 10;
    digito = 10 - digito;
    if (digito == 10)
    {
        digito = 0;
    }
    return digito.ToString();

}

Obs.: Todo o texto didático deste post foi extraído da Wikipédia obedecendo a licença GNU da mesma.


View this Post in: English French Italian Spanish

set 29

Fonetizar significa examinar a palavra sob o ponto de vista fonético. Analisar as partes da palavra pelo seu som e não pela escrita. Por exemplo: O nome Felipe pode ter várias variações como Filipe, Filipi, Filipe, Philipe, Phelipe, Phelipi.  Ao fonetizar esses nomes, chegamos sempre no mesmo resultado (FILIPI). 

A fonetização é muito útil para a utilização de buscas aproximadas. No exemplo acima, ao buscarmos o nome Felipe, poderíamos ter como retorno resultados contendo todos as outras variações do nome Felipe.

Para testar, você poderá baixar a classe de fonetização reescrita por mim em c# e utiliza-la em seu projeto .net. Para utilizar-la  basta chamar o método estático Fonetiza da classe Fonetico do Namespace Util. 

Ex.:

Response.Write(Util.Fonetico.Fonetiza("Felipe"));

Download
Classe para Fonetizar Textos (448) - 52 KB

nota
O código original estava escrito em Java e confesso que já não lembro onde consegui, para que assim colocasse os créditos devidos aqui.


View this Post in: English French Italian Spanish

set 25

Por padrão, não se pode atribuir um valor nulo em variáveis do tipo Int32, Double, DateTime entre outros tipos. Para que isto seja possível devemos usar a classe Nullable. A definição da variável fica da seguinte forma:

Nullable<tipo> nome_varival;

Para atribuir um valou null a um inteiro, devemos fazer;

Nullable<int> nome_varival = null;

No entanto, para pegar o valor da variável devemos usar a propriedade Value e para saber se a variável possui valor a propriedade HasValue.

if (nome_varival .HasValue)
   return nome_varival.Value;

View this Post in: English French Italian Spanish

set 24

Segue o link do tutorial
http://www.chromebrasil.com.br/donwload-de-videos-do-youtube-pelo-chrome/


View this Post in: English French Italian Spanish

set 23

Este algoritmo só é válido para um ArrayList com itens do tipo Int32.
Primeiramente devemos ordenar o ArrayList para simplificar a busca de itens iguais. Para isso basta utilizar o método Sort. Depois, utilizando um simples laço ‘for’ percorremos o vetor em busca das repetições. Veja o código abaixo e você entenderá.

        ArrayList vet = new ArrayList();
        vet.Add(9);
        vet.Add(5);
        vet.Add(1);
        vet.Add(7);
        vet.Add(2);
        vet.Add(10);
        vet.Add(9);
        vet.Add(7);
        vet.Add(7);
        vet.Add(6);
        vet.Add(10);
        vet.Add(8);
        vet.Add(4);
        vet.Add(1);
        vet.Add(9);

        // ordenado o vetor
        vet.Sort();

        int anterior = Convert.ToInt32(vet[0]);
        for (int i = 1; i < vet.Count; i++)
        {
            int atual = Convert.ToInt32(vet[i]);
            if (atual == anterior)
            {
                vet.RemoveAt(i);
                i--;
            }
            else
            {
                anterior = atual;
            }

        }

        // escrevendo os itens do vetor na tela
        for (int i = 0; i < vet.Count; i++)
        {
            Response.Write(vet[i].ToString() + " - ");
        }

View this Post in: English French Italian Spanish

set 22

Um recurso muito utilizado em páginas HTML é o de redirecionamento. Com apenas uma linha de código no cabeçalho da página podemos fazer o redirecionamento para outra página ou site. É possível também recarrega-la de tempo em tempo (refresh).
O código abaixo é de uma página HTML simples que após 3 segundos abre a página index.htm.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Redirecionando...</title>
    <meta http-equiv="Refresh" content="3; URL=index.htm">
</head>
<body>
A página será redirecionada em 3 segundos.
</body>
</html>

View this Post in: English French Italian Spanish

set 18

DateTime dtNascimento = Convert.ToDateTime("07/09/1984");
TimeSpan result = DateTime.Now.Subtract(dtNascimento);
int idade = result.Days / 365;

View this Post in: English French Italian Spanish

set 17

Quem desenvolve para a web sabe que a grande dificuldade hoje é fazer com que seu site/sistema funcione e/ou seja bem apresentável nos mais diversos browsers. Pior do que isto é ter que testa-lo em cada um deles. Muitas das vezes isto é praticamente impossível visto que seria necessário ter diferens máquinas com os mais variados sistemas operarionais e versões de browsers diferentes.  E é justamente isto o que o site Browsershot faz.

“Quando você envia o endereço de seu site, ele é adicionado à fila de trabalhos. Um número de computadores distribuídos abre o seu website em seus navegadores. Então ele tira screenshots e os envia para o servidor central”.

Você pode solicitar o screenshot de várias combinações de navegadores e sistemas operacionais direfenres e depois acompanhar o processo e a fila de espera, visualizando os que já foram processados. É possível também selecionar a resolução de tela, a qualidade da cor, a versão do javascript, Java e flash ou mesmo desabilitar cada um deles. Durante, ou ao final do processo, você poderá fazer o download de todos os screenshots já tirados.

Todo este serviço é feito de forma gratuita e livre e você poderá até mesmo baixar  o código fonte do projeto. Entre no site do http://browsershots.org e tire os screenshots de seus sites.


View this Post in: English French Italian Spanish

set 16

O Highslide é um software open source escrito em JavaScript próprio para abrir popups de imagens. O legal é que ele possui efeitos super interessantes como fade, bordas arrendondadas, galeria, legenda entre outros. Possui vários exemplos prontos que facilitam ainda mais a utilização deste framework. Para conferir entre na página do Highslide e baixe o código fonte.


View this Post in: English French Italian Spanish

set 15

Para limpar todos os componentes da página basta buscar por cada tipo individualmente utilizando o método Controls(). O método Controls() está presente em todas as classes que herdam de Control.

O código abaixo percorre todos os componentes do formulário da página verificando os que são TextBox. Em seguida é dado um cast no objeto para poder utilizar sua propriedade Text e assim limpar seu conteúdo.

foreach (Control componente in Page.Form.Controls)
{
    //Verificando se é um text box e limpando quando for
    if (componente.GetType() == typeof(TextBox))
        ((TextBox)componente).Text = "";
}

O mesmo pode ser feito quanto aos Dropdown List, Radios, etc…

É preciso lembrar que se um determinado componente está dentro de um container, deverá ser feito o loop dos Controls deste container. Por exemplo, se sua página está dentro de um MasterPage você deverá fazer.

foreach (Control componente in Page.Master.FindControl("ContentPlaceHolder1").Controls)
{
    //Verificando se é um text box e limpando quando for
    if (componente.GetType() == typeof(TextBox))
        ((TextBox)componente).Text = "";
}

Substitua ContentPlaceHolder1 pelo nome de seu ContentPlaceHolder


View this Post in: English French Italian Spanish