Fazendo o Deploy de uma aplicação NodeJs + Socket.io para um WebSite do Azure utilizando o Visual Studio Code

Standard

Neste post veremos como podemos fazer o deploy de aplicações NodeJs que possuam recursos de comunicação em tempo real (no caso utilizando Socket.io) para um WebSite do Azure utilizando o novo editor de código da Microsoft chamado Visual Studio Code

Nota: Para este exemplo vou estar utilizando a aplicação criada neste post que é feita em NodeJs + Socket.io onde exibe em tempo real o percentual de consumo da cpu.

Abaixo listo os tópicos que serão abordados ao longo do artigo:

– Configurando o VSCode e as permissões do git para habilitar Sync, Pull e Push pelo editor
– Criando um WebSite no Azure para sincronização automática com o Github
– Habilitando e configurando WebSockets na WebSite criada
– Configurando o arquivo web.config
– Rodando a aplicação com WebSockets e Long Pooling – Entendendo os transportes

Continue reading

ASP.NET SignalR – Acompanhando o percentual de uso da CPU em tempo real

Standard

Atendendo alguns pedidos do Facebook e por email que recebi semana passada, hoje vou demostrar um exemplo de utilização do SignalR em uma aplicação que NÃO seja um chat. 🙂

Importante: Se você não sabe o que é o SignalR, nunca ouviu falar, ou não tem conhecimento, aconselho a leitura dos meus artigos anteriores sobre o assunto antes de continuar.

Situação Atual

Realmente a maioria dos artigos, posts e exemplos encontrados pela web demonstram a utilização do SignalR em aplicações de chat, muito bacana, isto facilita muito as coisas para quem precisa implementar algo do tipo, porém, tem um lado muito negativo: a maioria do pessoal vê vantagem em utiliza-lo apenas em aplicações de chat, ou algo relativamente simples. Porém, o SignalR é uma biblioteca ALTAMENTE completa e robusta, podendo ser utilizadas em diversos tipos de situações e projetos.

Particulamente utilizo o SignalR regularmente nos projetos que trabalho, e até hoje, nunca foi para criar um chat!
Continue reading

Implementando um Extension Method para coleções utilizarem a expressão Soundex

Standard

Vou demostrar neste artigo como podemos criar um Extension Method para coleções (IEnumerable) poderem utilizar um recurso muito utilizado em Transact-SQL chamado Soundex.

Para quem não conhece [ou não sabe nem o que é], a expressão Soundex retorna um código de quatro caracteres utilizado para comparar a semelhança entre duas sequências de caracteres. Ou seja, foneticamente falando, “casa” seria o mesmo que “caza”, ou até mesmo “cazza”, pois o som ao reproduzi-las seria o mesmo.

O algoritmo para a geração dos quatro caracteres para a comparação fonética é realizado utilizando algumas regras e “quase todas” letras do alfabeto.

Básicamente, as seguintes regras são consideradas:

1- Guarda-se o primeiro caracter da sequência e ignora os demais que forem iguais a (a, e, i, o, u, y, h, w);
2- concatena-se os próximos caracteres com seu respectivo código:
b, f, p, v => 1 
c, g, j, k, q, s, x, z => 2 
d, t => 3 
l => 4 
m, n => 5 
r => 6 
3- Dois caracteres adjacentes com o mesmo número são codificados como um único número, assim como, dois caracteres iguais separados por ‘h’ ou ‘w’ são codificados como um número único.
4- Se houver letras duplicadas, a segunda letra é ignorada
5- Continue até que o resultado seja três números, ou, preencher com “0” até ficarem três números.

Vamos criar nossa rotina para geração do código Soundex:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/// <summary>
/// Gera código Soundex
/// </summary>
/// <param name="valor"/>Valor base a ser verificado
/// <returns>String com código Soundex</returns>
public static string GeraSoundex(this string valor)
{
    if (String.IsNullOrEmpty(valor))
        return null;

    StringBuilder resultado = new StringBuilder(valor.Length);

    string valorBase = valor.ToUpper().Replace(" ", string.Empty);

    resultado.Append(valorBase[0]);
    char valorAnterior = '0';
    for (int i = 1; i < valorBase.Length; i++)
    {
        char valorEquivalente = '0';
        char valorAtual = valorBase[i];

        if ("BFPV".Contains(valorAtual))
            valorEquivalente = '1';

        else if ("CGJKQSXZ".Contains(valorAtual))
            valorEquivalente = '2';

        else if ("DT".Contains(valorAtual))
            valorEquivalente = '3';

        else if ('L'.Equals(valorAtual))
            valorEquivalente = '4';

        else if ("MN".Contains(valorAtual))
            valorEquivalente = '5';

        else if ('R'.Equals(valorAtual))
            valorEquivalente = '6';

        if (valorEquivalente != valorAnterior && valorEquivalente != '0')
        {
            resultado.Append(valorEquivalente);
            valorAnterior = valorEquivalente;
        }
    }
    while (resultado.Length < 4)
        resultado.Append("0");

    return resultado.ToString(0, 4);
}

Continue reading

Iniciando com SignalR – Agora como membro do ASP.NET

Standard

Contava os dias para a integração do SignalR com o ASP.NET, pois a cada dia o mesmo se tornava mais estável, com mais conteúdo online, além de ser muito bem aceito e interpretado pelos desenvolvedores web ao redor do mundo.

Basicamente agora sob o ASP.NET além de contar com seus recursos para aplicações web em tempo real, podemos utilizar templates específicos no Visual Studio, além de contar com auxílio, dicas e tutoriais pelo próprio site do asp.net. Oficialmente o SignalR torna-se membro do ASP.NET.

Algumas coisas mudaram (para melhor é claro) em relação a forma de se trabalhar com o mesmo anteriormente, vejamos alguns itens importantes:
Continue reading