Archive for julho, 2009

Google Code Jam 2009

Olá,

O Google code jam é um desafio de programação do google, onde são postadas tarefas, que devem ser resolvidas utilizando quaisquer métodos, recebendo uma entrada randômicamente gerada e calculando um arquivo de saída a ser postado.

O link do desafio: http://code.google.com/codejam/

Para quem se interessou, cada tarefa é explicada e você tem um tempo limite para resolvê-la. Quando achar que sua resolução está ok, você baixa um arquivo de entrada randômicamente gerado, coloca a rodar na sua resolução e manda de volta a saída formatada de acordo com a especificação. O google analisa a saída automaticamente e te confirma se sua resolução é correta ou não.

Entre os prêmios, grana e vagas no google, além do reconhecimento da comunidade!

Boa sorte para quem vai participar …

Método em C# para ler arquivo de Texto

Olá, estou disponibilizando aqui, um simples método em C# para ler um arquivo txt do disco, ele faz a leitura linha a linha e joga os valores em um array, desta maneira você pode obter informações sobre quantidade de linhas do arquivo, qual frase/texto estava em um determinada linha.. e etc.
 
Detalhe estou usando a classe OpenFileDialog para abrir a caixa de dialogo no momento de importação do arquivo.
 
private string arquivo;
private string mensagem;
private void MetodoParaLerLinhaArquivo()
{
   
List<string> mensagemLinha = new List<string>();
   
using (OpenFileDialog openFileDialog = new OpenFileDialog())
    {
         openFileDialog.Title =
“xxxxxxxxxo”;
         openFileDialog.InitialDirectory =
@”c:\Program Files”; //Se ja quiser em abrir em um diretorio especifico
         
openFileDialog.Filter = “All files (*.*)|*.*|All files (*.*)|*.*”;
         openFileDialog.FilterIndex = 2;
         openFileDialog.RestoreDirectory =
true;
        
if (openFileDialog.ShowDialog() == DialogResult.OK)
         arquivo = openFileDialog.FileName;
    }
   
if (String.IsNullOrEmpty(arquivo))
    {
        
MessageBox.Show(“Arquivo Invalido”, “Salvar Como”, MessageBoxButtons.OK);
    }
   
else
   
{
    
using (StreamReader texto = new StreamReader(arquivo))
     {
        
while ((mensagem = texto.ReadLine()) != null)
        {
            mensagemLinha.Add(mensagem);
        }
     }
   
int registro = mensagemLinha.Count; //total de linhas do arquivo.
   
for (int i = 0; i < mensagemLinha.Count; i++)
   {
    
TextBox textbox1 = new TextBox();
     textbox1.Text += mensagemLinha[i];
    
File.WriteAllText(arquivo, mensagemLinha[i] + “1″);
   }
 }
}
 
 
Também estou escrevendo nesta semana uma série de dicas da linguagem C# no meu blog, para acompanhar clique aqui
 
Abraço e até…
 
 
Nelson Borges

Importando e exportando arquivos do Excel 2007 com o SQL Server Integration Services 2005

Introdução

Importar arquivos do Excel para uma base de dados SQL Server é uma tarefa comum para DBAs e desenvolvedores. Além disso, no caso de um data warehouse, é necessário extrair dados de várias fontes. Na maioria das vezes, o Excel é uma delas.

Como sabemos, importar e exportar dados do excel é simples. É somente arrastar alguns controles dataflow e configurar de acordo com a sua necessidade.

Importando arquivos do Excel 2007

Se você precisa importar um arquivo do Excel, pode usar um Excel Source dos Data Flow Sources no SQL Server Integration Services (SSIS) e selecionar a versão correta na lista.

Repare que o ultimo item da lista são arquivos das versões do Microsoft Excel 97-2005, o que significa que não há oficialmente como importar arquivos do Excel 2007 à partir desta lista. No entanto, seguindo os passos abaixo, conseguirá importar arquivos do Excel 2007 para o SQL Server.

1. Arraste um data flow source do tipo OLE DB Source para o data flow task.

2. Dê um duplo clique no OLE DB Source e clique no botão New para criar um OLE DB Connection Manager.

3. Clique no botão New na tela Configure OLE DB Connection Manager.

4. Selecione Native OLE DB\Microsoft Office 12.0 Access Database Engine OLE DB Provider à partir da lista de provedores OLE DB.

