Título de SD da Imagine Cup Brasil 2008 vem para Pernambuco

Pessoal, após ser avisado por nosso amigo Lucas Mello, que estava assistindo ao vivo a transmissão da final da Imagine Cup, entrei em contato com Renato Ferreira, da equipe Ecologix, finalista da Imagine Cup, e confirmei: a equipe de Renato, Carlos Eduardo ambos estudantes aqui do CIn, e dos irmãos Roberto e Eduardo Sonnino de São Paulo foi a campeã nacional com o projeto Ecologger. Eles irão para a França, no período de 3 a 8 de julho, representar nosso país nas finais mundiais. Acabou de sair notícia no Pernambuco.com também: http://www.pernambuco.com/ultimas/nota.asp?materia=2008528171602&assunto=196&onde=1 . Pelo que eu soube por Lucas também, a equipe de Daniel Ferreira, líder de nossa célula, ficou em terceiro lugar, um ótimo resultado!

Parabéns a todos, e lembrando que para que esta hegemonia do CIn e de Pernambuco permaneça, nós devemos nos espelhar nestas equipes e também nos dedicar muito para botarmos mais gente lá nos próximos anos!

Resta saber quando vai ser aquela festinha legal que rola no CIn em homenagem ao pessoal (aka Boca Livre!!!) 😉

UPDATE: notícia saiu no O Globo online, com foto do pessoal:

http://oglobo.globo.com/tecnologia/mat/2008/05/29/equipe_de_estudantes_ecologix_vence_etapa_brasileira_da_imagine_cup_2008-546555774.asp

Acessando dados com .NET

Primeiramente, gostaria de parabenizar todas as equipes pernambucanas que marcarão presença na final brasileira da Imagine Cup 2008, enfatizando o time Try IT no qual Daniel (líder da CIN.NET) faz parte!

Pois bem, meu principal objetivo nesse post é esclarecer como se faz acesso a dados com a plataforma .NET. E, para tal assunto, nada mais que conviniente tratar das tecnologias ADO.NET e LINQ.

O ADO.NET é um conjunto de classes que reúnem serviços de acesso a dados para a plataforma .NET. Ele é uma evolução do ADO(ActiveX Data Object). Sua integração com o Microsoft Visual Studio é total e também é acessível de qualquer linguagem da plataforma .NET.

Sua arquitetura é baseda na figura abaixo, na qual explicarei cada camada :

  • Providers do ADO.NET

Os provedores do ADO.NET são todos aqueles que estão no retângulo esquerdo da figura acima(.NET Framework Data Providers). Essa camada possui provedores especializados para acessar banco de dados de diferentes fornecedores, isso para garantir o melhor proveito da base em que se está trabalhando. Alguns dos providers que estão disponíveis são:

  • Provedor do SQL Server (System.Data.SqlClient)
  • Provedor do Oracle (System.Data.OracleCliente)
  • Provedor do OLEDB (System.Data.OleDb)
  • Connection

Essa é a camada que garante a conexão com o banco de dados. Sua principal propriedade é a string de conexão, que especifica a localização da fonte de dados; e seus principais métodos são Open e Close, usandos para abrir e fechar conexões, respectivamente. É nessa camanda que também ocorre todo o controle de transação. Alguns dos objetos de conexão são:

  • SQLConnection – Do provedor para o SQL Server
  • OracleConnection – Do provedor para o Oracle
  • OleDbConnection – Do provedor para o OleDb
  • Command

Essa camada é a responsável por receber instruções SQL e/ou Store Procedures. Assim como na camada connection, há um objeto command para cada provedor(SQLCommand, OracleCommand,etc) nessa camada. Seus principais métodos são:

  • ExecuteReader: retorna um DataReader, objeto usado para leitura de uma consulta feita na fonte de dados.
  • ExecuteScalar: usado quando o comando SQL retorna um único valor (Ex.: Quantidade de alunos de uma instituição)
  • ExecuteNonQuery: usado quando o comando SQL não retorna nenhum tipo de dado (Ex.: Atualizar os dados do aluno que possui número de cpf igual a 123456789-0). Além de aparentemente não retornar nada, esse método retorna a quantidade de linhas afetadas.
  • DataReader

É a camada usada para representar um conjunto de resultados SQL. Sua vantagem é a extrema rapidez de leitura de dados, porém não podemos modificar os resultados de uma consulta. E, como é uma camada pertencente aos providers, existe um objeto diferente para cada fonte de dados(SQLDataReader, OracleDataReader,etc). Seu principal método é o Read, usado para navegar no resultado da consuta.

Lembrando que até agora estamos trabalhando de forma conectada com o banco de dados. Para não ficar só na teoria, vai um exemplo de código:

  • DataAdapter

