O Ponto e vírgula e o Javascript;

Quando procuramos informações, posts, comentários, etc. sobre ponto e vírgula no javascript, não é incomum nos depararmos com discussões onde pessoas apontam que o ponto e vírgula é completamente inútil. Por outro lado, há pessoas que advogam que o ponto e vírgula é realmente obrigatório, independente das regras de ASI. Realmente é muito difícil nos depararmos com algum tipo de problema relacionado ao assunto, mas eu acredito que é sempre bom procurarmos entender o funcionamento das linguagens do dia a dia, principalmente o javascript, que está cada vez mais presente em todas as tecnologias que utilizamos.

logo-javascript

Podemos notar que, em casos como um simples:

console.log('console.log com ponto e vírgula');

Funcionam exatamente como:

console.log('console.log sem ponto e vírgula')

Isso acontece justamente por conta das regras de inserção automática de ponto e vírgula. Em casos como este, independente da sua linha de pensamento, das suas convicções, etc, o código vai funcionar exatamente como esperado. Então vamos analisar uma das regras para que isso aconteça:
Continuar lendo

Validando as suas ViewModels no asp.net mvc com FluentValidation

É comum, quando trabalhamos com asp.net mvc, utilizarmos as anotações presentes em System.ComponentModel.DataAnnotations. Conseguimos um resultado bacana, validamos de maneira simples as nossas view models e o código fica relativamente simples. Um exemplo simples do que eu estou falando é o seguinte:

Imagine que temos o clássico LoginModel, contendo o usuário, senha e a url de retorno após o sucesso no login:

    public class LoginModel
    {
        public string Email { get; set; }
        public string Senha { get; set; }
        public string ReturnUrl { get; set; }
    }

Após identificarmos que os campos Email e Senha são obrigatórios, podemos rapidamente resolver este problema adicionando um [Required] para cada propriedade obrigatória:
Continuar lendo

Utilizando o Lucene e Azure Websites

Neste post eu vou falar como utilizar o Lucene.Net em uma aplicação hospedada no Azure. Para quem ainda não conhece, o Lucene.Net é um port feito do projeto Apacha Lucene e tem como objetivo realizar full-text search de maneira performática. Ele foi inicialmente escrito em Java, porém recebeu um port linha por linha para o .Net (por isso, muitas vezes o lucene.net não parece ser muito idiomático para quem está escrevendo código em .net).

Para começar, é necessário instalar tanto o Lucene.net, quanto o AzureDirectory:


Install-Package Lucene.Net
Install-Package Lucene.Net.Store.Azure

A grande diferença que acontecerá é passar a utilizar a classe AzureDirectory no lugar de um FSDirectory ou RAMDirectory. O que a classe AzureDirectory fará é utilizar um Windows Azure Blob Storage no lugar de um diretório local, ou a própria memória do computador.

        public void Indexar(string conteudo)
        {
            using (var directory = new AzureDirectory(CloudStorageAccount.Parse(ConfigurationManager.AppSettings["FilesStorageConnectionString"])))
            using (var analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30))
            using (var writer = new IndexWriter(directory, analyzer, false, MaxFieldLength.UNLIMITED))
            {
                var document = new Document();
                document.Add(new Field("Conteudo", conteudo, Field.Store.YES, Field.Index.ANALYZED));

                writer.AddDocument(document);
                writer.Flush(true, true, false);
            }
        }

Note que “FilesStorageConnectionString” é a conexão do seu blob storage no Azure. Note que tirando a utilização do AzureDirectory, o código é exatamente igual a qualquer implementação de indexação / procura no Lucene.Net.

Por hoje é só 😉