Dica: Descontos nos cursos da balta.io

balta.io

Preparamos uma mega promoção na semana da Black Friday para você estudar o ano todo!
Por apenas R$ 449,90, pagos via boleto ou parcelado no cartão de crédito, você adquire 12 meses de assinatura do site!

Hoje contamos com 86 cursos online, com temas como ASP.NET, NodeJs, MongoDB, Angular, Xamarin, Ionic, Domain Driven Design, SOLID, Clean Code e muito mais.
Além destes conteúdos, você ainda poderá desfrutar de todos os futuros cursos adicionados até o fim da sua assinatura sem pagar nada a mais por isto!

Corra por que esta promoção vai até a meia noite desta sexta! Clique aqui e aproveite esta promoção!!

Uma introdução ao RavenDB

ravendb

  • O que é

O RavenDB é um NoSQL desenvolvido em .net, open source e mantido por uma equipe de peso, que inclui desenvolvedores como Oren Eini, Federico Lois, Elemar Júnior, etc. Você pode clicar aqui e conferir a equipe completa.

Por ser um banco de dados desenvolvido em .net e por pessoas envolvidas na comunidade .net, ele possui uma integração muita boa com o ambiente Microsoft, permitindo fazer queries utilizando LINQ de maneira muito simples. Porém ele não fica restrito ao ambiente Microsoft. Ele possui uma api rest que permite realizar queries, inserts, etc. a partir de qualquer linguagem e/ou ferramenta, como o postman.

O intuito deste post não é falar que o Raven é a bala de prata, que é melhor que outros bancos como o CouchDB ou o Mongo. Muito menos para compará-lo com outros tipos de bancos como o SQL Server ou Postgre. É válido para posts futuros compará-lo com outros bancos, analisar em quais casos um pode ser uma melhor escolha que o outro, porém neste post, vamos ficar apenas com a introdução.

Continuar lendo

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ó😉

Testando suas classes com FluentAssertions

Como as coisas andam corridas ultimamente e não tive tempo para continuar com os estudos/posts sobre o novo asp.net 5, que na verdade agora chama-se ASP.NET Core 1.0 (mas isso é assunto para outro post. Caso queira saber mais, confira este post do Scott Hanselman), resolvi criar um post rápido falando sobre o FluentAssertions. O FluentAssertions é um conjunto de extension methods que, segundo o site oficial diz, permite especificar de maneira mais natural o resultado esperado de um teste no estilo TDD/BDD. Para saber se você pode utilizar ou não o FluentAssertions, segundo o próprio site deles, este pacote possui suporte para as seguintes versões do .net framework:
Continuar lendo

Começando com ASP.NET 5 – Adicionando novos projetos e testes com xunit

Bom, agora que já entendemos um pouco do ambiente do asp.net 5, configuramos o necessário, etc., vamos começar a desenvolver o nosso projeto efetivamente. Como a missão principal destes posts e do que está sendo desenvolvido é o asp.net 5, não se preocupem muito com a arquitetura. Afinal, se não fosse para entendermos como está o novo ambiente, bastaria criarmos um projeto através do visual studio 2015 que já teríamos mais do que temos agora. Acredito que o mais importante ao começarmos com uma tecnologia nova, ou como no nosso caso, uma nova versão da tecnologia, o mais importante é entender como funciona, quais são as idéias por trás do que estamos estudando, etc. Como o nosso sistema é sobre finanças pessoais, vamos começar pensando em nosso domínio. Para isso, vamos alterar um pouco da estrutura do nosso projeto. Até agora, estávamos utilizando a estrutura default gerada com o yeoman. Ou seja, tínhamos a pasta Finance e todo o código dentro desta pasta. Vamos passar a utilizar as paras src e test, como é o padrão gerado pelo Visual Studio 2015, e dentro da pasta src, adicionar as pastas dos projetos. Não precisamos de nenhuma ferramenta para isso, basta criarmos as pastas na mão. Crie as pastas src e test, e um arquivo chamado global.json:
Continuar lendo