É a camada especializada em intermediar as requisições de acesso a dados da aplicação e o banco de dados. Ele encapsula comandos SQL e/ou Store Procedures para tal. Seus principais métodos são Fill e Update, responsáveis por preencher o DataSet(veremos no próximo tópico) e atualizar o banco de dados a partir de um DataSet, respectivamente.

  • DataSet

É a camada responsável por gerenciar dados previamente adquiridos por acesso a bancos de dados e/ou arquivos XML. Nessa camada há disposição de objetos que trabalham de forma desconectada ao banco. O resultado de um DataSet fica guardado na memória principal do sistema. A partir daí, podemos navegar, atualizar dados de uma consulta(ainda na mémoria) e, posteriormente, atualizar os dados no banco de dados. Um grande avanço nessa camada é a existência do DataSet Tipado. Através dele podemos detectar erros de nome em tempo de compilação. Segue dois exemplo de cógigo:

Usando DataSet Não Tipado:

SqlConnection conexao = new SqlConnection(“Data Source=MACEIO\\SQLEXPRESS”);
SqlCommand comando = new SqlCommand(“SELECT * FROM Cliente WHERE nome LIKE ‘l%'”,conexao);
conexao.Open();
SqlDataAdapter adaptador = new SqlDataAdapter(comando);
DataSet bancoDataSet = new DataSet(“Banco DataSet”);
adaptador.Fill(bancoDataSet,”Banco DataSet”);
foreach(DataRow row in bancoDataSet.Tables[“Cliente”].Rows)
{
int id = Convert.ToInt32(row[“id”]);
string nome = Convert.ToString(row[“nome”]);
Console.WriteLine(“Cliente com id {0} e nome {1}”,id,nome);
}

Usando DataSet Tipado:


SqlConnection conexao = new SqlConnection(“Data Source=MACEIO\\SQLEXPRESS”);
SqlCommand comando = new SqlCommand(“SELECT * FROM Cliente”,conexao);
conexao.Open();
BancoDataSet bancoDados = new BancoDataSet();
int idCliente = bancoDados.Cliente.idColumn;
string nomeCliente = bancoDados.Cliente.nomeColumn;
Console.WriteLine(“Cliente com id {0} e nome {1}”, idCliente, nomeCliente);

Notem que o objeto BancoDataSet é um DataSet Tipado que representa meu banco de dados, por isso através dele podemos extrair sua tabela Cliente (bancoDados.Cliente). E quando estamos na tabela Cliente podemos extrair suas colunas(id e nome). Observem que essas extrações são feitas usando propriedades, podendo assim que erros de nome sejam detectados em tempo de compilação.

Bem, foram descritos os principais componentes na tecnologia ADO.NET.

Além do ADO.NET, existe outra nova tecnologia para acesso a dados, falo do LINQ (Language Integrated Query). Ele permite que os desenvolvedores enderecem consultas[à fonte de dados] usando a sintaxe de uma linguagem de programação gerenciada, como C# ou VB.NET, ao invés das declarações SQL. O LINQ trabalha de forma similar ao Hibernate, fazendo um mapeamento objeto-relacional. Segue um exemplo que usa tal tecnologia:

BancoLINQDataContext banco = new BancoLINQDataContext();

Table<Cliente> clientes = banco.Clientes;

var consulta = from cliente in clientes
where cliente.nome == “Lucas”
select cliente;

Antes de chegar nesse código ocorreram os seguintes passos:

1) Tinhamos uma tabela Cliente na base de dados
2) O LINQ criou um objeto na minha aplicação que representa a base de dados (BancoLINQDataContext )
3) O LINQ automaticamente criou a classe básica Cliente em minha aplicação C#
4) O LINQ automaticamente fez o mapeamento objeto-relacional (meu objeto Cliente à tabela Cliente)

Depois se fez um código que retorna todos os clientes com o nome “Lucas”. Percebe-se o uso da sintaxe do C# para tal, ao invés do comum SQL. Se bem que essa sintaxe se transformará em SQL depois! Notem também que fazemos consultas em nossos objetos, abstraindo, assim, o banco de dados.

Vale ressaltar que se fez uso na sintaxe do C# 3.0.

O objetivo desse artigo não é detalhar o LINQ, em próximas aulas/posts detalharei um pouco mais dessa nova tecnologia. Então fico por aqui e até a próxima aula!

Mix Essentials.

Acontecerá em São Paulo na próxima semana, um evento show de bola para quem gosta de desenvolvimento web! Trata-se do MIX Essentials. Como o nome sugere, é um evento que vai direto ao assunto, como se fosse uma peneira, trazendo algumas das melhores palestras que aconteceram no MIX Las Vegas para o Brasil. O foco do evento é mostrar as grandes novidades da Microsoft em relação a experiência do usuário na web. É uma ótima oportunidade para se atualizar e interagir com os principais nomes na área.

