Portable

MVVM Starter Pack – Iniciando no MVVM – C#

Introdução

Fala pessoal, tudo bom?

Nesse post irei falar um pouco sobre o padrão de projetos chamado MVVM (Model – View – ViewModel) usado principalmente em aplicações XAML (WPF, UWP, Xamarin e etc).

Saliento, que a intenção aqui não é desenvolver um curso, ou um material completo sobre o assunto. Existem inúmeras fontes sobre. Se trata de um manual básico para a implementação desse padrão para pessoas que já possuem um conhecimento, ainda que básico, sobre o XAML e programação em geral.

Embora o projeto de exemplo que iremos desenvolver e eu disponibilizarei ao final tenha sido escrito para o WPF (Windows Presentation Foundation), os conceitos, classes e técnicas que abordarei neste post são como se fossem um Starter Pack para o MVVM. Independente de quem seja você ou qual seja o segmento do sistema/software/aplicativo ou plataforma (WPF, UWP, Xamaring…) que você pretende desenvolver usando MVVM, você irá, com toda certeza, usar a grande maioria do conteúdo que vou apresentar.

Então, fique tranquilo and here we go!

Conceitos

Para começar, vamos tentar entender o porquê de implementar um padrão de projeto.

(mais…)

Anúncios

.NET CORE: API para conversão de moedas – Yahoo Currency

Yahoo Currency

Salve galera. Na verdade, eu já havia feito uma postagem sobre isso no passado. Mas decidi reescrever algumas partes do código e atualizar o projeto (de Portable Class Library) para uma Class Library(.NET CORE 2) que é multi plataforma.

O funcionamento é o mesmo, a diferença principal fica pelo suporte à assincronicidade permitindo que você use métodos async e use await.

Esse é mais um projeto livre e open source que estou disponibilizando no meu GITHUB.

Os códigos estão sumarizados(documentados) e acompanham um Demo em WPF.

Abaixo uma pequena porção de código:

        ///

        /// O código abaixo é um exemplo simples de como usar os webservices de moeda de forma assíncrona
        /// 

        /// 
        public static async Task AsyncExample()
        {
            HL.YahooCurrency.Currency currency = new HL.YahooCurrency.Currency();

            //VOCÊ DEVE INCLUIR A LINHA ABAIXO OBRIGATORIAMENTE
            //É de extrema importância que você use o método WaitLoad() para aguardar a inicialização desse objeto, que ocorre de forma assíncrona
            await currency.WaitLoad();

            //Seleciona a moeda de origem
            currency.SourceUnit = currency.Units.ElementAt(0);
            //Seleciona a moeda de destino, para a qual se quer converter um valor
            currency.OutputUnit = currency.Units.ElementAt(1);
            //Dá um valor para conversão
            currency.SourceValue = 2.32f;
            //Mostra o valor convertido para a moeda de destino
            System.Diagnostics.Debug.WriteLine(currency.OutputValue);
        }

        ///

        /// O código abaixo é um exemplo simples de como usar os webservices de moeda de forma síncrona(normal)
        /// 

        public static void SynchronousExample()
        {
            HL.YahooCurrency.Currency currency = new HL.YahooCurrency.Currency();

            //VOCÊ DEVE INCLUIR A LINHA ABAIXO OBRIGATORIAMENTE
            //É de extrema importância que você use o método WaitLoad() para aguardar a inicialização desse objeto, que ocorre de forma assíncrona
            //Ao invés de usar await, você pode usar o método .Wait() em contextos síncronos.
            //Dessa forma, a thread em execução irá ser bloqueada por algumas frações de tempo, até que o carregamento dos dados seja feito completamente
            //Normalmente, isso deverá tomar cerca de 1 segundo, mas em conexões de internet mais lentas, pode levar até 6. Ou seja, a interface de usuário irá ficar bloqueada durante esse tempo
            currency.WaitLoad().Wait();

            //Seleciona a moeda de origem
            currency.SourceUnit = currency.Units.ElementAt(0);
            //Seleciona a moeda de destino, para a qual se quer converter um valor
            currency.OutputUnit = currency.Units.ElementAt(1);
            //Dá um valor para conversão
            currency.SourceValue = 2.32f;
            //Mostra o valor convertido para a moeda de destino
            System.Diagnostics.Debug.WriteLine(currency.OutputValue);
        }

Gostou?

Detalhe, esse objeto YahooCurrency pode ser usado diretamente no XAML, pois ele implementa a interface INotifyPropertyChanged, permitindo que seja feito Data Bindings. Quando usando em XAML ele irá operar, por padrão, de forma assíncrona. Você deverá utilizar a propriedade IsLoading para exibir alguma mensagem de carregamento para o usuário (enquanto os dados são baixados) e/ou desabilitar os controles da interface.

Isso tudo que mencionei acima está implementado no exemplo em WPF que acompanha a API.

Chega de papo, aí está o link:

