Agora que a época das férias está praticamente terminada, trazemos para os leitores mais distraídos, um tema que aqui na Programar achámos que não deveria passar em branco… No passado mês de Maio, foi lançada pela Fundação .NET a biblioteca ML.NET.
Vamos por partes… ML significa Machine Learning… ou seja a aprendizagem da máquina, o que nos leva para a área da inteligência artificial, que nos dias de hoje está cada vez mais ativa.
Neste artigo decidi “revisitar” um tema que sempre me despertou interesse e que tive de abordar num projecto que fiz em 2015. O objectivo era encriptar, de forma a que fosse possível desencriptar, dados, bastando para tal saber um conjunto de informações (identificador, chave e chave-mestra), uma vez que a cada dado, apenas corresponde um identificador (fechadura) e para se chegar à chave que acabará por abrir, são precisas duas chaves (chave e a chave-mestra). Quase como a caixa forte do tio patinhas e os irmãos metralha a tentar abrir, mas um pouco mais complexo!
Para fazer executar esta tarefa, o utilizador deve inserir um identificador, neste caso “porta”, um código a ser cifrado, uma chave para o cifrar e a respectiva chave par (chave-mestra). Quando pressionar o botão para cifrar, os dados introduzidos, serão utilizados para cifrar o “código” usando a chave e a chave-mestra, devolvendo o valor do código, cifrado.
Não será de todo estranho, pelo menos para alguns, a necessidade de converter uma lista de um dado tipo para Data- table, em C#. O mais comum, seria criar um novo objecto do tipo DataTable, criar as colunas e iterar a lista, adicionando as linhas ao datatable, a cada iteração. Isto seria no mínimo trabalhoso, além de pouco eficiente. O código seria pouco elegante e semelhante ao seguinte:
Tal como o título sugere, é mais comum do que seria “agradável”, ter de fazer transformações de dados de DataTable, para ficheiros CSV separados por vírgulas ou ponto-e-vírgula, para se transferirem dados nas mais diversas situações! Seria muito mais agradável usar um formato tipo XML ou mesmo JSON do que usar CSV! No entanto o CSV está para ficar, tendo em 2005 sido alvo de RFC para formato comum e Mime Type para transferência de ficheiros (RFC4188).
Ao longo do artigo será apresentada uma classe, bastante simples para escrever dados oriundos de uma DataTable para ficheiro em formato CSV de acordo com o RFC4180 e posteriormente em formato CSV separado por ponto-e-vírgula, conforme é comummente usado para transferência de dados entre sistemas “legados”.
Os dados armazenados num objecto do tipo DataTable, encontram-se num formato suportado pela framework .Net para armazenamento em memória. Como se trata de um objecto existem diversos métodos bastante úteis que podem ser chamados. Muitos deles bastante úteis quando se pretende trabalhar com os dados em memória. No entanto a classe DataTable não tem suporte para escrita de ficheiros CSV.
Neste artigo será apresentada uma introdução básica aos testes unitários exemplificando como os escrever na linguagem C#, usando as ferramentas que acompanham o Visual Studio Community. Escrever testes de caso é uma parte importante do teste de software. Testar software é sempre um “quebra-cabeças” para programadores e testadores pois existem imensos tipos de casos de teste possíveis. Os testes unitários são um método pelo qual pedaços de um programa, módulos ou até conjuntos de módulos, são testados por forma a determinar se estão em condições de serem utilizados.
Para escrevermos bons testes unitários, devemos entender como é que um caso de teste funciona, e porque precisamos de o testar!
Existem diversas orientações para programação orientada por objectos, no entanto, neste artigo apenas iremos focar SOLID com exemplos em C#.
SOLID é um acrónimo dos cinco primeiros princípios da programação orientada a objetos e design de código identificados por Robert C. Martin Este mesmo acrónimo foi introduzido por Michael Feathers, após observar que os cinco princípios poderiam se encaixar nesta palavra.
Algumas vezes necessitamos que o nosso programa interaja com uma página web, seja para obter alguma informação ou para testar o seu funcionamento. Normalmente, isto pode ser feito interagindo com o conteúdo da página, usando a API DOM (Document Object Model – representação dos objetos da página em forma de árvore) e obter informações ou interagir com a página (preenchendo caixas de texto ou clicando em botões pelo programa).
Isto, além de ser difícil e sujeito a erros, pode ter de funcionar de maneira diferente nos vários browsers. Uma maneira mais simples de fazer isto, além de ser compatível com a maioria dos browsers é usar uma ferramenta open source, chamada Selenium (http://www.seleniumhq.org/). Neste artigo, iremos mostrar como usar o Selenium para interagir com o Google, fazer uma pesquisa e mostrar os resultados numa Listbox WPF.
Com o recente lançamento do Visual Studio 2015, foi lançada a versão 6 da linguagem de programação para a plataforma .NET C#.
Como neste lançamento o enfoque principal foi na nova plataforma de compiladores (“Roslyn”), os melhoramentos e adições à linguagem foram escassos mas, tal como os melhoramentos e adições das versões anteriores, tornarão a vida de quem desenvolve usando a linguagem de programação C# muito melhor.
Com a introdução de capacidades assíncronas nas linguagens de programação C# e Visual Basic todas as APIs assíncronas tendem a seguir este padrão.
No entanto, muitos programadores não entendem ainda como lidar com esta nova realidade.
Este artigo não pretende explicar como funciona esta funcionalidade, mas apresentar uma alegoria que permite formar um modelo mental de como se deve funcionar com esta tecnologia.
O artigo tem por objectivo ajudar o leitor a compreender o algoritmo base por detrás de uma aplicação auxiliar de actualização. Apenas serão expostos alguns excertos de código relevantes para uma percepção lógica do objectivo final.
A linguagem de programação escolhida para desenvolvimento não é relevante.