Dias 29 e 30 de maio de 2008
Local: Auditório Microsoft
Av. Nações Unidas, 12.901- Torre Norte – 31º andar
Horário: 8:30 às 18:30hs

Estarei em SP na semana que vem participando da final nacional da Imagine Cup. Se derem uma brechinha, farei de tudo para estar presente no evento e trazer as novidades para a célula! =)

Mais informações: http://www.msdnbrasil.com.br/mixessentials/

[]’s

Publicado em Notícias. 1 Comment »

Escolha o Design da Imagine Cup 2009!

Pois é, a Imagine Cup 2009 mostra mais uma vez que já está no ar! Depois de anunciado que a final da próxima edição da competição será no Egito (ver post), a organização lanca uma enquete para nós escolhermos qual será o próximo design da competição. São estilos bem diferentes mas gostei de todos, nem sei em qual votar… =P

Ouvi especulações que o tema da Imagine Cup 2009 será livre. Com essa agora do design ser “livre”, deixandando para nós escolhermos, acho que o tema será este mesmo 😀

Votem vôce também!
Link:
http://www.mondorobot.com/microsoft/IC2009/

Finalistas Imagine Cup Brasil – SD

Ontem através de e-mail, a Microsoft anunciou as 8 equipes finalistas que irão disputar uma vaga para representar o Brasil na grande final da Imagine Cup em Paris, na França, pela categoria Software Design. Mais uma vez Pernambuco não deixou a desejar e manda 3 equipes para a final brasileira, que ocorrerá ainda este mês na sede em São Paulo.

Estou muito feliz por Pernambuco e mais ainda este ano por estar entre as equipes finalistas com a equipe Try IT. Agradeço em especial a força e ao incentivo que Fabiano, também da equipe, nos deu para continuar nosso projeto, acreditando sempre que iríamos conseguir. Valeu Fabiano!! Agradeço também a todos os colegas que convivo diariamente por terem dado uma força também. \o/ Ah, já ia esquecendo… Abraço especial também para o Sr. José Ferreira, o qual trabalhou 36 anos na Compesa e nos ajudou com bastante informações.

Agora é torcer pelas equipes pernambucanas para representarem nosso estado e nosso país lá na França! Aguardem mais novidades!

Equipes Finalistas Imagine Cup 2008 – SD Brasil

Learn Smart – Unesp
Ecologix – UFPE+USP+Unicamp
Synergy – FIAP
SSL – FIAP
Oysterix – UPE
The Utopians – Univ de BH+ITA
Try IT – UFPE+Salg.Oliveira
Ondine.Net – Ufscar

vEye contrata!

Você quer trabalhar com a equipe do projeto de tecnologia pernambucano mais premiado da dos últimos anos?
 
Quer ajudar a transformar em realidade o vEye, o sistema de navegação para deficientes visuais vencedor da Imagine Cup 2006, testado e aprovado pessoalmente por Bill Gates?
 
O vEye foi inicialmente concebido pela equipe Trivial, formada pelos ex-alunos do Centro de Informática da UFPE Carlos Rodrigues, Ivan Cardim e Madson Menezes, e será desenvolvido em parceria com a Inove Informática*, com financiamento do Programa de Subvenção Econômica da FINEP.

Existem vagas disponíveis para Engenheiros de Software (full-time e part-time) e Designers. Inicialmente, serão desenvolvidos produtos na área de sistemas de localização e reconhecimento de voz, sobretudo com a utilização de dispositivos móveis. O candidato irá participar de todas as etapas de desenvolvimento de novos produtos, passando pela  concepção, modelagem, implementação e, finalmente, pelos testes.

A equipe busca candidatos criativos, que saibam trabalhar em equipe e que possuam capacidade de abstração. Pró-atividade, paixão por tecnologia e domínio de inglês são imprescindíveis. Adicionalmente, espera-se dos candidatos para vagas técnicas experiência com programação orientada a objetos, ao passo que dos candidatos para as vagas de Design experiência com design para web e design da informação. Experiência com metodologias ágeis de desenvolvimento são diferenciais.

Os interessados devem submeter o seu currículo através do site da Inove , acessando a seção “Currículos” na parte superior. É ESSENCIAL que seja selecionada a opção “vEye/FINEP” na hora da submissão para que o seu currículo seja recebido pela equipe. Dúvidas devem ser encaminhadas para o email carlos@inoveinformatica.net, com o subject “VEYE-SELECAO”.

Prazo de submissão: 16/05/2008

* A Inove Informática é uma empresa Microsoft Certified Partner na competência Custom Development Solutions, sendo também a única empresa na América Latina a participar do Conselho Mundial de Parceiros Microsoft (Microsoft Partners Advisory Council). A empresa também é membro do Porto Digital e atua prestando serviços nas três principais vertentes da tecnologia em informática: treinamento, consultoria e desenvolvimento de soluções.