GitHub – HerbertLausmann/HL.YahooCurrency: .NET C# Multiplatform wrapper for Yahoo Currency Web Service. Convert between over 100 different currencies.

Lembrando, que como ela é escrita sob os padrões do .NET STANDARD 2, você poderá usa-la no Xamarin, Mono e etc.

Um abraço!

.NET CORE: API de previsão do tempo – Yahoo Weather

Surprise modafocas!

Queridos colegas, amigos, parceiros, compatriotas, conterrâneos, irmãos!

Nesse post venho apresentar-vos a minha API (escrita em C#/.NET CORE2) para previsão do tempo.

Ela é, basicamente, uma ponte em C# para o WebService de clima do Yahoo. Com ela você consegue obter muitas informações sobre o clima numa dada região, como por exemplo:

  1. Horário do nascer e pôr do sol
  2. Umidade e pressão atmosférica
  3. A sensação térmica, direção e velocidade do vento
  4. As temperaturas máxima e mínima previstas para a previsão
  5. Previsão do dia atual e dos 9 dias à frente

O webservice do yahoo, originalmente, retorna apenas os resultados em inglês. Mas eu adicionei suporte à globalização e assim ela emite os textos da previsão (Ex: Parcialmente Nublado, Chuvoso) em português.

Vale destacar que, sendo uma api escrita para o .NET CORE, ela pode ser usada em múltiplas plataformas, incluindo o XAMARIN e o MONO.

Ela também implementa a interface INotifyPropertyChanged podendo ser usada tanto em código (C#/VB.NET, whatever) quanto no XAML com Data Binding.

Saliento, também, que implementei suporte assíncrono. Você pode fazer umas coisinhas assim:

            YahooWeather weather = await YahooWeather.LoadAsync("New York city");
            Console.WriteLine(weather.Condition.Text);

Bacana né?

Isso tudo disponibilizado gratuitamente e com código aberto no GITHUB:

GitHub – HerbertLausmann/HL.YahooWeather: A .NET C# Multiplatform wrapper for the Yahoo Weather API

Divirta-se!
That’s all folks!

.NET: Medir força de senhas – C#

Password Strength.gif

Visualizando em tempo real a força da senha

Salve internautas! Tudo tranquilo?!

Então, depois de quase um ano após a última postagem, eis que eu retorno da cinzas, e mais zika dos códigos ainda haha! Aproveitando que entrei de férias (permanentes) agora posso me dedicar a uma coisa que gosto muito: Programação!

E nada melhor que elaborar uma postagem didática e útil, pois eu amo compartilhar conhecimento!

Chega de papo, and let’s go!

Já precisou alguma vez medir a força de uma senha? Bom, eu nunca, mas como precisava de um passatempo, resolvi estudar uma maneira de como fazer isso.

(mais…)

.Net Portable: API de conversão de moedas com WebService do Yahoo – +100 Moedas – C#

Pode parecer tarefa fácil, mas não é. O fato é que, encontrar um bom WebService, que atenda às suas necessidades, que seja gratuito e simples de usar é algo um pouco complicado. Por isso, escrevo este post!

Recentemente eu descobri que o Yahoo possui um WebService de financias, e que o mesmo disponibiliza uma tabela para conversão de moedas, com as principais moedas do mundo. Para obter os dados do WebService é necessário, apenas, fazer um Request e pegar o Response do link abaixo:

http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote

Ele vai retornar um arquivo XML contendo os valores das moedas, e isso de forma atualizada.

Tendo isso em mãos, já é possível criar um ótima API para conversão de valores monetários. Mas eu fui além. Baseado na página web abaixo, eu criei um pequeno banco de dados que reúne as principais informações de cada moeda, como por exemplo: País, Código, Simbolo, Imagem da Bandeira do País, e o Nome da moeda.

Currency Symbols – All existing currency symbols

E eu fui ainda mais além!! A API foi projetada para funcionar offline também, pois é possível salvar a tabela de conversão e carrega-la quando não quiser baixar o da internet.

E para fechar com chave de gold: A API é multiplataforma. É uma Portable Class Library, que pode ser referenciada em programas desktop, aplicativos Windows Phone e Windows Store, Silverlight, e um outro que eu esqueci.

Ah, e sem falar que as classes foram projetadas para funcionarem em harmonia com o XAML. De fato, você pode fazer Data Binding e fazer conversões monetárias sem usar praticamente nenhum código. Um exemplo (WPF):

Yahoo Currency Demo

E graças à forma como foi projetado, a DLL garante conversão em tempo real! Isso porque a tabela de conversão é baixada e armazenada de uma única vez na memória. E o banco de dados que possue as informações de cada moeda foi incluído dentro da API.

Algo muito útil, em sistemas financeiros e demais da categoria…

Bom, segue o projeto completo da API, do aplicativo demo, e da ferramenta que eu criei para montar o base de dados:

HL.Yahoo.Currency

Espero que possa ser útil à vocês!

Grande abraço.