5. Selecione a opção All e no item Extended Properties digite Excel 12.0. Depois disso, você verá uma tela como a imagem abaixo:

6. Digite o nome do arquivo (incluindo o diretório) e certifique-se que ele tem a extensão xlsx.

7. Clique em OK, você será direcionado à tela inicial, para selecionar a pasta de trabalho (worksheet) do Excel.

Exportando para um arquivo do Excel 2007

Não há diferenças para exportar para um arquivo do Excel. É só modificar de novo o destino da conexão como antes.

Power for Rich .NET AJAX Applications

Olá,

Navegando por essa internet a fora, encontrei este projeto no codeplex que me chamou bastante atenção, e por isso gostaria de disponibilizar para os demais.

Developing and deploying rich internet business applications has never been this simple, fast, cost-effective and secure

Web development & UI
Visual WebGui is an open source RIA platform, atop standard .NET. Its framework enables
development & deployment of AJAX desktop-like web applications on the server which are then virtualized on a standard
browser with no specific installation.
See Web Design Tools project
See Silverlight extension project

Web Development & UI Design

Visual WebGui RIA platform/framework combines next generation web user & developer experiences which free you to focus on your customer’s satisfaction and delivering solutions with faster ROI. Since Visual WebGui is based on standard, proven technologies it enables you to deliver
flexible, high performing, complex web applications without the steep learning curve and risks involved.
RIA Web Development

Simply and quickly deliver complete RIAs

  • Simple Development - drag and drop designers
  • Simple Migration & Modernization - based on common APIs
  • Simple Adoption - no new learning skills
  • Rich UI Design
  • Complete Functionality
  • Complete Flexibility
  • Complete Extensibility

 

Para ver o projeto no codeplex, acesse -> http://visualwebgui.codeplex.com/

Abraço,

Nelson Borges

2 novos membros no DevFranca

Ao infinito e além..

Olá, venho informar que estamos com mais 2 novos membros na comunidade trata-se de dois excelentes profissionais o qual tive o privilégio de trabalhar em alguns dos projetos que participei, por isso tenho certeza que eles irão agregar muito conhecimento para nossa comunidade.

São eles:

Bruno Bemfica: Consultor independente, possui amplo conhecimento em desenvolvimento de sistemas nas linguagens  .NET e Java, além de contribuir com várias comunidades, escrevendo artigos, blog´s e disseminando conhecimento, através de fóruns, palestras e eventos.

Thiago Gomes: Teve participação em projetos para grandes empresas como Microsoft, McDonald´s, SIL, Itau e etc, atualmente trabalha para um Partner Microsoft, evangelizando tecnologias como Silverlight, WPF e IE8, conhecedor  da plataforma .net, também efetua desenvolvimento de sistemas na mesma e quando sobre um tempo ainda é designer.

É com grande prazer que dou as boas vindas aos dois e espero que escrevam bastante post e enriqueçam nossa comunidade.

 Abraço,

 Nelson Borges

Criando uma janela modal para validação de erros com ASP.NET

A introdução do AJAX Control toolkit abriu muitas possibilidades interessantes para desenvolvimento de interfaces de usuário mais ricas em ASP.NET. Adicione a isso uma IDE maravilhosa como o Visual Studio, e obtemos resultados estonteantes, sem muito esforço.

Callouts para cada validator

Modal exibindo os erros ao clicar no botão

Neste artigo, veremos como melhorar as validações client-side usando o AJAX Control Toolkit. Abaixo estão screen shots do que nós estamos tentando conseguir. O propósito disto é melhorar a experiência do usuário com muito pouco trabalho.

Criando um form simples

