| Últimas 20 atualizações de RICARDO DA SILVA COELHO |
|
|
[rotulo]
Artigo do tipo Tutorial
Recursos especiais neste artigo:
Contém nota Quickupdate, Conteúdo sobre boas práticas.
[/rotulo]
[lead] Trabalhando com Interfaces em .NETNeste artigo vamos explorar o uso de interfaces no .NET,
explicando os principais conceitos à cerca da mesma e demonstrando através de
um exemplo prático como podemos obter maior reuso e desacoplamento em nossos
projetos com o uso deste recurso.O uso de interfaces é fundamental para
conseguirmos aumentar a abstração de nossas aplicações e reduzir o acoplamento
de nosso código, sendo este recurso fundamental para a compreensão de padrões
de projeto e diversos outros conceitos importantes de engenharia de software.
Em que situação o tema é útil Através do uso de interfaces podemos abstrair detalhes concretos
deixando a aplicação mais independente destas implementações e com uma
manutenção mais fácil, desta forma, os conceitos apresentados aqui são úteis no
desenvolvimento de qualquer software orientado a objetos, além de ajudar o
leitor a compreender melhor alguns frameworks disponíveis no mercado e algumas
funcionalidades do próprio .NET.[/lead] A orientação a objetos
dispõe de recursos que nos permitem aumentar a abstração de nossas aplicações,
reduzindo o acoplamento e aumentando o reuso da mesma, tornando nossos códigos
mais legíveis, aderentes ao mundo real e mais fáceis de manter.
Um dos principais recursos
da orientação a objetos para isso são as Interfaces, sendo esta fundamental
para abstração de nossos aplicativos.
Quando falamos em
interface logo nos vêm à cabeça o conceito de interface com o usuário, nos
remetendo às telas de nossa aplicação. Pois bem, as telas de nossa aplicação
não deixam de ser uma interface de comunicação com o usuário final, mas não é
deste tipo de interface que estamos falando aqui.
Neste
artigo veremos o conceito da estrutura chamada Interface, que visa abstrair
comportamentos comuns a diversos objetos de forma que nossa aplicação possa
fazer referência à estes comportamentos e não aos objetos concretos em si.
[subtitulo]Classe x Interface[/subtitulo]
A
primeira coisa que precisamos ter em mente é a diferença entre uma classe e uma
interface. Ambos representam tipos d
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Atualmente existem dois paradigmas principais de desenvolvimento de software na mente dos desenvolvedores e no mercado. Temos o paradigma estruturado, que antes dominava o mercado, e o paradigma da orientação a objetos (O.O), que cada vez mais vai ganhando seu espaço. O fato é que a orientação a objetos vem tendo sua adoção numa crescente no mercado, mas por outro lado na maioria das vezes ela é subutilizada. É muito comum vermos equipes de desenvolvimento que desconhecem alguns fundamentos básicos da orientação a objetos, que são os pilares da mesma, como por exemplo a diferença entre uma classe e um objeto, os conceitos de value types e reference types, o conceito de abstração com heranças e interfaces, dentre outros. A ideia deste artigo é apresentar alguns dos conceitos mais básicos e fundamentais da orientação a objetos com exemplos pontuais e aplicados ao C#. Vamos aproveitar também para falar sobre algumas palavras reservadas do C# que estão relacionadas aos conceitos que vamos apresentar. Programação estruturada VS Programação Orientada a Objetos
Antigamente, há algumas décadas atrás, o paradigma que predominava no desenvolvimento de software era o da programação estruturada. Basicamente os softwares eram compostos por rotinas e sub-rotinas que chamavam umas às outras, além de variáveis que tinham escopo local (dentro de rotinas / sub-rotinas) ou global. Assim como todo paradigma, o paradigma estruturado tinha seus prós e contras e foi bastante eficiente no que se propôs durante seus anos de domínio no mercado, além de ter sido bastante importante para a evolução da engenharia de desenvolvimento de software. Com o passar dos anos surgiu o paradigma da orientação a objetos, que também não é tão novo como muitos pensam, mas que veio a ganhar mais força na última década. A orientação a objetos surgiu com o objetivo de tornar o desenvolvimento de software menos complexo e mais produtivo. A ideia é termos estruturas de dados que possuem estado e comportamento e que colaboram entre si. Dessa forma deixaríamos de ter todas as rotinas e sub-rotinas “espalhadas” pelo sistema e passaríamos a aloca-las nestas estruturas de dados, de forma coesa, cada qual com sua responsabilidade. Além disso, encapsularíamos as variáveis nestas mesmas estruturas, controlando o acesso às mesmas e tornando público apenas aquilo que for pertinente. O paradigma da orientação a objetos possui três conceitos fundamentais:
• Encapsulamento – Prevê o isolamento a determinados elementos do objeto (métodos /atributos) de acordo com a necessidade de acesso a eles. Este conceito parte da premissa de que nem todo método e atributo precisam estar visíveis e acessíveis publicamente. Existem elementos que são pertinentes apenas ao próprio objeto, outros pertinentes aos objetos filhos e outros que são pertinentes a todos os objetos associados. O encapsulamento se dá através dos modificadores de acesso, que veremos mais a frente.
• Abstração – É a capacidade de focar nos pontos mais importantes do domínio de aplicação do sistema e abstrair os detalhes menos relevantes. Na modelagem de um sistema orientado a objetos, uma classe tende a ser a abstração de entidades existentes no mundo real (domínio da aplicação). Ex.: Cliente, Funcionário, Conta Bancária.
• Polimorfismo – É a capacidade de um elemento assumir diferentes formas. Na orientação a objetos, chamamos de polimorfismo a possibilidade que temos de mudar o comportamento de um mesmo método de um objeto dentro da sua hierarquia. Além disso, podemos citar os seguintes elementos com sendo os alguns dos principais da orientação a objetos:
• Classe – Uma classe é um tipo de dado que representa tudo aquilo que um objeto deste tipo poderá ter/fazer. Na classe determinamos o que será armazenado em seu estado e quais comportamentos ele terá. Ela funciona como uma estrutura de referência para a criação de objetos.
• Objeto – Um objeto é uma instância de uma classe. É a estrutura completa, criada em memória, que irá representar a classe com tudo o que foi definido nela, inclusive com os valores armazenados nos seus respectivos atributos.
• Atributos – Os atributos representam o estado e as características de um objeto. É neles que armazenaremos as informações de nossos objetos. Ex.: Nome, Idade, Endereço etc.
• Métodos – Representam os comportamentos de nossos objetos o
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
De acordo com o Aurélio teste significa, dentre outras coisas, “Prova, verificação da eficiência ou bom funcionamento (de máquinas, materiais etc.)”.
Em toda indústria a questão dos testes é de suma importância para a qualidade final dos produtos desenvolvidos. Usemos a indústria automobilística como exemplo.
• O veículo passa por um “crash test” para avaliar o acionamento do air bag.
• O veículo passa por um teste de velocidade para avaliar o funcionamento dos componentes internos do motor.
• O veículo passa por um teste no túnel de vento para avaliar a desempenho aerodinâmico do mesmo.
Pois bem, a indústria de software, assim como as demais, possui diversas técnicas e metodologias empregadas para garantir a qualidade e o bom funcionamento do mesmo. Por exemplo, testes funcionais, testes de carga etc.
Enfim, existe uma infinidade de tipos e técnicas de testes de software, cada uma com o seu propósito. Alguns destes testes devem ser executados por “testes”, outros por usuários comuns e outros pelo próprio desenvolvedor, como é o caso do teste unitário, que veremos neste artigo.
Testes Unitários
O teste unitário é o teste de menor nível no desenvolvimento de software, ou seja, com ele testamos as menores estruturas que temos em nossos softwares, que são os métodos.
Sendo assim, quando estamos falando de testar unitariamente o software, estamos falando em criar métodos para testar os comportamentos de nosso sistema. Por exemplo, se temos um método somar, teríamos o método de testes “somarTest”.
Quando escrevemos um teste unitário para um método, desejamos garantir que o comportamento do mesmo seja exatamente como o esperado nas mais variadas possibilidades. A ideia é pegar os bugs logo que eles nasçam. Além disso, o teste unitário se torna um ativo do projeto, ou seja, pode ser reutilizado e executado diversas vezes sem onerar o seu tempo.
Testes unitários e TDD são coisas diferentes
Um equívoco muito comum que vejo as pessoas cometerem no início de seus estudos sobre testes unitários é a confusão com TDD. No início muita gente acha que escrevendo testes unitários está desenvolvendo orientado a testes.
TDD é mais do que uma técnica, é um processo de desenvolvimento onde todo código novo da aplicação é escrito a partir de um teste falho, ou seja, você primeiro escreve um teste sem que exista o recurso, este teste obviamente falhará, somente então você escreve a implementação do recurso.
Este processo possui três passos simples, conhecidos como Red, Green, Refactor, onde:
• Red: você escreve o teste sem existir o código. Logo ele falhará.
• Green: implementa a solução, escrevendo o código necessário para que o teste passe.
• Refactor: refatora a solução dada no item dois, de acordo com as boas práticas de programação.
Nota do Devman
Refatoração é uma boa prática de desenvolvimento que consiste em uma série de técnicas para melhorar a qualidade e legibilidade do código sem afetar o comportamento conhecido do sistema.
Pois bem, é preciso entender que testes unitários e TDD estão intimamente relacionados, porém são coisas bem diferentes. O fato de você usar testes unitários não significa que você use TDD.
Uma das diferenças chaves, é a ótica do tempo em que são realizados os testes. Se você implementa seu código e depois cria seus testes, você simplesmente usa testes unitários. Agora, a partir do momento em que você começa a escrever seus testes antes mesmos de implementar a solução que eles testarão, aí você está mais próximo do TDD.
Porém, o ponto fundamental é a motivação das duas técnicas. Enquanto testes unitários têm como objetivo principal garantir que cada parte do sistema tenha exatamente o comportamento esperado, o TDD tem como motivação principal o design do código. Um dos grandes benefícios do uso do TDD é o design da solução. Quando se pensa na ótica do consumidor do código antes mesmo do código existir, você se obriga a pensar e avaliar as melhores e mais simples formas de implementação da solução, o que traz um grande benefício para o design da solução.
Nota do Dev
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Função para retornar Célula do Excel – C#
Olá pessoal, trabalhando na exportação de uma planilha para o excel me
deparei com a necessidade de gerar o relatório com fórmulas, sendo que estas
fórmulas iriam variar de acordo com os dados do relatório. Me vi então diante
da necessidade de converter uma determinada linha/coluna em uma célula do
excel, visto que o número de colunas era dinâmico, chegando facilmente na casa
de dezenas. Por exemplo, coluna 30 equivale a coluna AD do excel.
Diante disso
criei uma classe com duas funções para atender a esta necessidade, classe esta
que venho compartilhar com vocês:
public class ExcelUtil
{
//Array com
as letras das colunas
public static String[]
letras = { "A", "B", "C",
"D", "E",
"F", "G",
"H", "I",
"J", "K",
"L", "M",
"N", "O",
"P", "Q",
"R", "S",
"T", "U",
"V", "W",
"X", "Y",
"Z"};
//Função que
retornar a letra da coluna pelo índice
public static String
GetColumnLetterByIndex(Int32 col){
String celula = ""; //Aqui
verificamos se a coluna passada é maior do que 26
//pois 26
equivale a ultima letra do excel, "Z"
//a
partir daí começamos a ter duas letras... AA, AB, AC, AD...
if (col > 26)
{
//Aqui
pegamos o valor absoluto do resultado da divisão do numero da coluna por 26
//Este
é o indice da primeira letra de nossa coluna
//Ex.:
Col = 50 -> 50
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Exportação para o Excel em .Net –Formatando
células
Olá pessoal, no último artigo nós vimos como fazer uma exportação
simples, inserindo valores nas células.
Hoje iremos entrar um pouco mais no detalhe, onde mostraremos como
recuperar um conjunto de células e manipular a formatação das mesmas.
Podemos utilizar nosso mesmo projeto para este exemplo. A diferença é
que desta vez iremos formatar os títulos das colunas, simulando o cabeçalho de
um relatório.
Vou remover do código abaixo os comentários que já foram citados no
artigo anterior, deixando apenas comentário nas linhas novas, para evitar que o
exemplo fique com a visualização poluída.
No evento onclick de nosso botão, teremos:
private void
simpleButton1_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application
excelApp = new Microsoft.Office.Interop.Excel.Application();
//Objeto que representa um conjunto de células
Microsoft.Office.Interop.Excel.Range celulas;
excelApp.Workbooks.Add(Type.Missing); excelApp.Visible
= true; //Exportação
de colunas
excelApp.Cells[1,1] = "Codigo";
excelApp.Cells[1,2] = "Nome";
excelApp.Cells[1,3] = "Data de Cadastro";
excelApp.Cells[1,4] = "Percentual de Desconto";
//Vamos
agora centralizar os títulos
celulas = excelApp.get_Range("A1", "D1");
celulas.HorizontalAlignment =
Microsoft.Office.Interop.Excel.Constants.xlCenter;
//Recuperamos
o conjunto de células de A1 até D1
celulas = excelApp.get_Range("A1",
"D1");
//Após recuperarmos, podemos manipular o conjunto
//Neste
caso, mudaremos a cor para cinza
celulas.Interior.Color = ColorTranslator.ToWin32(Color.LightGray);
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Exportação para o Excel em .Net – Realizando
uma exportação simples
Olá pessoal, no último artigo nós vimos as principais classes
utilizadas e aquilo que é necessário para que possamos trabalhar com planilhas
do excel em nossa aplicação.
Hoje iremos entrar na codificação, explicando e montando um exemplo de
uma exportação simples, já com a formatação básica dos campos.
Para o nosso exemplo, crie um novo projeto WindowsForms e conforme foi
falado no último artigo, adicione a referência à biblioteca “Microsoft.Office.Interop.Excel”
ao projeto.
Neste exemplo, exportaremos uma série de dados “soltos” na planilha,
apenas para demonstrar o básico da exportação.
Insira um botão no formulário e coloque o seguinte código no click do
mesmo:
//Não esqueça do Using no namespace
using Microsoft.Office.Interop.Excel;
private void
simpleButton1_Click(object sender, EventArgs e)
{
//Aqui
criamos um objeto que representa a aplicação, no qual iremos interagir
//Inicialmente
apenas este objeto é suficiente para nossa exportação básica
Microsoft.Office.Interop.Excel.Application
excelApp = new Microsoft.Office.Interop.Excel.Application();
//Adicionamos um novo WorkBook em
nosso documento
//Type.Missing
representa a ausencia de um informação.
//Usamos
para não nenhum template para nosso documento
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Exportação para o Excel em .Net –
Introdução
Olá pessoal, esses dias tive a necessidade de gerar algumas planilhas no excel e tive uma certa dificuldade de encontrar um material consistente que deve uma geral neste assunto. Encontrei muitos pedaços de exemplo, outras coisas tiveram que ver na marra mesmo, na base da tentativa e erro. Resolvi então fazer um apanhado geral e mostrar para vocês como funciona a integração de aplicações. Net com excel, demonstrando as principais funcionalidades da biblioteca que temos disponível. Faremos nosso exemplo utilizando WindowsForms e C#.
No .Net nós temos as seguintes classes e
NameSpaces para manipular arquivos do excel:
Microsoft.Office.Interop.Excel.Application
Microsoft.Office.Interop.Excel.Range
Microsoft.Office.Interop.Excel.Workbook
Microsoft.Office.Interop.Excel.Worksheet
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Carregando dinamicamente um user control no ASP.NET
Olá pessoal,
um dia desses tive a necessidade de inserir um controle UserControl e
dinamicamente em uma página aspx. Após algumas tentativas cheguei a uma solução
no qual apresentarei para vocês.
Para o nosso exemplo, crie uma
nova aplicação WEB no visual studio. Clique com o botão direito no projeto, Add
=> New Item. Selecione a opção Web User Control para criamos um novo user
control.
Insira alguns controles no
UserControl, lembrando que carregaremos o mesmo no nosso aspx dinamicamente.
Feito isso, vamos agora carregar
o conteúdo de webFormTeste dentro do nosso user control que está na nossa
página principal. Para isso, digite o seguinte código no Page_Load da página
principal.
public partial
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Orientação a Objetos (Delphi/C#) - Introdução
Olá pessoal, hoje começarei a falar sobre orientação a
objetos. Vou procurar abordar os principais conceitos de orientação a objetos,
demonstrando exemplos de implementação em Delphi e C#. Falaremos sobre
conceito, classes, objetos, encapsulamento, polimorfismo, interfaces dentre
outros.
O mais importante em orientação a objetos não é saber criar
e destruir um objeto ou saber fazer um override e um overload. Isso são apenas
detalhes, o importante é dominar o conceito, e principalmente compreender o
quão útil e produtivo a orientação a objetos pode ser no nosso dia a dia.
Antigamente, no modelo procedural e estruturado, tínhamos
rotinas e subrotinas sendo executadas de forma seqüencial a fim de obtermos o
processamento de determinada rotina. Basicamente tínhamos variáveis locais e
globais, sem definição de escopo para as mesmas.
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Ciclo de vida de uma página ASPX - Parte 1 Olá pessoal, nos artigos anteriores falei sobre o ciclo de vida de uma aplicação ASP.NET, explicando como é realizada a interpretação da requisição pelo servidor web(IIS) e como o ASP.NET procede durante esta requisição. Hoje, começarei a falar sobre o ciclo de vida da página ASP.NET. Assim como a aplicação ASP.NET tem um ciclo de vida, a página de uma aplicação ASP.NET também tem seu ciclo de vida. Este ciclo inclui inicialização, instanciação de controles, manutenção de estado, execução de eventos e renderização. As fases deste ciclo de vida são as seguintes: Onde em cada uma das fases, temos as seguintes características: Page request - Ocorre antes do ciclo de vida da página começar. Quando a página é requisitada por um usuário, o ASP.NET determina quando a página precisa ser analisada e compilada(antes do inicio da vida da página), ou uma versão em cachê da página pode ser enviada em resposta sem rodar o ciclo de vida da página. Start
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Ciclo
de vida de uma aplicação ASP.NET – Parte 2
Olá
pessoal, no primeiro artigo desta série, expliquei como é o tratamento do
servidor WEB e como o ASP.NET se comporta quando recebe uma requisição no
servidor. Hoje daremos seqüência ao ciclo devida de uma aplicação ASP.NET
demonstrando a seqüência de operações que ocorrem no objeto HttpApplication
quando o mesmo é instanciado.
Enquanto a requisição é processada, uma série de
eventos são disparados. O conhecimento destes eventos é fundamental quando
desejamos implementar nossa própria HttpApplication. Estes eventos são:
1. ValidateRequest()
– Responsável por validar a requisição, verificando se a mesma possui algum
código malicioso.
2.
Realiza o mapeamento das URL caso as mesmas
tenham sido configuradas na seção UrlMappingsSection do web.config.
3.
Dispara o evento BeginRequest()
4. Dispara
o evento AuthenticateRequest()
5. Dispara
o evento PostAuthenticateRequest()
6. Dispara
o evento AuthorizeRequest()
7. Dispara
o evento PostAuthorizeRequest()
8. Dispara
o evento ResolveRequestCache()
9. Dispara
o evento
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Ciclo de vida de uma página ASPX - Parte 1 Olá pessoal, quando comecei a desenvolver aplicações em ASP.NET, um dos primeiros pontos que precisei compreender foi o ciclo de vida de uma aplicação ASP.NET. Isso é fundamental para desenvolvermos aplicações WEB com ASP.NET. Neste artigo, explicarei sucintamente qual o ciclo de vida de uma aplicação ASP.NET, demonstrando a seqüência de eventos que são disparados pela mesma quando realizamos uma requisição ao servidor. Tudo começa quando realizamos uma requisição do browser para o servidor web. O servidor então recebe esta requisição, verifica a extensão do arquivo e com isso determina como será processada essa requisição, redirecionando a mesma para a extensão ISAPI correpondente, no nosso caso ASP.NET. Quando o ASP.NET recebe a primeira requisição da aplicação, uma classe chamada ApplicationManager cria uma instância de application domain. Application domain representa o domínio da aplicação, o que permite que cada aplicação seja descarregada separadamente. Depois que o application domain é criado, ele instancia um objeto chamado HostingEnvironment e então o ASP.NET cria
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Trabalhando com arquivos e diretórios no DotNet – Parte 2
Olá pessoal, hoje seguiremos falando sobre como interagir e
trabalhar com arquivos e diretórios. No último artigo demonstramos as
propriedades e métodos da classe FileInfo. Hoje falaremos sobre diretórios.
Para lidar com diretórios, nós temos a classe DirectoryInfo.
Ela encapsula todo o comportamento e estado necessários para lidar com
diretórios.
Vamos começar apresentando algumas propriedades da classe
FileInfo.
CreationTime –
Esta propriedade retorna a data e hora de criação do arquivo.
Exists – Retorna
true quando o arquivo existe ou false quando o mesmo não existe.
FullName –
Retorna o nome completo do arquivo, incluindo o diretório.
IsReadOnly –
Indica se o arquivo é somente leitura ou não
Name – Retorna o
nome do arquivo
LastAccessTime –
Retorna a data e
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Trabalhando com arquivos e diretórios no DotNet – Parte 1
Olá pessoal, hoje começaremos a falar sobre como interagir e
trabalhar com arquivos e diretórios, criando, abrindo, excluindo e obtendo
informações a respeito dos mesmos.
O namespace System.IO é o namespace que usamos para trabalhar com
arquivos. Neste namespace nós temos tudo o que precisamos para interagir com
arquivos e diretórios. Neste namespace nós temos a classe FileInfo. Com esta
classe conseguimos extrair informações do arquivo, como por exemplo data de
criação, tamanho, nome, último acesso dentre outras.
Vamos começar apresentando algumas propriedades da classe
FileInfo.
CreationTime –
Esta propriedade retorna a data e hora de criação do arquivo.
Directory –
Retorna o diretório no qual o arquivo está inserido
DirectoryInfo –
Retorna o path completo do diretório no qual está inserido
Exists – Retorna
true quando o arquivo existe ou false quando o mesmo não existe.
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Criptografia com MD5 no DotNet - Parte 2
Olá pessoal, hoje mostraremos como implementar a verificação
de um valor criptografado com algoritmo MD5 em uma aplicação C# com
windowsForms.
Olá pessoal, vimos no último artigo, que a framework .Net
possui classes que facilitam nossa vida quando o assunto é criptografia. Vimos
como implementar como criptografar um
valor usando o algoritmo MD5. Como todos já devem saber, não existe algoritmo
para descriptografar o MD5, ou seja, não tem como revertermos uma criptografia
realizada.
Se não é possível descriptografar um hash MD5, como podemos
então verificar se uma senha é válida por exemplo. Simples. Nós temos que
criptografar o valor a ser verificado e comparar com o MD5 armazenado.
Para este nosso exemplo, vamos usar a aplicação do último
artigo. Apenas adicione mais um TextBox e renomeie o mesmo para
TxtVerificaValor. Adicione também um novo botão. A idéia neste exemplo é
digitar um valor em TxtValor, clicar no botão para criptografar, assim o valor
de TxtValorCriptografado será preenchido. Depois vamos digitar um valor
qualquer em txtVerificaValor e clicaremos no botão verificar, que irá comparar
o hash gerado com o hash do valor a ser verificado.
Crie o método abaixo que será responsável por verificar o
valor passado se coincide com o Hash me questão.
// Verifica se o valor é compativel com o hash passado
public bool verifyMd5Hash(string valor, string
valorCriptografado)
{
// Criptografamos
o valor passado como parâmetro
// utilizando o
mesmo método citado no artigo anterior
string
NovoValorCriptografado = GerarMD5(valor);
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Criptografia com MD5 no DotNet – Parte 1
Olá pessoal, hoje mostraremos como implementar o algoritmo
de criptografia MD5 no .Net em uma aplicação C# com windowsForms.
Olá pessoal, a framework .Net possui classes que facilitam
nossa vida quando o assunto é criptografia. Hoje nós veremos como implementar
uma rotina de criptografia utilizando o algoritmo MD5. Estas classes ficam no
namespace System.Security.Cryptography.
Para este nosso exemplo, crie uma nova aplicação
WindowsForms e adicione dois edits e um botão no formulário principal. Renomei
um dos edits para TxtValor e o outro para txtValorCriptografado.
A idéia é digitarmos o valor a ser criptografado no TxtValor
e exibir o mesmo já criptografado no txtValorCriptografado.
Crie o método abaixo
que será responsável por efetuar a criptografia.
// Nosso método recebe como parâmetro o valor a ser criptografado e
retorna o mesmo
public string GerarMD5(string valor)
{
// Cria uma nova
intância do objeto que implementa o algoritmo para
// criptografia MD5
MD5 md5Hasher = MD5.Create();
// Criptografa o valor passado
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Alterando a senha do
SYSDBA no Firebird Olá pessoal, hoje
mostraremos como alterar a senha do usuário SYSDBA em um banco de
dados Firebird. Todos
que trabalham com firebird sabem que diferentemente de outros SGDBs,
durante sua instalação não temos a opção de informar a senha
“mestre” do banco de dados. No firebird, esta senha, que é a
senha mestre do usuário SYSDBA que é o usuário mais forte do SGDB,
só pode ser alterada depois, através de um utilitário de linha de
comando disponibilizado pelo FBServer. Manter
a senha padrão é um tanto quanto complicado, pois todos sabem que a
senha de SYSDBA é masterkey, sendo assim, sua base fica extremamente
exposta. Para minimizar os riscos de exposição de sua base de
dados, podemos alterar a senha do usuário SYSDBA. Para
isso, abra o prompt de comando do windows e navegue até o diretório
bin da pasta de instalação do seu firebird server. No meu caso, o
mesmo está instalado em “C:\Arquivos de
programas\Firebird\Firebird_1_5”, neste caso utilizarei o seguinte
comando no prompt de comando para navegar até a pasta:
cd “C:\Arquivos de
programas\Firebird\Firebird_1_5\bin” Nesta
pasta, temos alguns utilitários do Firebird para administração do
servidor. Dentre eles temos o gsec que é quem utilizaremos
para alterar a senha do usuário SYSDBA. Para
isso, ainda no prompt de comando, vamos logar no gsec, através
da seguinte linha de comando:
gsec -user sysdba
-password masterkeyCom este comando, vamos
logar no gsec. Após logar,
basta executarmos mais uma linha para alterar a senha do SYSDBA. Para
isso digite o comando abaixo:modify sysdba -pw
newpasswd
Onde newpasswd
é a nova senha definida para o usuário SYSDBA.
Vamos ficando por aqui,
espero que tenham gostado e que as informações passadas sejam úteis
no seu dia-a-dia. Fiquem a vontade para deixar comentários, enviar
emails, com dúvidas, críticas e sugestões de temas. Um grande abraço. Ricardo Coelho.
-->">
|
|
|
|
Olá pessoal, hoje mostraremos como implementar um captcha
básico em uma aplicação WebForm com ASP.NET.
Para nosso exemplo, vamos criar uma nova ASP.NET
WebApplication.
Após criada, crie uma nova página e chame-a de Captcha.aspx.
No evento OnLoad desta página, insira o seguinte código:
Bitmap objBMP = new System.Drawing.Bitmap(60, 20);
Graphics objGraphics = System.Drawing.Graphics.FromImage(objBMP);
objGraphics.Clear(Color.SkyBlue);
objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;
// Fonte configurada para ser usada no texto do captcha
Font objFont = new Font("Times New
Roman", 10, FontStyle.Strikeout);
string captchaValue = "";
int[] valuesArray = new int[8];
int x;
//Cria o valor randomicamente e adiciona ao array
Random autoRand = new Random();
for (x = 0; x < 8; x++)
{
valuesArray[x] = System.
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Olá pessoal, hoje mostraremos como implementar o recurso de
AutoComplete em um TextBox em uma aplicação WindowsForms.
O TextBox nos fornece propriedades para que possamos
implementar facilmente este recurso de autocomplete.
Vamos fazer um exemplo para demonstrar o uso destas
propriedades. Crie uma nova aplicação WindowsForms e adicione um novo textBox
ao formulário.
As propriedades AutoCompleteSource e AutoCompleteMode, nos
permite configurar o recurso de autocomplete. Estas propridades possuem os
seguintes valores:
AutoCompleteSource
AllSystemResources – Equivalente ao FileSystem e AllUr.
AllUrl – Equivalente ao HistoryList e RecentlyUsedList.
CustomSource – Exibe uma lista personalizada, definida em
AutoCompleteCustomSource.
FileSystem – Exibe items do sistema de arquivos como fonte.
FileSystemDirectories – Determina que apenas nomes de
diretórios serão exibidos. Ignorando nomes de arquivos.
HistoryList – Exibe o histórico de todas as URLs como fonte.
None – Determina que o recurso de AutoComplete não será
habilitado.
RecentlyUsedList – Exibe lista de URL’s mais usadas
recentemente.
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Toda linguagem que se preze, nos fornece meio de tratar uma exceção. O tratamento de exceções é algo fundamental para a qualidade de nossos sistemas, porém, muitas das vezes acabamos por não fazer o nosso dever de casa e isso nos traz sérios problemas na manutenção de nossos sistemas. Hoje mostraremos como é o tratamento de exceções no C#.
No C#, o tratamento de exceções é feito através do seguinte bloco de código:
try
{
//Rotinas a serem executadas por sua aplicação
}
catch (Exception E)
{
//Bloco executado caso ocorra alguma exceção
}
finally {
//Bloco sempre executado ao final, independentemente de
//ter ocorrido erro ou não
}
O bloco de código acima, demonstra a estrutura do tratamento de exceções no C#. Dentro do bloco try, temos o que chamamos de “código protegido“. Abaixo, no catch, nós temos o código a ser executado caso ocorra alguma exceção no nosso código protegido. Por fim, temos o bloco finally, que sempre será executado.
Crie uma aplicação WindowsForms, inclua um botão no formulário e no
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
| |
|