Pessoal,

Eu estava vendo um post sobre um recurso excelente do Visual Studio 2010. O recurso, é a visualização das classes do projetos e as dependências.

Para ver isto no seu projeto, no Visual Studio 2010 Ultimate, abra o menu Architecture/Generate Dependency Graph:

image

Você pode gerar o gráfico de várias maneiras, mas no meu exemplo, escolhi By Class:

image

Agora você clica em alguma classe:

image

E vai vendo os métodos e as dependências. Realmente muito útil.

Mas tem mais ainda, o mesmo post trata de uma ferramenta chamada  GCRootToDGML tool, que monta um gráfico ainda mais interessante, onde você pode navegar entre todas as classes do projeto, inclusive as do Framework.

Assistam o vídeo aqui (em inglês apenas), é realmente muito interessante.

[]s,


Posted in: C# , Visual Studio 2010  Tags: ,
carloscds posted on December 13, 2009 11:47

Hoje em dia é muito comum recebermos dados em planilhas do Excel e ter que importar ou analisar estes dados em nossas aplicações.

Com a ajuda do .Net Framework esta tarefa fica muito fácil e vou demonstrar como você pode abrir um arquivo do Excel e executar um comando Select em uma planilha simplesmente usando Ado.Net.

Para começar, vamos mostrar como está a nossa planilha no Excel e quais as informações importantes para o nosso programa em .Net.

Nossa planilha tem estes dados:

image

Vejam que a planilha tem os títulos das colunas na primeira linha. Estes serão os nomes dos campos para o nosso comando Select, e também o nome da planilha, que é Sheet1, será o nome da nossa tabela.

Agora vamos criar um projeto do tipo Console no Visual Studio:

image

Obs: no meu exemplo estou usando o Visual Studio 2010, mas vocês podem usar o Visual Studio 2008 com .Net Framework 2.0 sem problemas.

Criada nossa solução, vamos agora escrever o código. Para acessar os dados na planilha, vamos usar o Ado.Net e DataSet, para ser mais fácil de entender, e sendo assim precisamos incluir os namespaces apropriados:


using
System.Data;
using System.Data.OleDb;

Após isto, precisamos criar a conexão com a planilha, usando OleDB:


OleDbConnection
conexao = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\temp\planilha.xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES';");


Nesta conexão, usamos o provider Microsoft.ACE.OLEDB e indicamos o noem da planilha, bem como a versão do Excel.

Criaremos agora um Adapter para executar o comando Select, e também um DataSet para armazenar os dados da consulta:


OleDbDataAdapter
adapter = new OleDbDataAdapter("select * from [Sheet1$]", conexao);
DataSet ds = new DataSet();


Observem que o nome da planilha tem um símbolo ‘$’ ao final e está entre colchetes ‘[]’.

Agora vamos abrir a conexão, preencher o DataSet e exibir os dados da planilha:


try
{
   conexao.Open();
   adapter.Fill(ds);

   foreach (DataRow linha in ds.Tables[0].Rows)
   {
     Console.WriteLine("Nome: {0} - Cargo: {1} - Salario: {2}", linha["nome"].ToString(),
                        linha["cargo"].ToString(), linha["salario"].ToString());
   }
}
catch (Exception ex)
{
   Console.WriteLine("Erro ao acessar os dados: " + ex.Message);
}
finally
{
   conexao.Close();
}


Entendendo o código, abrimos a conexão, preenchemos o DataSet com o método Fill() do Adapter e depois executamos um ForEach para exibir os dados. Fazemos também o tratamento de exceção caso ocorra algum erro.

Vocês devem ter percebido que é um código bastante simples, mas de grande ajuda.

[]s,

Carlos.


Posted in: Visual Studio , C# , Visual Studio  Tags:
carloscds posted on November 3, 2009 13:09

Uma das novidades do .Net Framework 4.0 é a programação paralela, ou paralelelismo, que consiste em se utilizar os vários núcleos disponíveis nos computadores atuais, por exemplo, os famosos Core 2 Duo.

Mas como tirar proveito destes recursos em operações simples ? O que vou mostrar agora é como transformar dois comandos simples da linguagem C# com o uso da programação paralela.

Primeiramente vou montar um laço for tradicional:

1 for (int i = 0; i < 100; i++)

2             {

3                 Console.WriteLine("Contador: {0}", i);

4             }

Agora o mesmo for com progamação paralela:

1 Parallel.For(0, 100, delegate(int i)

2             {

3                 Console.WriteLine("Contador: {0}", i);

4             });