Introdução ao ASP.NET

O que é?

ASP.NET é uma tecnologia da Microsoft para a criação de aplicações dinâmicas para a Web. Com ele pode ser feito desde websites dinâmicos até aplicações complexas; além Web Services.

ASP.NET não é uma linguagem de programação, como o ASP, e sim uma plataforma de desenvolvimento. Nele pode-se utilizar linguagens como C#, VB.NET, J# e Python para a construção das aplicações. Isso devido a ele utilizar o Common Language Runtime (CLR) da plataforma .NET da Microsoft. Com o CLR o desenvolvedor terá, além da possibilidade de ter várias linguagens a sua disposição, recursos como garbage collection e o debugger funcionando com qualquer uma dessas linguagens.

Controles

Um dos recursos do ASP.NET são os controles. Com eles o programador consegue ter acesso aos elementos HTML diretamente na linguagem de programação. Podendo acessar, por exemplo, um TextBox de um formulário e alterar suas propriedades. Uma vantagem evidente nesse recurso é facilidade de criar uma aplicação web, pois o desenvolvedor precisa apenas ter uma boa familiaridade com uma linguagem de programação, como o C#, para poder fazer aplicações ricas e interessantes.

Alguns tipos de controle

Nos guiando pelos exemplos que foram dados em aula da célula CIN.NET, onde falamos um pouco sobre controles que são freqüentemente usados, vejamos um exemplo de uso:
Um dos mais simples é o button:

Localização do Button no VS
Fica do lado esquerdo do visual web developer, na caixa Toolbox. Para utiliza-lo basta clicar nele e arrastar. Pronto. já está disponível para uso. E para ter acesso a ele basta especificar um ID na caixa de propriedades. Com esse ID você já poderá acessa-lo na linguagem de programação, como no exemplo abaixo:
(eu coloquei o ID do Button como sendo testeButton)

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page
{
/**
* sempre que essa página for carregada no navegador do usuário
* esse evento será chamado.
*/
protected void Page_Load(object sender, EventArgs e)
{
//O texto que aparecerá no Button ao inciar a página
testeButton.Text = “Testando os elementos html do ASP.NET”;
}
/**
* Quando o testeButton for clicado, esse evento será chamado
*/
protected void testeButton_Click(object sender, EventArgs e)
{
// muda o texto do botão para “Teste feito, funciona?”
testeButton.Text = “Teste feito, funciona?”;
}
}

o resultado desse pequeno teste deve ser esse:
Exemplo com o button

Abaixo está uma tabela com alguns controles:

Função Nome
Mostrar texto Label
Edição de texto TextBox
Selecionar de uma lista DropDownList
ListBox
Exibir elemento gráfico Image
AdRotator
Seleção de valores em um formulário CheckBox
RadioButton
Seleção de data Calendar
Botões Button
LinkButton
ImageButton
Controle de navegação HyperLink
Controles para tabelas Table
TableCell
TableRow
Controles para fazer o agrupamento de outros controles CheckBoxList
Panel
RadioButtonList
Controles para fazer listagens Repeater
DataList
DataGrid

Além desses controles que servem HTML, há outros controles como os de validação de formulário; que são utilizados para informar ao usuário quando um elemento do formulário é de preenchimento obrigatório. Para informações mais elaboradas como um email, pode-se usar expressões regulares para definir como é o formato da informação que será válida.

Master Pages

Controles são muito interessantes, mas além desse tipo de recurso, o ASP.NET provê também ferramentas para o aumento da produtividade e reuso de código; Como as master pages, utilizadas quando tem-se uma parte do site que é repetida em várias vezes, como um menu estático ou um cabeçalho ou rodapé.
Para criar uma master page cliqua-se em “File >> New File >> Master Page”.
Ela vem, basicamente, em branco e com um campo chamado ContentPlaceHolder. Esse campo será onde o conteúdo que muda em cada página vai ficar. Todo o resto da página vai ser mantido para todas as páginas que utilizam essa master page. Então, para criar um cabeçalho, por exemplo, basta cria-lo em cima do ContentPlaceHolder, como abaixo

Exemplo com master page

Web.Config

O web.config é um arquivo XML usado para definir preferências e configurações de cada aplicação ASP.NET. Há uma interface gráfica para manipular esse arquivo e ele é acessível também para ser alterado em qualquer editor de texto. configurações de autenticação, acesso, compilação, erros, conexão, email… E é estruturado de forma hierárquica, possibilitando ao desenvolvedor aplicar também configurações a um subdiretório específico.

Para acessar a interface gráfica para essas configurações clique em “Website >> ASP.NET Configuration”, e abrirá uma página que nela você pode navegar e editar suas preferências.