Arquivo da Categoria: Colunas

Artigos da secção “Colunas”.

De DataTable para ficheiro CSV (mais comum do que seria agradável)

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.

Continuar a ler

A “Arte da Guerra” e a tecnologia

É possível que para muitos o título possa parecer de uma estranheza absurda, quase atroz talvez, ou mesmo sem nexo. No entanto o título indica exactamente o que é pretendido, ao abordar a aplicação de um livro que data do século V AC, escrito por um estratega militar chinês, Sun Tzu.

O que pode ter um texto sobre guerra a ver com software? Talvez mais do que se imagina, pois muitos dos princípios descritos no livro, têm uma aplicação bastante mais vasta que a vertente bélica, havendo inclusive já estudos sobre a aplicação desses princípios a vertentes como a gestão e o negócio.

O livro, encontra-se dividido em treze capítulos, cada um dedicado a um aspecto concreto, que apesar da amplitude do texto, denota sempre a vertente bélica do mesmo. No entanto isto não invalida a sua aplicação ao software! Ora vejamos.

Continuar a ler

Cursores: O Bom, o Mau e o SQL…

O Bom

Uma simples query SQL permite visualizar informação (retornada em formato tabular), sendo essa informação lida por um qualquer programa (app, site, etc.). Mas o que acontece se quisermos que o próprio motor SQL trate a informação?

Consideremos uma tabela de colaboradores duma empresa. Todos os meses temos que processar o ordenado. Para isso executamos algo (e.g. um stored procedure), que tem toda a “magia” e complexidade lá dentro. Mas precisamos de executar tantas vezes quantos registos tivermos. Isso não é possível com um simples SELECT.

Aqui entram os cursores. São uma figura demoníaca muito mal tratada, mas que se virmos bem são até bastantes simples.

Continuar a ler

Introdução aos testes Unitários em C# com MS Unit Test

Introdução

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!

Continuar a ler

Depois da casa roubada, trancas na porta!

Muito se tem falado desde a passada sexta-feira sobre cyber-segurança, mas antes disso pouco se dizia. Isso faz lembrar o ditado português, “depois da casa roubada, trancas na porta”. Ora bem, na passada sexta-feira, um ransomware, infectou imensos sistemas, colocando os dados reféns de um resgate a ser pago aos criadores do malware. Até aqui, nada de inédito, este tipo de ataques tem sido cada vez mais co- mum! O estranho é o “pânico” gerado em volta da situação e mais estranha será a falta de uma política “pró-activa” de prevenção!

Um ransomware, encripta os dados contidos nos discos rígidos e solicita um pagamento de um resgate! Bem, se existirem cópias de segurança, para quê pagar resgate? Restaura-se a cópia de segurança e recomenda-se aos “autores” do “dito cujo” que vão “plantar nabos num qualquer deserto”, porque os dados continuam disponíveis e o ataque foi apenas mais um fracasso! Situação em que se poderia dizer que “venha de lá o assalto” que as trancas estão na porta! Mas infelizmente numa grande quantidade de situações tal não aconteceu!

Continuar a ler

Padrão de arquitetura SOLID

Introdução

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.

O que significa S.O.L.I.D. ?

  • S – Princípio de Responsabilidade Única
  • O – Princípio Open Close
  • L – Princípio de Substituição Liskov
  • I – Princípio de Segregação de Interface
  • D – Princípio de Inversão de Dependência

Continuar a ler

A arte, o engenho e muita diversão!

A Arte

Programar pode ser uma arte, apesar de ser uma acção e não necessariamente uma “expressão” no sentido mais conservador. Nesse caso um programa seria “uma forma de arte” e consequentemente os developers seriam artistas.

Ainda assim, isto nem sempre é observado desta forma! Numa atitude quase que “patológica” ou “desenquadrada” pro- gramar é muitas vezes visto como um ofício, uma tarefa, um trabalho e não propriamente uma forma de arte! Por exemplo e sem divagar muito, ensinam-se artes plásticas, expressão dramática, música, etc… nas escolas, no entanto ainda não existe de forma “massificada” a programação como matéria de ensino e estudo! Ainda que pareça precoce ver os mais novos a aprender a programar, certo será admitir que hoje em dia qua- se todos sabem usar um tablet, ou mesmo um computador!

Continuar a ler

Interagindo com páginas web com C#

Introdução

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.

Continuar a ler

SQL Curtas — Intervalos de datas

Um dos problemas mais habituais em programação SQL é pedir dados que aconteçam no intervalo de duas datas. O tipo de dados dos campos de data/hora variam conforme o SGBD (DATE, TIME, DATETIME, DATETIME2, SMALLDATETIME, etc.), mas o problema descrito em baixo é semelhante em todos.

Problema: Necessito dos registos cujo campo CampoData está no intervalo 2016-01-01 (inclusive) a 2016-12-31 (inclusive).

Continuar a ler