Vejam como é simples, basta usar Parallel.For() no lugar de for().

Agora vamos fazer um exemplo com ForEach, primeiro no modo tradicional:

1 List<string> lista = new List<string>() { "Carlos", "Leandro", "João", "Maria" };

2 

3             foreach (string nome in lista)

4             {

5                 Console.WriteLine("Nome: {0}", nome);

6             }

 

Agora com programa paralela:

 

1             Parallel.ForEach<string>(lista, (nome) =>

2             {

3                 Console.WriteLine("Nome: {0}", nome);

4             });

5 

Novamente, basta trocar o foreach() por Parallel.ForEach().

Veja que nos dois exemplo de programação paralela, foram usados delegates() para criar a iteração nos laços.

Bom, agora você está se perguntando: “Por quê vou trocar meu for/foreach por isto ?”, e a resposta é simples: Performance.

Imagine um laço com iterações bem pesadas, como diversos cálculos, você consegue executar várias operações simultaneamente, simplesmente trocando o tipo do laço.

Outro recurso interessantíssimo da programação paralela, são as janelas de Stacks e Tasks do Debug (Debug/Windows):

image

image

Com estas janelas você pode controlar toda a execução do código paralelo, como ver o que está em execução e o que está na fila para ser executado, entre outras coisas.

Resumindo, espero que estes simples exemplos tenham demonstrado o potencial e a simplicidade da programação paralela e além destes recursos que demonstrei aqui ainda existe vários outros da programação. Vale a pena conferir!

[]s,


Posted in: C#  Tags: ,
carloscds posted on September 20, 2009 12:37

Vai acontecer em Londrina nos dia 30 de setembro e 05 de outubro o Londrina TechDay, um evento que vai mostrar as últimas tendências e novidades para o desenvolvimento de software.

Neste edição teremos os seguintes assuntos:

  • Aplicações RestFull com ADO.Net Data Services;
  • Windows Azure;
  • Silverlight 3;
  • Visual Studio 2010 e C# 4.0;

Não deixe de participar. Visite o site do evento e inscreva-se.

[]s,
Carlos dos Santos.


carloscds posted on September 15, 2009 01:19

Pessoal,

Para quem trabalha com mobilidade, um disca útil é a localização dos arquivos de instalação do SQLCE 3.5. São 3 arquivos CAB que ficam no diretório:

C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Devices\wce500\ARMV4i\sqlce.ppc.wce5.armv4i.CAB
C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Devices\wce500\ARMV4i\sqlce.repl.ppc.wce5.armv4i.CAB
C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Devices\wce500\ARMV4i\sqlce.dev.enu.ppc.wce5.armv4i.CAB

Para instalar no dispositivo, basta copiar e executar na mesma ordem que estão acima.

Obs: Os nomes do arquivos podem variar de acordo com a versão do Windows Mobile do equipamento.

[]s,


Posted in: C# , Mobilidade  Tags:
carloscds posted on September 12, 2009 15:44

Posted in: C#  Tags: ,
carloscds posted on September 12, 2009 15:37
Para quem está desesenvolvendo para Windows Mobile e precisa acessar dispositivos Bluetooth, tenho duas dicas muito interessantes:
 
1. Existe um projeto Open source da 32Feet.Net que implementa diversas funcionalidades para bluetooth. Tem um post mostrando o funcionando destes componentes no link: http://blogs.microsoft.co.il/blogs/shair/archive/2009/06/21/working-with-bluetooth-devices-using-c-part-1.aspx
 
2. A Microsoft tem uma suite de componentes chamada Code4Fun Developer Kit, que tem, entre diversas outras funcionalidades, uma implementação para controle de bluetooth. Você pode obtê-la no link: http://www.microsoft.com/express/samples/c4fdevkit/Default.aspx
 
[]s,
Carlos.

Posted in: C# , Mobilidade  Tags:

Sobre mim

Tenho mais de 20 anos de experiência no desenvolvimento de softwares. Sou certificado Microsoft MCP, Microsoft MVP C#. Sou palestrante em diversos eventos Microsoft, tenho diversos artigos publicados em revistas e participo dos fóruns do MSDN.
Vocês podem encontrar mais sobre mim em:

Busca no Blog

Comentários Recentes

Banners

Theme Grabber
Aviso
As opiniões colocadas neste blog são minhas e pessoais e não expressam necessariamente as opiniões de meus empregadores, pareceiros e amigos. Da mesma forma, os comentários feitos por leitores do blog não expressam a minha opinião.

© Copyright 2010 Carlos dos Santos