Usando o Visual Studio (ou o Visual Web Developer) crie um novo “ASP.NET Web Application“ (File>>New>> Project>>Visual C#>>Web>>ASP.NET Web Application). Eu criei um simples formulário, como esse abaixo:

Um formulário ASP.NET simples.

Como podemos ver, ele se parece com qualquer outro formulário em ASP.NET. Ele tem alguns textboxes, e labels correspondentes. Eu adicionei alguns validators para cada textbox. Name e email são obrigatórios, definidos pelo “RequiredFieldValidator”. A idade deve estar entre 18 e 100, garantida pelo “RangeValidator”. Existem “RegularExpressionValidator”s para email, e podemos usar validators feitos por nós mesmos para definir o CEP. E por último, um botão “Submit”, ou seja: Uma página ASP.NET simples.

Adicionando os callouts dos validadores

Primeiro, colocamos um controle “ValidationSummary” na página. Agora, todos os nossos erros serão exibidos em um único lugar. Isto será útil para implementar a janela modal na próxima sessão. Note que coloquei a propriedade “Text” dos validators para “*”, pois desejamos que as verdadeiras mensagens de erro sejam exibidos no validation summary.

Os callouts são efetuados usando o “ValidatorCalloutExtender” do AJAX Control Toolkit. Arraste um “ValidatorCalloutExtender” do toolbox para a tela. Defina o “TargetControlID” deste extender para o ID do nosso validator. Coloquei cinco validators na minha página, então utilizei o mesmo número de controles “ValidatorCalloutExtender”, um para cada validator. Modifique o “TargetControlID” de cada extender para que aponte para um validator.


Depois de adicionar o validation summary e o ValidatorCalloutExtenders

Por incrível que pareça, isso é tudo o que precisamos para fazer callouts com um efeito bonito. Execute sua página e clique no botão “Submit” sem digitar nada nas textboxes. Você verá essas callouts. Tente digitar informações erradas em qualquer uma das textboxes, um callout aparecerá perto dele, exibindo a mensagem de erro da validação que falhou.

Criando a janela modal (E desabilitando o background!)

A melhor parte do nosso modal é que ele desabilita a janela completamente. Ela adiciona uma camada translucida sobre o background, deixando a tela limpa. Novamente, o AJAX Control Toolkit vem para nos auxiliar. O “ModalPopupExtender” é perfeito para isso.Arraste um controle desse tipo para a tela. Depois disso, criamos uma DIV que vai agir como popup para nós, conforme o código abaixo:

<ajaxToolkit:ModalPopupExtender ID=”ModalExtnd1″

runat=”server” TargetControlID=”lblHidden”

PopupControlID=”SummaryDiv” BackgroundCssClass=”popupbg” >

</ajaxToolkit:ModalPopupExtender>

<div id=”SummaryDiv” class=”popupdiv”>

<table width=”100%” style=”font-family: “Trebuchet MS”, Tahoma, Verdana”>

<tr><td bgcolor=”skyblue”>

Errors on this page !

</td></tr>

<tr><td>

<asp:ValidationSummary id=”ValSum1″ runat=”server” Font-Names=”Arail”>

</asp:ValidationSummary>

</td></tr>

<tr><td align=”center”>

<input type=”button” value=”OK” onclick=”$find(“ModalExtnd1”).hide();”/>

</td></tr>

</table>

</div>

<asp:Label ID=”lblHidden” runat=”server” Text=”hidden” CssClass=”hidelbl”>

</asp:Label>


Nós definimos a propriedade “PopupControlID” do “ ModalPopupExtender”, para que aponte para “SummaryDiv”, o id da <div> recém criada.
A propriedade “TargetControlID” do ModalPopupExtender, precisa ser definida. No nosso caso nós iremos definí-la apontando para um label escondido. Faremos isto por que queremos suprimir a funcionalidade “show/hide” deste extender. Nossa <div> consiste em um botão HTML, no qual a janela modal é escondida quando clicamos. Note também que movemos o validation summary para dentro da nossa <div>.

Form depois da adição do ModalPopupExtender e da

Form depois da adição do ModalPopupExtender e da

Vejamos agora o CSS para o nosso exemplo:

<style type=”text/css”>

.popupdiv{background-color:ivory;border:solid 1px skyblue;width:250px;display:block}

.popupbg{background-color:gray; filter: alpha(opacity=60); opacity:0.60}

.hidelbl{display:none;}

</style>


Existem três classes definidas aqui. A classe “popupbg” está atribuída à propriedade “BackgroundCssClass” do ModalPopupExtender. Perceba que definimos no código a opacidade do background na janela modal.

Agora, um pouco de javascript. Esta página contém uma função de javascript que é chamada para exibir ou esconder a janela modal, no evento “OnClick” do botão”submit”. Esta função deve ser inteligente o suficiente para exibir a janela modal somente em caso de falha da validação:

<script type=”text/javascript”>

function ShowModalDialog()

{var x= $find(”ModalExtnd1″);

Page_ClientValidate();

if(!Page_IsValid)

x.show();

}

function init()

{document.getElementById(“SummaryDiv”).style.display=“none”;}

</script>


Aqui nós utilizamos a API de validação client-side do “ASP.NET”.
Uma chamada ao “Page_ClientValidate” ativa todos os validators. Se algo falhar, a variável global do javascript “Page_IsValid” é definida como falsa. Agora para exibir ou esconder a janela modal dialog box, anexaremos um handler ao botão submit com o seguinte código Server-side:

protected void Page_PreRender(object sender, EventArgs e)

{

btnSubmit.Attributes.Add(”onmouseup”, “ShowModalDialog();”);

}


Execute o exemplo, com alguns dados inválidos. Veremos a exibição da janela modal.

Janela Modal exibindo erros ao clicar no botão submit. Repare que o callout está visível por trás do background translúcido.

Janela Modal exibindo erros ao clicar no botão submit. Repare que o callout está visível por trás do background translúcido.

Mas há um pequeno problema que eu encontrei aqui. Se a propriedade “display” da <div> estiver definida como “none” ela não será exibida, embora o background seja desabilitado. Então eu tive que definir esta propriedade com o valor “block”. Porém, isto nos traz outro problema: A <div> fica visível por uma fração de segundo, quando a página carrega. Para resolver isto, eu tive que adotar uma solução um tanto quanto deselegante, mas funcional. Defina no código da página:

<body onload=”init();”>


Execute o exemplo novamente. Desta vez a <div> não vai piscar quando a página carregar!

Quaisquer sugestões, comentários e críticas são sempre bem-vindos. Abraços e keep coding!

VSTO Support Delphi Prism

Olá,

Navegando na galeria de pacotes do visual studio, econtrei este pacote (abaixo), muito interessante, testei o mesmo, e achei muito bacana, por isso estou disponibilizando aqui.

 Para ver mais acesse:  http://visualstudiogallery.msdn.microsoft.com/en-us/1020E5FC-5ABD-4D62-BBFA-45C92D421A7D

Tamém estou disponibilizando no meu blog, vários post sobre customização do visual studio, para acessar vá em :
http://nelsonborgesjr.spaces.live.com/blog/

VSTO Support Delphi Prism

The VSTO Support for Delphi Prism allows you to program Microsoft Office application-level extensions (COM add-ins) based on Microsoft Visual Studio Tools for Office exactly in the same way as you do it using VB.NET and C#.

VSTO=

This wizard adds a new wizard to Visual Studio which you can use to create VSTO-based solutions in Delphi Prism. With the VSTO Support for Delphi Prism you can benefit from all Visual Studio Tools for Office features including the VSTO programming and deployment models, the Ribbon UI designer, MSI-based setup projects, Outlook form regions and Office Task panes.

Requirements and limitations

  • Visual Studio 2008 Professional or Team System with VSTO and Delphi Prism installed. 

 

Abraço,

Nelson Borges

Download VSTO Support for Delphi Prism

Quais as diferenças entre um DataSet e um DataSet Tipado ?

Olá, muitos programadores que estão iniciando, costuma perguntar quais as diferenças de um dataset para um dataset tipado.  O Dataset (objeto do Ado.net)  possui a representação do banco (tabelas, colunas, schema e etc) . Você pode instanciar um objeto do tipo Dataset e criar seus recursos de manipulação de dados como inclusão, exclusão, alteração e busca de dados, fazendo o objeto na mão, um exemplo é criar um datareader  e preencher uma entidade e posteriormente esta entidade passar o valor a um campo da sua interface gráfica (esse é o cenário mais encontrado no mercado), quando optamos por este modelo estamos utilizando o DataSet, no entando não podemos dizer que ele é tipado, pois no nosso código estamos passando valores do banco para um tipo (entidade).

 O DataSet tipado soluciona este “problema”,  pois ao contrário do método acima onde temos um objeto dataset vazio, ele já possui toda a estrutura dos dados no esquema, em forma de XML (arquivos xsd).

 Existem alguns post´s bem legais falando de como criar um dataset tipado, vale a pena ler, segue abaixo:

Como criar um Dataset tipado
http://support.microsoft.com/kb/320714/pt-br

Como usar o objeto Dataset
http://www.macoratti.net/vbn_dts4.htm

Editando com Dataset
http://www.macoratti.net/vbn_tdds.htm

 

Abraço

Nelson Borges