P. 1
codificando 03

codificando 03

|Views: 18|Likes:
Published by Ricardo Palma

More info:

Published by: Ricardo Palma on Feb 09, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

01/04/2013

pdf

text

original

Powered by Microsoft Publisher

NUMERO 3 ANO I

#3

e-magazine

Codificando Net

Dicas | Colunistas | Promoções | Destaque do Mês |

POWERED BY CODIFICANDO.NET

NESTA EDIÇÃO
Entrevista

e-magazine
E D I Ç Ã O 3 A N O I S E T E M B R O 2 0 0 7

Codificando Net

3

Artigo Ágil Artigo Asp.Net Artigo Saúde Imagine Cup

5 10 12 13 19 20 22
25

Editorial
Chegamos na quarta edição, a número 3 e vamos evoluindo a cada edição graças ao forte apoio da comunidade, colunistas, de MVPS, da Microsoft, etc... Estamos preparando um novo site para aumentar os acessos a revista, em breve teremos um layout (valeu Thiago e agencia Cingular) muuuuuito melhor do que o atual. Esta edição um destaque especial aos brasileiros campeões da Imagine Cup na Coreia!!! Sensacional conquista!!! E dizem que o Brasil é só o pais do futebol :( Teremos também um artigo sobre Metodologias muito interessante e dicas preciosas de performance, segurança e boas práticas para ASP.Net... Imperdíveis. E claro, nossos colunistas continuam implacáveis com colunas cada vez mais interessantes, quem perdeu alguma coluna, basta baixar no site da revista http://www.codificandomagazine.net as edições anteriores. Uma novidade desta edição é o artigo sobre Saúde e Nutrição, para pessoas ligadas a área de saúde... É bom pararmos um pouco para ler sobre o assunto! Mas o grande destaque é uma entrevista exclusiva com Paul Vick, feita pelo repórter Alfred Myers... Imperdível a leitura da entrevista com o arquiteto principal de VB na Microsoft. Desejo a todos uma ótima leitura. Alexandre Tarifa editor@codificandomagazine.net
Reporter Alfred Myers Colaboradores: Hélio Sá Moreira Feio Tomaz Eduardo Gomes Maurício Wieler Israel Aéce JALF Fábio Camara Bruno Sonino Ramon Durães Diego Nogare Alexandre Lopes

Coluna XNA Coluna Biz.talking Coluna SQL Coluna Silverlight Coluna Acadêmico Coluna Compact Plane

28

29

Entretenimento 33

Equipe
Editor: Alexandre Tarifa Emerson Facunte

Coluna: .Close()

35

3

Entrevista: Paul Vick - arquiteto do Visual Basic

Nosso repórter Alfred Myers entrevistou a arquiteto principal do Visual Basic Paul Vick. Veja a entrevista completa e exclusiva com um dos principais funcionários da Microsoft responsável pela linguagem mais utilizada do mundo. Alfred Myers: Quem é você e o que você faz na Microsoft? Paul Vick: Eu sou Paul Vick e sou um dos principais arquitetos (Principle Architect) no time de Visual Basic. O cargo de arquiteto pode significar muitas coisas na Microsoft, mas no meu caso significa que eu ajudo a definir a direção técnica do produto, mas não gerencio pessoas diretamente. Então posso fazer coisas de que gosto como determinar como recursos serão projetados e escrever algum código e não preciso me preocupar muito com as coisas de que não gosto como rastrear bugs, definir tarefas e gerenciar o dia-a-dia do pessoal. Minha principal área de responsabilidade é projeto (design) da linguagem e a arquitetura do compilador que são coisas com que venho trabalhando de uma forma ou outra há quase dez anos. AM: Como você foi parar na Microsoft? PV: A Microsoft me recrutou na universidade, então eu peguei um estágio no meu primeiro ano do curso com o time de Access. Naquela época, para mim a Microsoft nem fedia nem cheirava – eu sempre pensei que iria trabalhar numa empresa como a Apple já que cresci brincando com um computador Apple ][+, mas aquilo foi um ótimo estágio, então decidi continuar. Trabalhar com o time do Access era maravilhoso e no final do estágio eles me ofereceram emprego. Eu acabei decidindo voltar à universidade para acabar o meu curso, embora pudesse ter valido muito a pena financeiramente se eu tivesse ficado. AM: No que você trabalhou antes de se juntar ao time do Visual Basic? PV: Quando eu voltei à Microsoft, eu comecei a trabalhar no time do Access novamente da versão 1.0 até a 97 fazendo um monte de coisas no query designer e no container de banco de dados. Eu também trabalhei bastante tempo no porte do Access para Windows 95 assim como fazendo trabalho de desempenho para o Access 97. Depois que o Access 97 foi lançado, eu fiquei mais ou menos um ano trabalhando com OLE Automation, mas saí quando se tornou claro que aquilo seria substituído pelo o que acabou se tornando o .NET Runtime. AM: É verdade que o Access era escrito em Assembly até antes do 95? PV: De forma alguma! O Access era escrito em C, embora eu imagino que um pouco de C++ tenha se infiltrado no código no decorrer dos anos. Quando o Access começou, não acredito que a Microsoft tivesse um compilador C++ realmente sólido ainda. Não acredito que nada do código estivesse em assembly, embora acredite que a implementação original do Access Basic (um precursor ao VBA) estivesse. Um fato interessante é que devido às limitações das ferramentas da época, quando eu me juntei ao time, a compilação era feita no OS/2. Uma das coisas em que trabalhei no início foi mover a compilação para o Windows. AM: Existe alguma diferença de implementação dos tipos anônimos entre o Visual Basic e o C#? Quais são? PV: A principal diferença é uma que veio bastante tarde no ciclo de produto do Visual Studio 2008. Os dois times perceberam que há situações onde os tipos anônimos precisam ser imutáveis – isto é, todos os seus campos devem ser somente leitura. Geralmente, isto acontece quando os tipos anônimos são usados como chaves, como por exemplo, quando você agrupa por múltiplos campos de uma vez. Já que nestas situações o tipo anônimo é utilizado como um valor hash de um hash table, o valor dos campos não pode mudar. O time de C# decidiu simplesmente tornar os tipos anônimos imutáveis. Já que lá os tipos anônimos não podem ser passados para fora do método, eles acreditaram que isto não seria uma perda muito grande. Contudo, como você pode usar o late binding do Visual Basic para usar tipos anônimos passados de outros métodos, nós tivemos uma abordagem diferente. Nós permitimos que você defina se determinados campos de um tipo anônimo são somente-leitura ou não usando um modificador “Key”. Você pode obter mais informações em http://www.panopticoncentral.net/archive/2007/05/11/20566.aspx. AM: Eu soube que o VB foi usado para escrever um compilador JScript. Que versão do compilador, a mesma que vem no .NET Framework? É baseado no padrão proposto do ECMAScript 4.0? PV: O compilador JScript baseado em .NET que foi liberado com a versão alfa do Silverlight 1.1 foi escrito usando Visual Basic 2005. Isto não é exatamente uma surpresa, já que ele foi escrito por um antigo membro do time de Visual Basic. Ele implementa a versão atual 3.x da linguagem, imagino.

4

Entrevista: Paul Vick - arquiteto do Visual Basic

AM: A versão atual do compilador VB é escrito em C++. O pessoal do Mono fez uma versão bootstrapping (eles podem usar o compilador Basic deles para compilar o próprio compilador). Você disse a algum tempo que não havia motivo para portar a base de código do compilador VB para VB. Alguma coisa mudou de lá pra cá? PV: Embora isso possa ser divertido, eu acho que jamais haverá um bom motivo para escrever o compilador do VB em VB só por escrever. Se estivéssemos começando hoje, nós provavelmente faríamos isto, mas dado ao enorme investimento que temos hoje na base de código, é difícil justificar tantos homens/ano só para terminar onde começamos. Dito isto, ao passo que cada vez mais o mundo se move rumo ao .NET, nós necessariamente teremos de começar a interoperar mais com código gerenciado e isto poderá ser o motivo que precisávamos para mover ao menos parte do compilador para código gerenciado. É uma coisa que teremos de ver mais adiante. AM: O Phoenix já é levado em consideração no planejamento da próxima versão do VB? Quais seriam os prós e contras de usá-lo? PV: Pensar como o Phoenix pode se encaixar no compilador VB é definitivamente uma parte de nosso processo, mas nós não temos planos neste momento. O trabalho que o time do Phoenix fez em análise de código, otimização de código e geração de código não-gerenciado é obviamente atraente e pode nos oferecer benefícios em termos das funcionalidades e velocidade. AM: Eu soube que o VBx está sendo construído em cima da DLR. Isto significa que vocês estão jogando a base de código em C++ fora? Se não, quais os novos recursos sendo desenvolvidos no próprio VB? PV: Nós não estamos jogando nada fora, ainda... VBx é um protótipo em que estivemos trabalhando que se integra com a DLR e permite que o VB seja hospedado como uma linguagem de script usando o modelo de hospedagem (hosting) da DLR e também permite que o VB interopere bem com outras linguagens DLR como Python, Ruby e JScript. Ele é escrito em código gerenciado, mas o que isto significa em longo prazo é incerto já que é somente um protótipo. Como eu respondi a uma pergunta anterior, é improvável que a gente simplesmente vá jogar fora qualquer porção considerável do nosso código, embora eu possa imaginar a gente escrevendo algumas partes em código gerenciado para trabalhar melhor com a DLR. AM: De que forma ser construído em cima da DLR faz o VB interoperar melhor com outras linguagens que também o são como IronPython e IronRuby? PV: Linguagens como Python e Ruby têm sistemas de tipos dinâmicos que não mapeiam bem para o sistema de tipos da CLR. A DLR define uma maneira para chamadas dinâmicas passar eficientemente entre as linguagens, então construir em cima da DLR nos permite chamar métodos escritos em Ruby e Python de uma forma bastante natural. Como a DLR é bastante preocupada com o desempenho de late-binding, construir em cima da DLR também significa que o late-binding a objetos “normais” da CLR ficará bem mais rápido. AM: Isto significa que as linguagens que não são construídas em cima da DLR não interoperam tão bem com as que são? PV: Bem, qualquer linguagem que não é integrada com a DLR será capaz de chamar objetos produzidos por linguagens construídas em cima da DLR, mas vai ser bem esquisito e não muito agradável. AM: A DLR é o tipo de coisa que eventualmente será incorporada à CLR? Como a DLR evoluirá no futuro? PV: Esta é uma pergunta excelente, mas que será melhor se perguntada ao time de DLR. Nossos planos são construir a nova versão do VB com integração à DLR, então isto indicaria que a DLR estará amplamente disponível, mas exatamente como isto vai acontecer ainda é uma questão em aberto neste momento. AM: Como você vê o papel da comunidade na evolução do VB? PV: A comunidade nos fornece um feedback enorme através de mecanismos como os blogs, MSDN e o programa MVP, mas acredito que sempre haja espaço para a melhoria. A versão 2008 do Visual Studio foi realmente dominada pelo LINQ, então há muitos pedidos e sugestões da comunidade que simplesmente não foram incorporados, mas eu espero que sejam da próxima vez. E eu gostaria de nos ver divulgando nossas idéias e planos mais cedo para que as pessoas tenham ainda mais tempo de nos dar feedback. A comunidade é parte fundamental do nosso processo de desenvolvimento e qualquer coisa que possamos fazer para incluí-los ainda mais é maravilhoso! FIM.

5

Artigo: Um cardápio ágil para todos os gostos

Um projeto de software está com problemas sérios. Peguei um livro e li: O mau gerenciamento pode incrementar os custos de um projeto de software mais rapidamente que qualquer outro fator, escreveu Barry Boehm em 1981. Peguei outro livro e li: Adicionar pessoas faz um atrasado projeto atrasar ainda mais, escreveu Frederick Brooks em 1995. Neste cenário assustador questionei-me: o que vou fazer diferente se preciso de resultados diferentes? Como compreender os verdadeiros obstáculos do gerenciamento de um projeto de software? A resposta que mais gostei foi demonstrada pelos métodos ágeis. O pensamento ágil reconhece 5 obstáculos no gerenciamento de projetos de software. São eles: pessoas, tempo, funcionalidades, orçamento e recursos (excluindo pessoas). Vamos conhecer um pouco como as propostas ágeis e suas técnicas diferentes lidam com estes 5 obstáculos, comentando levemente particularidades sobre XP, MSF, SCRUM e FDD.

eXtreme Programming
Métodos ágeis são propostas incomuns de técnicas para projetos de software. XP, como o nome sugere, é algo um pouco mais radical. Propostas estranhas de técnicas esquisitas fazem os gerentes de projetos temerem utilizá-las em grandes projetos. Para atrapalhar ainda mais as poucas iniciativas de se quebrar paradigmas, o radicalismo de alguns pensadores de XP afastam a compreensão sobre as reais vantagens e os benefícios para o negócio que podemos alcançar com estes métodos. A programação em pares, um dos mais diferentes e originais métodos do XP, traz para o gerente do projeto a necessidade de uma posição sem hipocrisia. Ou você ama, ou você odeia. Até hoje não encontrei um gestor “em cima do muro” sobre esta técnica. Como exemplo, vamos citar Karl Wiegers, famoso autor de livros técnicos, que afirma em seus ensinamentos que a programação em pares como forma de inspecionar código não é efetiva na redução dos defeitos. Segundo o mesmo, entre 25 % e 35 % é o ganho atingido no aspecto “defect reduction”. Esta afirmativa é questionada por David Anderson, outro grandioso autor, que defende um número percentual em torno de 50%. Já em minha própria vivência, as reuniões em pé (stand-up meeting) são fabulosas em quase todos os aspectos. Particularmente acredito no pensamento de Jonh Kennedy, ex-presidente dos EUA, que dizia: quando se quer não fazer nada fingindo que está trabalhando, entre em uma reunião. Listamos a seguir os principais métodos polêmicos do XP:

Na minha leitura, o XP é uma proposta muito completa de ciclo de vida de desenvolvimento de software, agradando ou não um gestor de projetos. Um dos principais fundadores do XP chama-se Kent Beck.

6

Artigo: Um cardápio ágil para todos os gostos

FDD – Feature Driven Development
Criado entre 1997 e 1999 em Cingapura por um time liderado pelo Jeff De Luca, é uma simples compilação de práticas estabelecidas nos últimos 30 anos. Um de seus maiores desenvolvedores, Peter Coad, definiu a idéia de Feature Definition e Feature List. Diversos renomados autores participaram da concepção das idéias do FDD. Dentre estes destacamos: Tom De Marco, Tim Lister, Jerry Weinberg e Frederic Brooks. Em sua essência, FDD é mais um método de gerenciamento de software do que um ciclo de vida de desenvolvimento de software. Resumidamente, FDD é dividido em 5 fases que explicam sua função. São elas: Shape Modeling – é uma forma de questionar se todos compreendem o que é para fazer, analisar requisitos não-funcionais e modelo de arquitetura; Feature List – É a representação do escopo listando a compreensão do que é para ser feito e os requerimentos a serem desenvolvidos; Plan by subject area – É a modularização da lista em conjuntos de funcionalidades relacionadas, permitindo o desenvolvimento de parte do sistema autonomamente; Design by feature set – É uma orientação que determina o desenvolvimento com base no domínio do problema. Sugere-se nesta fase uma modelagem profunda e detalhada em UML; Build by Chief Programmer Work Package – É o empacotamento de pequenas funcionalidades, uma redução evolutiva que nasce na fase 2 até a fase 4. Prioriza-se este pacote, codificando sua funcionalidades e criando unit tests. FDD define também 4 camadas de arquitetura de software:

Notamos que o “core” de todas as fases e das camadas de arquitetura é a funcionalidade (feature). Cada funcionalidade é definida com uma fórmula simples, que permite ser repetível e confiável. A fórmula da funcionalidade tem a seguinte estrutura:

<action> <result> <object>
Exemplo: <action> O valor total de vendas <result> Faturamento bruto mensal <object> Produtos vendidos no período

7

Artigo: Um cardápio ágil para todos os gostos

MSF – Microsoft Solutions Framework
Disseram-me que MSF só funciona em projetos com tecnologias da Microsoft. É impressionante a associação restritiva que naturalmente os desinformados impõem as coisas. Também já ouvi que metodologias ágeis só são recomendadas para projetos pequenos. Pior que isso! Ouvi de uma diretora de TI de um banco: _ Hoje nós somos ágeis (referindo-se a ausência de gestão e de análise de requisitos de seu departamento), queremos ser mais organizados. Estudando o assunto há 9 anos, eu sempre considerei o MSF uma proposta equilibrada, aonde seus 2 modelos e suas 3 disciplinas nunca se apresentaram como uma espécie de bíblia sagrada, determinística ao sucesso ou fracasso de seu projeto. Inclusive na versão 3.1 do MSF, antes da formalização das propostas ágeis no ano de 2001, tinha como conceito chave: _ Stay agile, expect changes. O MSF 4.2, possui duas novas instâncias: MSF for Agile Software Development e MSF for CMMI Process Improvement. Podemos afirmar que o MSF Agile é um mix de posições equilibradas, pois defende um SDLC (Software Development Life Cycle) mais curto com iterações de no máximo 4 semanas, contudo preserva a importância dos papéis definidos previamente e abomina a linha “todo mundo pode fazer tudo no projeto”. Outro quesito de destaque nesta fusão são os testes unitários e a preocupação com a cobertura de 100% do código fonte. Um tema muito forte dentro do MSF Agile é integração. Metodologias ágeis necessitam que os “stakeholders” estejam presentes o tempo todo durante o projeto. Para isso são constituídos cenários de tarefas de trabalho que englobam atividades planejadas para um desenvolvedor. Estes cenários fazem parte de uma determinada iteração do plano de iterações. Esta iteração agrupa os cenários de desenvolvedores e os cenários de testes (que são efetuados em seguida ao desenvolvimento). Desta forma controla-se a integração de um time com papéis diversos dentro do projeto (usuário, desenvolvedor e analista de testes). Para o MSF, um projeto precisa dos seguintes papéis (entende-se papéis como responsabilidades que devem ser assumidas por algum membro da equipe):

É árduo afirmar que foi o fundamentador do MSF, porém o grande patrocinador sempre foi a própria Microsoft. Para não ficar em branco com nomes, Michael Cusomano, Steve McConnell destacam-se entre muitos outros como personagens da história do MSF.

8

Artigo: Um cardápio ágil para todos os gostos

SCRUM
SCRUM é um método de gerenciamento de software que pode ser usado com XP ou MSF. É baseado na teoria do controle empírico de processos e seus fundamentos são originados na indústria de manufatura japonesa. Segundo o SCRUM, o desenvolvimento deve ser trabalhado em 3 níveis: Sprint, Release e Product. O ponto central é que os requisitos são convertidos em uma lista que contém valores do cliente chamada Product Backlog. Um sub-conjunto desta lista é criado e chamado de Release Backlog. Este sub-conjunto é particionado mais uma vez transformando-se em Sprint, uma espécie de acordo de desenvolvimento de funcionalidades que após aceito pela equipe não deve ser mais alterado. Praticando SCRUM, o que mais chama a atenção é a simplicidade. Controlar projetos desta forma é participar de um jogo competitivo e saudável em que todos se auto-avaliam todos os dias (daily stand-up meeting) tornando possível resultados e técnicas de melhoria contínua. O gerente de projetos como conhecemos hoje, na proposta SCRUM, é chamado de SCRUM Master. Suas principais responsabilidades resumem-se em duas: Proporcionar a passagem técnica e retirar todos os impedimentos. A equipe do projeto é dividida em apenas 3 papéis: o SCRUM Master (coach), o Product Owner e a equipe. Em diversos aspectos, as técnicas do SCRUM diferenciam-se das propostas convencionais. Destaque para:

Para saber mais sobre SCRUM, é imprescindível ler algum dos títulos lançados por Ken Schwaber.

O que experimentar
Independente de sua curiosidade para novos sabores, os métodos ágeis são uma honesta resposta a pergunta: o que vou fazer diferente se preciso de resultados diferentes? Baseados em processos iterativos incrementais e empíricos, os métodos ágeis são indiscutivelmente diferentes das propostas tradicionais que são fundamentadas em processos cascata. Esta diferença pode ser a resposta a sua dúvida também. Experimente!

Fábio Câmara (fabio.camara@fcamara.com.br): Microsoft MVP VSTS, MCT, MCSD .NET, MCTS - TFS, ITIL Foundations, Certified SCRUM Master e MSF Practitioner, Acredita em bons resultados em projetos com técnicas ágeis, principalmente para as características do mercado brasileiro.

10

Artigo: Performance, Boas Práticas e Segurança para Asp.Net
Recentemente um amigo me procurou para dar algumas dicas se segurança e performance para melhorar de uma aplicação Web. Depois da ajuda, eu decidi disponibilizar essa listagem aqui na Codificando e-Magazine. Compilei algumas dicas e disponibilizei abaixo essa listagem, com algumas guidelines que julgo necessárias para quando for desenvolver e disponibilizar a aplicação em um servidor Web. É importante dizer que isso pode ou não ser importante, dependendo de qual o cenário da aplicação/empresa.

Per formance

Desabilite a Session nas páginas que você não precisa dela. Isso pode ser realizado através do atributo EnableSessionState da diretiva @Page. Se não for utilizar na aplicação como um todo, então desabilite a nível de aplicação, através do elemento enableSessionState no elemento do arquivo Web.Config. Sempre defina para false a propriedade EnableViewState para quando não precisar do ViewState na página Web. Através do atributo maxPageStateFieldlength definido dentro do elemento , você tem a possibilidade de "quebrar" o campo __VIEWSTATE. Mas isso não traz melhora em termos de performance. Essa configuração é útil para quando alguns proxies e firewalls barram o acesso a determinadas páginas, quando ela, por sua vez, contém campos ocultos com um grande conteúdo. Defina o atributo debug do elemento compilation para false. Quando definido como true em ambiente de produção, é um dos grandes vilões de performance. Se desejar que todas as aplicações do servidor Web obrigatoriamente estejam com este mesmo comportamento, voce pode definir para true o valor do atributo retail do elemento deployment do arquivo Machine.config do servidor Web. Considere a utilização de OutputCache. Para facilitar a manutenção, utilize o CacheProfile. Remova todos os módulos que não estão sendo utilizados pela aplicação. Reduza a quantidade de round-trips entre o cliente e o servidor. Para isso, utilize sempre que possível o método Server.Transfer. A compactação da resposta a ser enviada para o cliente é sempre uma boa opção. Além disso, remova caracteres desnecessários, como espaços em branco e TABs. Utilize sempre DataReader para ter uma forma eficiente de carga de dados. Paginar os resultados é quase sempre uma necessidade para exibição de dados. Defina para true o atributo enableKernelOutputCache do elemento httpRuntime (acredito que isso já seja o padrão). Isso tem um benefício a nível do IIS, mas atente-se que, em alguns cenários, essa configuração pode trazer resultados inesperados. Remova todos os HTTP Headers desnecessários. Quando você instala o .NET Framework, é criado um valor por padrão dentro do IIS, que é enviado como resposta para todos os clientes que consomem a aplicação. Geralmente é algo como: "X-Powered by ASP.NET". Você pode remover diretamente do IIS ou via atributo enableVersionHeader do elemento httpRuntime. Considere a utilização de páginas assíncronas quando possível.

       

11

Artigo: Performance, Boas Práticas e Segurança para Asp.Net
Segurança

Toda aplicação Web roda sempre em FullTrust. Considere utilizar Medium (partial trust) já que ela atende a maioria dos casos, inclusive na versão 2.0 do .NET Framework, esse nível já concede acesso ao SqlClientPermission, responsável por gerenciar o acesso à servidores SQL Server. Para alterar esse nível, você pode utilizar o atributo level do elemento trust no arquivo Web.Config da aplicação ou do servidor Web, se desejar que todas as aplicações que estão rodando ali sejam definidas como medium trust. Não permita que outros desenvolvedores sobrescrevam a sua policy. Para isso, defina o atributo allowOverride como false. Sempre crie uma página padrão de erros para que os usuários seja redirecionados para ela quando um problema ocorrer. Para isso, configure a seção do arquivo Web.Config. Neste mesmo local, evite que as exceções sejam enviadas para os usuários, definindo o atributo mode para RemoteOnly. Isso evitará exibir detalhes da exceção que ocorreu, qual pode comprometer a sua aplicação. Todos os parâmetros fornecidos pelo usuário (Forms, QueryStrings, etc.) devem ser validados por tamanho, tipo e formato. Páginas importantes, que podem sofrer alguma espécie de ataque, podemos configurar a sua propriedade ViewStateUserKey para um valor qualquer (Session.SessionID), evitando assim, ataques de "one-click". Nunca armazene informações sigilosas em QueryStrings ou ViewState. Se necessitar armazenar algo importante no ViewState, então criptografe-o. Para isso defina o valor "Auto" para o atributo viewStateEncryptionMode do elemento e invoque o método RegisterRequiresViewStateEncryption na página em que deseja armazenar o conteúdo sigiloso no ViewState. Use SSL somente em páginas que realmente precisam deste nível de segurança. Criptografe a seção de connectionStrings. Criptografe a seção de appSettings quando ele possui informações confidenciais. Quando for conectar com uma base de dados qualquer, utilize um usuário que só tenha permissão necessária para manipular os objetos que estão sendo utilizados pela aplicação, nada mais. Sempre armazena password "hasheados" na sua base de dados. Quando utiliza a arquitetura do Membership, ele já fornece isso intrinsicamente. Defina para true o atributo httpOnlyCookies do elemento httpCookies no arquivo Web.Config. Esse atributo permite ou não que código client-side acessem o cookie.

 

 

     

Boas Práticas
   
Sempre extraia strings de arquivos de Resources (*.resx). Mais cedo ou mais tarde, alguém sempre pede para você globalizar a aplicação. :) Defina o nome da aplicação no atributo applicationName quando utilizar o Membership/RoleProvider/Profile. Se estiver utilizando o tratamento global de exceções, habilite o Health Monitoring para logar as exceções e efetuar uma posterior análise. Desabilite o Trace em produção. Quando precisar habilitá-lo para poder monitorar alguma requisição, então define o atributo localOnly como true, para que o output possa ser somente visualizado no próprio computador onde a aplicação está sendo executada.

Israel Aéce (Israel@projetando.net) - Microsoft MVP, MCP, MCAD, MCTS e MCT. Fundador do site Projetando.NET (http://www.projetando.net). Atualmente atua como desenvolvedor de aplicações .NET. Blog: http://weblogs.pontonetpt.com/israelaece/.

12

Saúde: Alimentação X Trabalho
O estresse da rotina diária, o sedentarismo e uma alimentação errada, vem sendo os grandes responsáveis pelo aparecimento de sintomas e doenças crônicas que comprometem a qualidade de vida da maioria das pessoas e principalmente dos que entram em um escritório pela manhã e não tem hora para sair. Um caso comum são as pessoas que trabalham em TI. A alimentação saudável é um dos principais caminhos na busca da qualidade de vida, já que garante ao organismo a energia e os nutrientes essenciais para o bom funcionamento do corpo. É cientificamente comprovado que a mudança nos hábitos alimentares e a introdução de exercício físico na rotina pode influenciar fortemente vários fatores de risco na população, como obesidade, hipertensão arterial, hipercolesterolemia, alteração nos níveis de glicose sanguínea, entre outros. O que se percebe é que a dieta consumida por estas pessoas está produzindo uma série de desequilíbrios nutricionais. Hábitos como consumo excessivo de gorduras saturadas e trans, alta ingestão de sódio, consumo excessivo de calorias, diminuição da ingestão de frutas, verduras e legumes, elevado consumo de açúcares e deficiência de algumas vitaminas e minerais, são práticas comuns na rotina. Seguem algumas dicas que podem te ajudar a melhorar seu estilo de vida:

 

Inclua algum tipo de exercício físico na sua rotina;

Nunca saia de casa sem se alimentar. Faça sempre um café da manhã com uma fonte de carboidrato (pão de preferência integral ou cereal sem açúcar ou biscoitos integrais), uma fonte de proteína (frios magros ou queijos brancos e leite ou iogurte de preferência desnatados) e frutas ou sucos naturais Esta refeição é fundamental para garantir melhor memorização, concentração e disposição para o dia de trabalho;

  

Procure não ficar mais de 3 horas em jejum. Tenha sempre algum alimento saudável para comer entre as refeições grandes. Boas opções são: frutas, iogurtes, barra de cereal, suco de fruta natural, biscoito integral ou frutas secas. Para os intervalos exclua da rotina as guloseimas: biscoitos recheados, salgadinhos, docinhos, chocolates, bolos, entre outros, que além de ser muito calóricos, são ricos em gorduras; Beba pelo menos 2 litros de água por dia; - cuidado com os excessos, sempre olhe as opções do buffet antes de começar a se servir e planeje o que irá comer na refeição; - se atente ao tamanho das porções, além de qualidade a quantidade deve ser controlada; - procure não ingerir alimentos muito gordurosos como: massas com molho branco ou queijos amarelos, empanados, carnes gordas ou com molhos gordurosos, frituras e saladas com maionese ou creme de leite. - consuma todos os dias folhas e legumes crus que, além de ajudar no bom funcionamento do intestino, estes alimentos são ricos em fibras que ajudam a reduzir a absorção de gorduras e atrapalham a absorção do açúcar; - sempre que possível, troque os alimentos normais pelos integrais: arroz, macarrão e inclua grãos como lentilha, ervilha e grão de bico; - escolha sempre preparações assadas, grelhadas, cozidas ou no vapor; - na hora de escolher as bebidas evite os refrigerantes e sucos com açúcar. Opte sempre por água ou suco natural e não ultrapasse 250 ml. - quanto a sobremesa os doces além de muito açúcar, normalmente são ricos em gordura e devem ser evitados. Frutas frescas são as melhores opções. - se for substituir a refeição por um lanche rápido, muito cuidado. Procure escolher o tipo de pão, optando sempre pelo integral e controle a quantidade de gordura do recheio. Sempre preferir recheios de carnes magras e grelhadas ou frios magros, sempre acompanhar os sanduíches com saladas e não fritas e não adicionar molhos gordurosos como maionese.

Para o almoço:

Para a noite, continue não optando pelos alimentos gordurosos e lembre-se que este é o horário de menor gasto de energia do nosso corpo e por isso nossas necessidades de ingestão de energia estão diminuídas. Prefira saladas, carnes magras, sanduíches integrais com frios magros, ou sopas leves.

Andréa Andrade - Nutricionista da RGNutri Consultoria Nutricional, graduada pelo Centro Universitário São Camilo, especialista em Administração Hoteleira pelo SENAC, especializando em Fisiologia do Exercício pela UNIFESP/Escola Paulista de Medicina (EPM), extensão Universitária em Nutrição Esportiva pela FEFISA (Faculdade de Educação Física de Santo André), nutricionista atuante na área de Qualidade de Vida Empresarial. ÁREA ESPECÍFICA DE ESTUDO E ATUAÇÃO: Nutrição Esportiva e Qualidade de Vida.

13

A taça do mundo é nossa!!! Imagine Cup 2007
A final da Imagine Cup 2007 aconteceu na Coréia e teve a participação de diversos times brasileiros, dentre eles o time campeão em uma das categorias! Formado por 4 estudantes, a equipe conquistou com um projeto que encantou os jurados e trouxe para as terras brasileiras mais um título, mas desta vez, não é no futebol :)

ENTREVISTA COM A EQUIPE CAMPEÃ!
Codificando Magazine: Como funciona a final na Coréia? Como é o dia -a-dia e regras da disputa final? Equipe: Cada categoria tem suas próprias regras. A final da nossa categoria (Desenvolvimento de Sistemas Embarcados) funciona assim: os 15 finalistas fazem uma apresentação teórica e uma demonstração, ambas com perguntas dos juízes. Depois, os 6 melhores são anunciados, e estes fazem uma apresentação final, que pode ter uma demo opcionalmente. Finalmente os 3 primeiros lugares são anunciados na cerimônia final. CM: Fale um pouco sobre o projeto campeão, quais as funcionalidades e tecnologias utilizadas. E: O projeto campeão é o E-du, que tem como objetivo reduzir o analfabetismo pelo munfo, principalmente em países em desenvolvimento. Ele é composto de vários módulos, para alunos e professores. O módulo do aluno (chamado e-du mesmo) roda num computador simples, o ebox 2300, com Windows CE. Neste programa o aluno interage usando um mouse em forma de caneta para resolver exercícios interativos (com vídeo, som, animações, fala, etc.), sozinho ou com outros amigos via Bluetooth. O programa também controla um boneco motorizado, apelidado de "Waldomiro", que reage às ações do aluno no exercício e ajuda na motivação. As ferramentas do professor começam com um gadget para Windows Vista que recolhe as informações dos alunos (também por Bluetooth) e abre uma aplicação consolidadora (feita em WPF) chamada E-ducator. Nesta ferramenta o professor pode ver o desempenho por aluno ou por exercício, ver uma reprodução exata do aluno fazendo o exercício, e exportar esses dados para uma planilha Excel. Além do E-ducator, o professor pode criar exercícios novos usando um programa chamado E-ducreator, que permite que o professor crie de maneira muito fácil lições, com toda a interatividade e possibilidade de programar voz e ações do boneco. Depois de pronto o exercício, o professor pode enviar para um ou mais alunos por Bluetooth, ou ainda compartilhar os exercícios no portal Shar-e-du, onde ele pode baixar e avaliar exercícios de outros professores. Algumas tecnologias usadas foram: Windows CE, WPF, Bluetooth, Vista Gadgets, AJAX. CM: Qual metodologia e ferramentas vocês utilizaram no projeto e como organizaram a questão da distância já que estavam com um time com pessoas em lugares diferentes do Brasil? E: A metodologia se baseou no MSF, e utilizamos como ferramentas o Visual Studio e o Expression Blend. Com relação à distância, muito do trabalho foi feito de maneira dividida, com reuniões freqüentes por Skype e MSN, além de muito email. O projeto deu uma acelerada geral quando o pessoal de Recife (André, Carlos e Ivan) vieram para SP logo antes da final brasileira de Software Design, e também quando chegávamos mais perto da final na Coréia. CM: Qual foi o planejamento que vocês fizeram para o projeto desde a final Brasileira? Quanto tempo antes da competição vocês já trabalhavam no projeto? E: Depois do 2o lugar na final brasileira, decidimos investir todo nosso esforço na categoria Desenvolvimento de Sistemas Embarcados, adaptando e expandindo nosso projeto para os requisitos de hardware e software que essa categoria tem. Nós juntamos esta equipe mais ou menos na época do Tech-Ed 2006 (Outubro/06), mas o projeto começou a ser desenvolvido mesmo a partir de janeiro/fevereiro.

14

A taça do mundo é nossa!!! Imagine Cup 2007
Entrevistamos também 3 dos campeões! Acompanhem:

ANDRÉ FURTADO
Codificando Magazine: Olá AFurtado, fale um pouco sobre você, sua formação e experiências em Desenvolvimento. André Furtado: Olá! Falando um pouco de mim: atualmente sou engenheiro de software e consultor pelo projeto Partec-MyTV, recém-contratado para trabalhar na Microsoft Corp (começando em janeiro nos EUA) e doutorando em Ciência da Computação pela Universidade Federal de Pernambuco (UFPE). Sobre minha formação: sou bacharel e mestre em Ciência da Computação, também pela UFPE. Sou Microsoft Student Partner desde 2004, Certified MSF Practitioner, MCP, Certified IBM-DB2 Specialist, Sun Certified Java Programmer 1.4, um dos líderes do Sharp Shooters .NET (primeiro grupo de usuários .NET do Brasil) e participei de algumas outras competições no passado recente, sendo campeão mundial / nacional da Imagine Cup 2005, vice-campeão nacional do Primeiro Desafio GV-Intel de Empreendedorismo e Venture Capital e campeão do primeiro XNA Challenge Brazil. CM: Qual a sensação de representar o Brasil nesta competição e acima de tudo trazer o título de campeão? Cite também os membros do time campeão. AF: A sensação é única, não dá para resumir em palavras. Em um país onde as glórias, quando existem, ficam restritas ao mundo do futebol e do carnaval, é muito gratificante empunhar a bandeira verde-amarela no topo do pódio para mostrar ao mundo que também temos competência em tecnologia.

[Membros: André Furtado, Carlos Rodrigues, Ivan Cardim e Roberto Sonnino]
CM: Em algum momento durante a competição, você chegou a desanimar ou até mesmo desacreditar na conquista? Se sim, em que momento isso foi revertido? AF: Participar de uma competição como a Imagine Cup é viver momentos de muita tensão, no limiar do controle de nossas emoções, para o bem ou para o mal. Talvez quem está do lado de fora enxergue apenas o passeio pela Coréia ou o tratamento VIP oferecido pela Microsoft aos competidores, mas a verdade é que esses momentos de competição são os mais difíceis e desgastantes do ano para mim. Apresentação após apresentação, demonstrações, anúncios de quem se classificou ou não, seguidos de mais apresentações, enfim, é muita coisa junta, que demanda um coração forte. E garganta forte também! Nos bastidores, cheguei a ficar rouco, até mesmo a cuspir sangue (espero que minha mãe não esteja lendo...) por causa da maratona de ensaios no quarto do hotel e de uma virose que piorou com o ar-condicionado. Dar sangue pelo Brasil, esse era o lema. Enfim, são muitos os obstáculos vivenciados, do fuso horário totalmente invertido aos problemas técnicos. Esses últimos, potencializados pela Lei de Murphy, são um espetáculo à parte. Em especial, cito o Bluetooth Hell que vivenciamos no dia da viagem: os dispositivos pararam de se comunicar adequadamente, pois havia muitos deles, e a “bruxa da interferência” baixou no projeto. Felizmente, vídeos de backup que havíamos gravado quando as coisas funcionavam proporcionaram um Plano B, que foi prontamente utilizado quando problemas similares aconteceram na hora da demonstração em Seul. Ao final, deu para transmitir a idéia aos juízes, o que foi o mais importante. Não posso dizer que “desacreditei na conquista” em nenhum momento pelo simples fato de que nunca fiz da conquista uma obsessão. Pensava em dar o nosso melhor. Se o nosso melhor fosse o suficiente para vencer, então que fosse bem-vinda a vitória. Como uma conseqüência, não como um objetivo. CM: Na competição, alguns outros projetos se destacaram na sua opinião? Fale um pouco sobre esses projetos. Sem dúvida, os concorrentes assustam. A começar pela própria concorrência nacional. Os dois outros projetos brasileiros eram da UNESP, que já havia chegado antes nas finais da competição, quando ela ainda se chamava Windows Embedded Student Challenge. A parafernália dos competidores internacionais também impressionou, embora nós não tivéssemos muito tempo para ver os projetos concorrentes. O pessoal da polônia usava um dispositivo na testa para tratar de dislexia. O pessoal da Romênia criou uma mesa que formava caracteres Braille em relevo, para os cegos. Entretanto, mesmo concorrendo em um nicho mais popular, a alfabetização, nossa solução conseguiu se destacar. CM: Qual curso e universidade você estuda? A universidade ajudou ou influenciou nesta conquista? Como? Curso doutorado em Ciência da Computação pela Universidade Federal de Pernambuco (UFPE). Sem dúvida, a UFPE foi peça-chave no processo, especialmente de forma mais indireta, na construção de nosso embasamento. Acho que um diferencial da equipe campeã do Brasil em relação a muitas outras foi o modo bem-argumentado, “redondo”, em que nossa proposta foi defendida, além de segurança e embasamento nas respostas à temida sessão de perguntas dos juízes. Acho que isso não é o tipo da coisa que se constrói do dia para a noite, são proficiências que se adquirem ao longo de um período de aprendizado que dura anos. Posso dizer que ser parte desse ecossistema que existe em Pernambuco, chamado “Porto Digital”, que concretiza as oportunidades explorando o que há de mais importante (capital humano), fez a diferença.

15

A taça do mundo é nossa!!! Imagine Cup 2007
CM: Qual a mensagem que você deixa de incentivo para quem pensa em participar da Imagine Cup do ano que vem? AF: A Imagine Cup é uma oportunidade ímpar. Não existe coisa igual no mundo, sem exageros. Ter sua idéia avaliada por especialistas na área (e de graça), fazer networking com pessoas de dezenas de países, culturas e línguas, colocar o espírito empreendedor à prova, aprimorar habilidades técnicas, de apresentação e de comunicação, sentir a gostosa responsabilidade de representar o seu país e, por fim, projetar e dar visibilidade ao seu próprio trabalho e talento são alguns dos benefícios de participar de uma Imagine Cup. Mesmo que você não prossiga para as fases seguintes da competição, sua participação já vai lhe ter dado bons frutos, nem que seja mais maturidade e conhecimento para participar novamente no ano seguinte. Não se preocupe se você acha que seu projeto ou idéia não são muito competitivos. Eles evoluem na competição, especialmente a partir do feedback de outras pessoas, em especial dos juízes. Participe com humildade, visando engrandecer sua experiência, e não a vitória. Esse é o segredo para se viciar na Imagine Cup e, mais cedo ou mais tarde, ser bem-sucedido na competição. CM: Para finalizar, qual a coisa mais estranha que você comeu na Coréia? AF: Em um dia da competição, fomos levados ao Estádio Olímpico de Seul, em que um prato coreano estava sendo preparado: o “bimbimbop”. Montaram um enorme panelão desse prato típico, que é feito com arroz, vegetais e carne, misturados de uma maneira também típica. Escolheram 5 estudantes dos 300 presentes para fazer a mistura, e eu e o Carlos Rodrigues, outro membro do grupo, não perdemos a oportunidade. Participamos da mistura, empunhando garfos, colheres e espetos gigantes. A mistura foi bem-sucedida, porém acho que o tempero não agradou a muitos: pimenta em excesso para os padrões brasileiros! Muitos recorreram à fila da batatafrita e sorvete do lado de fora... Por fim, estendi por conta própria minha experiência na Coréia por mais dois dias, após a competição, conhecendo melhor Seul e arredores com a equipe de Portugal. Tive a oportunidade de conhecer e registrar algumas coisas bizarras, como uma barraquinha de espetinho com a foto de um cachorro na frente... Se era ou não o que vocês estão pensando, deixo para vocês mesmos concluírem. Basta olhar a foto. (em tempo: não, não experimentei!)

ROBERTO SONINO
CM: Olá Roberto, fale um pouco sobre você, sua formação e experiências em desenvolvimento. RS: Meu nome é Roberto Sonnino, tenho 19 anos, estudo Engenharia da Computação na Poli-USP e desde novo trabalho com design e desenvolvimento. Hoje em dia tenho como especialidade a área de interfaces. Além desse título, fui campeão da IC2006 Índia na categoria Interface Design e vicecampeão em 2005 na categoria Desenvolvimento Web Ensino Médip. Desde 2006, sou Microsoft Student Partner (assim como André e Carlos, da equipe) e estou sempre por aí dando palestras e cursos. Também mantenho um blog em http://virtualdreams.com.br/blog. CM: Qual a sensação de representar o Brasil nesta competição e acima de tudo trazer o título de campeão? Cite também os membros do time campeão. RS: É sempre ótimo poder representar o país, tentando mudar um pouco a visão que os estrangeiros têm do Brasil. Claro que trazer a taça é muito gratificante, uma sensação de que todo o trabalho valeu a pena, com mais ânimo para seguir em frente! CM: Em algum momento durante a competição, você chegou a desanimar ou até mesmo desacreditar na conquista? Se sim, em que momento isso foi revertido? RS: Acho que um momento que trouxe um pouco de desânimo (apesar de estarmos bem preparados e com pé no chão) foi logo após o 2o lugar na final brasileira. Estávamos bastante confiantes e, quando não conseguimos na categoria Software Design, ficamos um pouco desanimados. Mas já tínhamos o caminho traçado para o "plano B", então logo voltamos aos trilhos com força total. Para mim essa IC foi uma lição de superação, mostrar na prática que sempre dá para tentar de novo. CM: Na competição, alguns outros projetos se destacaram na sua opinião? Fale um pouco sobre esses projetos. RS: Infelizmente a competição foi bem corrida, e não tive muito tempo para ver outros projetos. Um projeto específico que me deixou bastante impressionado foi o projeto da categoria Filme Curta-Metragem da equipe do Brasil, Papa-paçoca, que faturou o 3o lugar na competição com um trabalho muito interessante, bonito e profissional. Parabéns para eles! CM: Qual curso e universidade você estuda? A universidade ajudou ou influenciou nesta conquista? Como? RS: Eu estudo Engenharia da Computação na Poli - USP. Nessa conquista, a universidade não teve muita influência direta, já que eu estava trabalhando com uma equipe com 3 integrantes da UFPE. Quase virei pernambucano! Mas é claro que os estudos na universidade dão um apoio técnico e pedagógico que são essenciais não só na Imagine Cup, como para a vida.

16

A taça do mundo é nossa!!! Imagine Cup 2007
CM: Qual a mensagem que você deixa de incentivo para quem pensa em participar da Imagine Cup do ano que vem? AF: A Imagine Cup é uma oportunidade ímpar. Não existe coisa igual no mundo, sem exageros. Ter sua idéia avaliada por especialistas na área (e de graça), fazer networking com pessoas de dezenas de países, culturas e línguas, colocar o espírito empreendedor à prova, aprimorar habilidades técnicas, de apresentação e de comunicação, sentir a gostosa responsabilidade de representar o seu país e, por fim, projetar e dar visibilidade ao seu próprio trabalho e talento são alguns dos benefícios de participar de uma Imagine Cup. Mesmo que você não prossiga para as fases seguintes da competição, sua participação já vai lhe ter dado bons frutos, nem que seja mais maturidade e conhecimento para participar novamente no ano seguinte. Não se preocupe se você acha que seu projeto ou idéia não são muito competitivos. Eles evoluem na competição, especialmente a partir do feedback de outras pessoas, em especial dos juízes. Participe com humildade, visando engrandecer sua experiência, e não a vitória. Esse é o segredo para se viciar na Imagine Cup e, mais cedo ou mais tarde, ser bem-sucedido na competição. CM: Qual a mensagem que você deixa de incentivo para quem pensa em participar da Imagine Cup do ano que vem? RS: A mensagem principal é: não deixe de tentar. Na Imagine Cup você nunca tem nada a perder, e cada etapa sempre traz aprendizado, experiência profissional e muitos contatos. E ainda pode trazer uma viagem para o outro lado do mundo, representar seu país, e ganhar um prêmio! CM: Para finalizar, qual a coisa mais estranha que você comeu na Coréia J ? RS: Com certeza, foi o Bibimbop preparado com o suor de meus colegas de time André e Carlos! É uma mistura de legumes e arroz, com um molho de soja e pimenta, preparada numa mega-panela. O pior é o legume altamente apimentado que vinha como acompanhamento!

CARLOS EDUARDO RODRIGUES
CM: Olá Carlos Eduardo Rodrigues, fale um pouco sobre você, sua formação e experiências em desenvolvimento. CE: Eu sou formado em Ciência da Computação pela Universidade Federal de Pernambuco e atualmente estou em vias de conclusão do mestrado em CC na mesma instituição. Dentro do curso, sempre me dediquei à área de hardware e sistemas embarcados, porém sem deixar de lado outras áreas como o desenvolvimento de jogos e infra-estrutura de TI. Trabalho na área desde 2001, tendo utilizado várias tecnologias e linguagens de programação ao longo destes anos, com destaque para assembly, VHDL, C, Java (J2SE, J2ME e J2EE). Conheci a plataforma .NET em 2003 durante um projeto acadêmico e desde então tenho trabalhando constantemente com ela, tendo obtido várias certificações MCTS de desenvolvimento e a certificação MCITP em Windows Vista. CM: Qual a sensação de representar o Brasil nesta competição e acima de tudo trazer o título de campeão? Cite também os membros do time campeão. CE: A sensação é a melhor possível! É muito gratificante poder mostrar às pessoas lá fora (e aqui dentro também!) que o Brasil não é apenas um país de samba e futebol, e que tem competência em áreas mais relevantes, como TI. Por esta razão, o título é um símbolo muito significativo para os brasileiros, uma vez que nossa cultura tende a não dar tanta importância aos que não chegam em primeiro lugar. Para nós por outro lado, o título é a coroação de um trabalho de meses de uma equipe que teve que superar as mais diversas dificuldades (técnicas, de logística e de infraestrutura) para conseguir criar uma solução capaz de competir com os outros projetos do mundo. Tivemos na nossa equipe a feliz coincidência de possuir membros com competências complementares à realização do projeto que acima de tudo estavam unidos por um grande sentimento de amizade. Isso certamente foi um diferencial do time. CM: Em algum momento durante a competição, você chegou a desanimar ou até mesmo desacreditar na conquista? Se sim, em que momento isso foi revertido? CE: Sim. Quando eu cheguei na Coréia e vi os outros concorrentes da categoria de sistemas embarcados, eu fiquei um pouco preocupado, pois CE: achei que a nossa solução não atendia tão bem aos requisitos da competição quanto os projetos dos outros times. No entanto, ao longo do tempo fomos refinando a apresentação e recebendo um ótimo feedback dos juízes, o que foi aumentando a nossa confiança. CM: Na competição, alguns outros projetos se destacaram na sua opinião? Fale um pouco sobre esses projetos. CE: Infelizmente eu não tive tempo de visitar os outros estandes ou assistir outras apresentações da competição de Embedded para compreender bem os outros projetos... No entanto, dois projetos me chamaram atenção: o do Canadá, que é um "simulador do corpo humano" usado para ensinar primeiros socorros, e um dos projetos da Romênia, similar ao competidor brasileiro de SD, Know Touch, que traduz texto impresso para braille em tempo real.

17

A taça do mundo é nossa!!! Imagine Cup 2007
CM: Qual curso e universidade você estuda? A universidade ajudou ou influenciou nesta conquista? Como? CE: Eu devo a minha formação ao Centro de Informática (CIn) da Universidade Federal de Pernambuco. Eu diria que a excelente qualidade da minha formação não só ajudou como foi essencial na conquista . No CIn, os alunos são estimulados desde o começo do curso a inovar nos seus projetos e não se limitar ao conteúdo aprendido na sala de aula na hora de implementá-los. CM: Qual a mensagem que você deixa de incentivo para quem pensa em participar da Imagine Cup do ano que vem? CE: Não tenham medo de sonhar! Não deixe que a falta de conhecimento sobre determinada área ou tecnologia limite a sua criatividade! No mundo de hoje, o conhecimento necessário para dar vida às idéias pode ser adquirido em qualquer momento. Além disso, sempre existem pessoas mais experientes (professores, competidores de edições anteriores da Imagine Cup, Student Partners da Microsoft) a quem você pode recorrer em caso de necessidade.

CM: Para finalizar, qual a coisa mais estranha que você comeu na Coréia J ? CE: Ótima pergunta! Ao contrário da Índia, aonde tínhamos uma surpresa a cada refeição, o cardápio coreano estava bastante "internacional", com comidas que agradavam a todos os paladares. Mas obviamente, algumas vezes comemos coisas não-identificadas que eram, todavia, deliciosas! FIM.

RECORDAR É VIVER!

19

WiiMote, o badalado da Nintendo sob controle no XNA
O badalado controle da Nintendo fez história na area de videogames. Acredito que nem mesmo a Nintendo previu tamanho sucesso. Hoje em dia é possível observar o WiiMote em ação nos diversos tipos de jogos: futebol, fitness, boliche, golf, ja pessoa, rpgs, simuladores de corrida, entre outros. O aparelhinho também ganhou alguns acessórios, tornando ainda mais realistica a jogabilidade. Imagine você jogando tênis com um acessório parecido com uma raquete? E uma luta medieval com espada e escudo? Sensacional, não acham? Bem, as possibilidades vão além, conquistando os desenvolvedores do PC. Para fazer com que o PC reconheça o aparelho é necessário um dispositivo Bluetooth. Você poderá encontrar tal dispositivo em qualquer loja especializada em informática. Para facilitar, procure dispositivos no padrão USB, assim você poderá conectar em qualquer PC. Para nossa sorte, um dos adoradores da tecnologia, também gosta muito de C# e XNA, e nos brindou com uma excelente library com uma dezena de recursos interessantes. Baixe a biblioteca neste endereço:
http://channel9.msdn.com/ShowPost.aspx?PostId=291133

Para animar ainda mais a festa conheça melhor os commandos do Wiimote: http://www.wiili.org/index.php/wiimote Idéias para você detonar:

   

Que tal começar com um simples game de ping-pong? Avance e tente criar uma paródia de Arkanoid

Agora que você está detonando, crie algum simulador de física para ajudá-lo nos estudos Um game de fitness iria muito bem, não acham? Pelo menos pra mim que preciso perder umas “toneladas”.

 

E um game que simula cobrança de faltas?

Por falar nisso, que tal um game que simula arremessos no basquete? Quem sabe nossos jogadores não melhoram a pontaria?

 

Um game para melhorar/treinar a coordenação motora Um game que auxilie no tratamento fisioterapêutico

Jovens Jedis, as possibilidades são infinitas, limitadas somente pela sua imaginação. Se desenvolver algo com a tecnologia, não pense duas vezes para nos mostrar. U-ha! U-ha! U-ha! Emerson Facunte

Feito isso, siga as instruções do nobre brasuca Gutembergue, um grande entusiasta de games e forte colaborador da SharpGames: http://SharpGames.Net/Artigos/Wiimote+no+XNA+.xna

Facunte é MVP Visual Developer ASP/ASP.Net, co-Owner Framework.Net Microsoft Latam, entusiasta de aplicações e-business, XNA Game Designer, publicou 9 livros e mais de 120 artigos, ministrou palestras, cursos e workshops para cerca de 20.000 pessoas em todo o país, membro-fundador do DUG-BR, membro-fundador do VSTS Rocks Brasil, Lider do grupo Codificando.Net, Arquiteto de Software da Saraiva.COM, professor de Ciência da Computação da UNIP e de pós-graduação em Engenharia de WebSites da UNICSUL-SP

20

Coluna: BizTalk.ing

Biztalk.ing

Conversamos na coluna do mês anterior sobre os artefatos BizTalk que são utilizados para a construção de uma integração, seja ela uma solução de Messaging ou um Business Process. Dessa maneira, imagino que deva ter ficado um pouco mais claro como o BizTalk funciona “internamente”. Ainda falta uma “peça” importante, que é conectar as “pontas do BizTalk” que serão integradas. Essa conexão é feita através dos adaptadores (adapters no inglês original). Os adaptadores são “pedaços de códigos” que contém as instruções para a conexão do BizTalk com as entidades que desejamos integrar, as aplicações. Uma maneira simples para que entendamos esses adaptadores é compará-los aos adaptadores presentes no mundo físico. Em nosso dia-a-dia, o exemplo mais óbvio é a tomada de energia elétrica. Podemos ainda compará-los aos conectores do nosso microcomputador: saída de rede, entrada do teclado, entrada e saída de modem, etc. Temos três categorias de adaptadores: Application adapters (Adaptadores para Aplicações) Estes adaptadores conectam o BizTalk a aplicações, tais como: um pacote ERP, um sistema de CRM ou ainda um sistema especialista desenvolvido in-house. Exemplo: SAP, JDE, PeopleSoft, e Siebel. Technology adapters (Adaptadores para Tecnologias) Os Adaptadores para Tecnologias fornecem uma ponte para várias tecnologias e protocolos. Os adaptadores que acompanham o BizTalk Server 2006 provem suporte para: EDI, File, FTP, HTTP, MSMQ, SMTP, Web services e MQSeries. Além da possibilidade de acesso a componentes e a API .NET. Data adapters (Adaptadores para Dados) Estes adaptadores conectam o BizTalk Server a Banco de Dados, tais como: SQL Server, Oracle, ou DB2. A lista completa dos adaptadores disponíveis para o BizTalk Server 2006 pode ser facilmente encontrada na documentação que acompanha o produto, ou ainda no seguinte endereço: http://www.microsoft.com/biztalk/evaluation/adapter/default.mspx. Outra importante fonte de informação a respeito dos adaptadores do BizTalk é o site do MSDN: http://msdn2.microsoft.com/en -us/biztalk/aa937652.aspx. O BizTalk Server 2006 possui um “modelo simétrico” para os adaptadores, expondo as mesmas funcionalidades para adaptadores de envio e recebimento de mensagens. Todos os adaptadores executam atividades associadas com a normalização de transporte, como receber uma mensagem do BizTalk entregando-a a um destino, usando um protocolo específico. Por exemplo, o adaptador SOAP envia mensagens usando o protocolo SOAP e o Adaptador SAP envia mensagens usando o protocolo RFC. Adicionalmente alguns adaptadores executam atividades ligadas à normalização de dados. Podemos citar o adaptador SQL que representa a estrutura da tabela em um XML, e o adaptador SAP que representa um IDOC em um XML como exemplos dessa normalização. Em tempo de desenvolvimento dos adaptadores é importante ter em mente que a normalização de dados só deve ser utilizada quando necessário, uma vez que o mapeamento nos prove um rico suporte a normalização de dados. Normalmente nossa primeira experiência com adaptadores do BizTalk se dá na configuração de um Receive ou Send Port. Se você já fez uma dessas atividades ao menos uma vez, pode não ter percebido, mas quando escolheu um transport type estava especificando qual adaptador seria usado pelo Port.. Temos quatro padrões de comunicação suportados por um adaptador, que podem ser: One Way Receive O BizTalk recebe uma mensagem através de um protocolo especifico, “passa-a” através de um Pipeline, e então persiste a mensagem no MessageBox. One Way Send O BizTalk “pega” uma mensagem do MessageBox, submete-a a um Pipeline, e então envia ao destino apropriado usando o protocolo específico.

21
Request Response

Coluna: BizTalk.ing

Biztalk.ing

O BizTalk recebe uma mensagem da mesma maneira que faria no caso do One Way Receive, porem a aplicação que executou a chamada aguarda por uma resposta do BizTalk para finalizar o processo. Um exemplo desse tipo de interação é quando expomos uma orquestração como um WebService. Nesse caso, a aplicação cliente faz uma chamada para o adaptador SOAP, iniciando a orquestração, e então aguarda a resposta. Solicit Response O BizTalk envia uma mensagem da mesma maneira que faria no caso do One Way Send, mas aguarda uma resposta da aplicação externa. Um exemplo desse modelo é quando uma orquestração consume um webservice via adaptador SOAP. Nesse caso a orquestração efetua uma chamada e aguarda pela resposta. Um detalhe importante é que, nos casos dos padrões Request Response e Solicit Response algumas questões referentes a chamadas síncronas ou assíncronas devem ser observadas com cuidado durante o “desenho” do processo. Nos casos de adaptares para Aplicações e de adaptadores para Dados é necessário o uso de Schemas que representem as mensagens e que serão usados pelo adaptador no seu projeto BizTalk. Esses Schemas podem ser gerados usando o Wizard disponível no Visual Studio 2005. A Microsoft fornece uma grande quantidade de adaptadores junto com o BizTalk Server 2006. Alguns são instalados automaticamente junto com o BizTalk. Outros adaptadores, também fornecidos pela Microsoft, devem ser instalados separadamente. Para maiores informações, consulte a documentação ou o endereço citado anteriormente. É possível também adquirir adaptadores de empresas especializadas no desenvolvimento de adaptadores e também adaptadores desenvolvidos pelas comunidades de desenvolvedores. A diferença fundamental entre esses adaptadores é que as empresas especializadas “normalmente” cobram pelo uso do adaptador e fornecem suporte para o produto, enquanto que os adaptadores desenvolvidos pela comunidade geralmente são gratuitos, com código fonte aberto, mas não fornecem nenhum tipo de suporte ou garantia. É comum nos depararmos com uma situação em que nenhum dos adaptadores disponíveis atenda as nossas necessidades. Se esse for o seu caso é possível também desenvolver seu próprio adaptador customizado usando o BizTalk Server Adapter Framework. Para desenvolver seu próprio adaptador, a dica é consultar a documentação no site do MSDN (link citado acima) e também usar o SDK que acompanha o BizTalk. Desenvolver adaptadores, comumente é uma tarefa que consome tempo, pois envolve conhecimentos profundos da tecnologia que será integrada. Como a conhecidíssima equação diz que: Tempo=Dinheiro, significa que o custo de implantação da integração aumenta quando precisamos desenvolver um adaptador específico. Além disso, normalmente o TCO (Total Cost of Ownership – Custo Total de Propriedade) associado ao desenvolvimento “manual” de um adaptador é superior ao valor de aquisição do mesmo de um terceiro reconhecido pela Microsoft. Uma decisão chave em um projeto de integração (e também do produto de integração a ser usado) é quais adaptadores precisarão ser comprados e quais precisarão ser escritos pelos desenvolvedores. A melhor situação acontece nas integrações em que não existe necessidade de aquisição de adaptadores, nem necessidade de desenvolvimento “in-house”. Para nossa felicidade, no quesito adaptadores, a Microsoft vem melhorado bastante e fornecendo uma variedade enorme de adaptadores embarcados no BizTalk Server. Sem custo adicional e agregando ainda mais valor ao produto. Nota 10. Até a próxima !!!

Feio Tomaz (feiotomaz@codificandomagazine.net) é tecnólogo em Processamento de Dados, formado pela FatecAmericana. MCTS em BizTalk Server 2006, trabalha desde 2004 como consultor especialista em Desenvolvimento de Processos de Negócio e Soluções de Integração. Atualmente é consultor da ITGROUP. Algumas vezes perde a esperança, mas consegue encontrá-la novamente toda sexta-feira.

22
Pessoal,

Coluna: Desvendando o SQL Server
Iremos a partir deste mes desvendar os segredos de usar XML com SQL Server 2005. Neste segundo artigo para a revista Codificando.net e o primeiro de uma série, irei demonstrar o uso de XML com SQL Server 2005. No decorrer deste e dos próximos artigos, irei abordar os seguintes tópicos:  Introdução: XML e SQL Server 2005 Gerenciando dados XML Trabalhando com XML Dados XML e tecnologia SQL Server Modificando dados XML Criando Indices XML

SQL SERVER

    

Os 3 primeiros tópicos serão abordados agora, e no próximo mês abordaremos os tópicos restantes.

INTRODUÇÃO: XML E SQL SERVER

A XML (eXtensible Markup Language, ou Linguagem de Marcação Estendida) é um subconjunto da SGML (Standard Generalized Markup Language, ou Linguagem de Marcação Padrão Generalizada) que permite que uma marcação específica seja criada para especificar idéias e compartilhá-las. O SQL Server 2005 é um produto da Microsoft para análise e gerenciamento de dados que entrega maior escalabilidade, disponibilidade e segurança para aplicações corporativas enquanto torna-as fáceis de serem criadas, implementadas e gerenciadas.
GERENCIANDO DADOS XML

A inclusão de suporte nativo ao XML no SQL Server 2005 representou uma excelente alternativa para DBAs e Developers acostumados ao uso de dados relacionais. Ao contrário dos dados relacionais, XML pode apresentar os dados de forma estruturada, semi-estruturada e desestrutura. O SQL Server 2005 oferece no seu mecanismo original e no otimizador de consultas, o suporte total e integrado a esses dados XML.
TRABALHANDO COM XML

XML é uma plataforma independente; possui um formato de representação de dados que oferece benefícios sobre o formato relacional específico para representação de dados. A Microsoft tornou o SQL Server 2005 compatível com SQLXML que especifica como um banco de dados relacional pode, de forma nativa, gerenciar dados XML. O SQL Server 2005 oferece aos DBAs e Developers maior flexibilidade para se trabalhar com diferentes tipos de dados. SQL Server 2005 oferece 2 formas de armazenar XML:   XML em coluna de tipo de dados texto (char, varchar) XML em coluna de tipo de dados XML

23

Coluna: Desvendando o SQL Server
Pode-se armazenar dados XML em colunas com tipo de dados (n)char, (n)varchar ou binary. O SQL Server 2005 oferece o argumento MAX que aloca um espaço de armazenamento máximo de 2GB. Exemplo: char(MAX) Atenção: Evite criar novas tabelas ou colunas em tabelas existentes com os tipos de dados text, ntext e image pois os mesmos serão retirados em futuras versões do SQL Server. A Microsoft recomenda a interrupção do uso destes tipos de dados. Principais benefícios de armazenar dados XML em colunas texto no SQL Server 2005:

SQL SERVER

  

XML fornece “fidelidade textual”(todos os detalhes como comentários e espaços em branco são preservados); Reduz o processamento no servidor devido ao fato de todo o processamento ser realizado na camada intermediária;
Melhor performance para recuperação e inclusão de dados XML.

Principais limitações de armazenar dados XML em colunas texto no SQL Server 2005:   Complexidade de código (maior custo de manutenção); Procura (“search”) de dados XML em colunas texto sempre envolvem a leitura de todo o documento XML devido ao fato de estar sendo interpretado como texto pelo SQL Server 2005.

O SQL Server 2005 oferece o novo tipo de dados XML que pode ser usado como qualquer outro tipo de dados: definir colunas em tabelas, como parâmetro(s) em funções e stored procedures e na criação de variáveis. Exemplos: Create Table TabelaXML(cod int, descricao XML) Create Procedure SP_UsoXML(@registro is XML) Declare @registroXML AS XML Principais benefícios de armazenar dados XML em colunas XML no SQL Server 2005:  O tipo de dados XML é totalmente integrado com o mecanismo de query (Query Engine) e outros serviços do SQL Server 2005;    O dado é armazenado e manipulado de forma nativa (XML); SQL Server 2005 oferece suporte para seleção, inclusão, alteração e exclusão no documento XML; A estrutura do documento XML é preservada.

Principais limitações de armazenar dados XML em colunas XML no SQL Server 2005:  “Fidelidade textual” não é preservada (espaços em branco, declaração XML no topo do documento, comentários, ordenação dos atributos, e outros elementos que não são dados são removidos da estrutura);  O tamanho máximo de armazenamento é de 2GB.

24

Coluna: Desvendando o SQL Server
PREPARANDO O AMBIENTE DE ESTUDOS:
Antes de terminar a primeira parte do artigo, iremos preparar o nosso ambiente de trabalho, para isso se faz necessário ter instalado em nosso computador uma edição do SQL Server 2005. Recomendo a utilização da edição SQL Server Express por ser gratuita e ter todos os recursos necessários que iremos utilizar em nossos exercícios. Instalado o SQL Server 2005, chegou o momento de criar um banco de dados para uso exclusivo em nossos estudos:

SQL SERVER

CREATE DATABASE CODIFICANDOXML O próximo passo é criar tabela de exemplo a ser utilizada durante os nossos estudos: CREATE TABLE TabelaExemploXML ( COD INT IDENTITY(1,1) NOT NULL, LogDataHora DATETIME NOT NULL CONSTRAINT [DF_TabelaExemploXML_LogDataHora] DEFAULT (GetDate()), NomeDaAplicacao NVARCHAR(100) NOT NULL, ColunaXML XML NULL ) Por enquanto ficaremos por aqui, no próximo artigo continuaremos a desvendar o uso de XML com SQL Server. Preparem-se, a viagem promete! Abraços, Alexandre Lopes

Alexandre Lopes atua como consultor especialista em SQL Server em projetos da Y2K-TI (http://www.y2k-ti.com.br). Possui mais de 10 anos de experiência na área de TI, sendo certificado Microsoft com os títulos MCT, MCSE e MCDBA. Como instrutor MCT (Microsoft Certified Trainer) possui cerca de 4.200 horas ministrando treinamento oficial Microsoft.

25

Coluna: Introdução ao Silverlight… Parte 2
No ultimo artigo, vimos uma breve introdução ao XAML e como podemos criar os elementos usando esta nova linguagem de markup. Neste artigo iremos criar uma aplicação Sliverlight 1.0. Até agora, a Microsoft lançou duas versões de Silverlight: a versão 1.0, que está em RC (Release Candidate – Candidato à versão final) e deve ser lançada em breve, e a versão 1.1, que está em alfa, é ainda uma prévia do que virá a seguir e deve ser lançada apenas no final do ano ou no início de 2008. A versão 1.0 usa o Javascript como code behind e necessita que o cliente baixe um plugin de 1Mb, em http:// www.microsoft.com/silverlight/downloads.aspx. A versão 1.1 usa linguagens .net, como C#, VB.net, IronPython, IronRuby ou managed JScript e necessita de um plugin de 4Mb. Ambas versões rodam nos browsers Internet Explorer (6 ou 7), Firefox e Safari, para Windows ou Mac.

silverlight

Para o desenvolvimento de aplicações Silverlight, podemos usar qualquer editor de texto, inclusive o bloco de notas do Windows. Precisamos baixar o Silverlight SDK, que contém o arquivo Silverlight.js, em http:// msdn2.microsoft.com/en-us/asp.net/bb187452.aspx. Com este arquivo e um editor de texto, temos todas as ferramentas que precisamos para criar a aplicação Silverlight. O passo seguinte é criar uma página HTML que conterá nosso controle Silverlight. No bloco de notas, crie um arquivo SilverProg.html, contendo o seguinte código:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head><title>Primeiro programa Silverlight</title></head> <body> </body> </html>
Esta página ainda não contém nada. Devemos colocar no cabeçalho, após a tag title, o código que referencia o arquivo Silverlight.js (certifique-se que este arquivo está na mesma pasta do arquivo HTML):

<script type="text/javascript" src="Silverlight.js"></script>
Em seguida, devemos colocar um div no corpo da página, que conterá nosso objeto Silverlight:

<div id="SilverlightControlHost" style="width:640px; height:480px;" > <script type="text/javascript"> createSilverlight(); </script> </div>
A função createSilverlight irá criar o objeto Silverlight e deve ser definido logo abaixo da referência a Silverlight.js:

<script type="text/javascript"> function createSilverlight() { Silverlight.createObjectEx({ source: "Pagina.xaml", parentElement: document.getElementById("SilverlightControlHost"), id: "SilverlightControl", properties: { width: "100%", height: "100%", version: "0.8" }, events: {}}); } </script>

26

Coluna: Introdução ao Silverlight… Parte 2
A função CreateObjectEx está definida em Silverlight.js. Os parâmetros para esta chamada são:

    

Source – é o nome da página Xaml que contém os objetos Silverlight parentElement – é o id do div da página onde o controle ficará id – é o id do controle Silverlight properties – contém as propriedades do elemento: altura, largura, versão do Silverlight events – eventos ligados ao controle. Este parâmetro permite ligar manipuladores de eventos ao controle, como por exemplo OnError, que é chamado quando ocorre um erro ou OnLoad, que é chamado quando o controle é carregado.

silverlight

Nossa página HTML está pronta. O passo seguinte é criar o arquivo XAML para o controle Silverlight. Crie um arquivo chamado Pagina.xaml (este nome deve ser o mesmo do parâmetro source da função CreateObjectEx) e coloque o seguinte código:

<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="640" Height="480" Background="LightGray" > <Ellipse Width="300" Height="300" Canvas.Left="50" Canvas.Top="50" StrokeThickness="10" > <Ellipse.Stroke> <LinearGradientBrush> <GradientStop Color="Navy" Offset="0.0"/> <GradientStop Color="White" Offset="1.0"/> </LinearGradientBrush> </Ellipse.Stroke> <Ellipse.Fill> <LinearGradientBrush> <GradientStop Color="White" Offset="0.0"/> <GradientStop Color="Navy" Offset="1.0"/> </LinearGradientBrush> </Ellipse.Fill> </Ellipse> </Canvas>
Com este código, nosso programa Silverlight está pronto. Abra a página SilverProg.html no browser. Você deve obter algo semelhante à Figura 1: Figura 1 – Programa Silverlight no Firefox

27

Coluna: Introdução ao Silverlight… Parte 2
Com nosso programa pronto, iremos fazer com que o controle Silverlight interaja com o código Javascript da página: quando o usuário clicar na elipse, uma caixa de mensagem será mostrada. Para isso, devemos definir um manipulador para o evento MouseLeftButtonDown da elipse na página XAML:

<Ellipse Width="300" Height="300" Canvas.Left="50" Canvas.Top="50" StrokeThickness="10" MouseLeftButtonDown="ellipseClick">
Devemos colocar o manipulador do evento na página HTML, após a função createSilverlight:

silverlight

function ellipseClick() { alert('Você clicou na elipse'); }
Ao salvar os dois arquivos e atualizar a página no browser, uma caixa de mensagem é mostrada quando clicamos na elipse. Podemos também manipular os objetos da página a partir do Javascript. Por exemplo, se quisermos aumentar a elipse quando o mouse está sobre ela e diminuí-la quando o mouse está fora, podemos criar dois novos manipuladores para os eventos MouseEnter e MouseLeave na página xaml:

<Ellipse Width="300" Height="300" Canvas.Left="50" Canvas.Top="50" StrokeThickness="10" MouseLeftButtonDown="ellipseClick" MouseEnter="ellipseMouseEnter" MouseLeave="ellipseMouseLeave">
O código Javascript que deve ser adicionado na página HTML é:

function ellipseMouseEnter(sender,args) { sender.Width = 330; sender.Height = 330; } function ellipseMouseLeave(sender,args) { sender.Width = 300; sender.Height = 300; }
Neste caso, adicionamos dois parâmetros aos manipuladores: sender indica o objeto que ativou o evento e args são os parâmetros do evento (por exemplo, eles podem conter a posição que o mouse foi clicado). Estamos aqui aumentando ou diminuindo o valor das propriedades Width e Height da elipse, quando o mouse entra ou sai da área da elipse. Salve os dois arquivos e refresque a página no browser, verificando que a elipse aumenta ou diminui de tamanho conforme a posição do mouse. Como pudemos ver, escrever um programa Silverlight é bastante simples e a interação entre o código e os elementos é muito fácil, permitindo escrever aplicativos bastante poderosos com tecnologias simples, sem necessitar de ferramentas especiais. No próximo artigo, veremos como escrever um programa Silverlight 1.1, usando C# como code-behind. Até lá!

Bruno Sonnino é Microsoft MVP, consultor e desenvolvedor há mais de 20 anos. É autor de 5 livros de Delphi, escreve artigos para diversas revistas nacionais e estrangeiras, como PCMagazine Brazil, .net Magazine, entre outras. Desenvolveu mais de 15 utilitários para a revista PCMagazine americana. Foi palestrante em diversos eventos, como TechEd 2006, nas 5 edições da BorCon Brasil e na 11a. BorCon americana.

28
Caros leitores:

Coluna: Imagine Cup 2007

Mundo Acadêmico

Caros amigos da Comunidade, neste artigo gostaria de contar a vocês o desempenho do Brasil na Final Mundial da Imagine Cup, que foi realizada em Seul, na Coréia do Sul, em Agosto. Como sempre, obtivemos um desempenho excelente, demonstrando o nosso talento e a nossa criatividade ímpares. O Brasil, mais uma vez, subiu no pódio da Imagine Cup, a “Copa do Mundo” da computação organizada todos os anos pela Microsoft. A equipe Trivent Dream, formada pelos estudantes da Universidade Federal de Pernambuco Carlos Eduardo Rodrigues, André Furtado e Ivan Cordeiro Cardim, conquistou o primeiro lugar na categoria Sistemas Embarcados e trará para casa um prêmio de US$ 8 mil. Na categoria Filme de Curta Metragem, o Brasil ficou em terceiro lugar. O vencedor foi o time Papaçoca, formado pelos alunos da Unesp Alexandre Nacari, Arthur de Pádua, Felipe Pellisser e Wendel Yokoyama, que irá receber US$ 3 mil de premiação. Os nomes dos vencedores foram anunciados no dia 10/08, em Seul, na Coréia, onde aconteceu a etapa final da competição. Entre os dias 5 e 10 de agosto, jovens de todo o mundo, incluindo outras três equipes de estudantes brasileiros apresentaram a um graduado corpo de jurados soluções tecnológicas desenvolvidas com base no tema "Imagine um mundo onde a tecnologia pode oferecer uma melhor educação para todos". O Brasil também disputou a categoria Projeto de Software e teve outros dois representantes na modalidade Sistemas Embarcados. "A Imagine Cup demonstra o poder do software para solucionar problemas do mundo real e comprova o potencial brasileiro para o desenvolvimento de tecnologias inovadoras. O mais importante é que todos esses projetos têm aplicação no dia-a-dia das pessoas e contribuem para melhorar a qualidade de vida com um custo mais acessível" – afirmou o gerente de novas tecnologias e parcerias acadêmicas da Microsoft Brasil, Amintas Lopes Neto. Um total de 112 equipes - 344 estudantes de 59 países - foram selecionadas para participar das finais da Imagine Cup em nove categorias: Projeto de Software, Sistemas Embarcados, Desenvolvimento Web, Algoritmo, Desafio de InfraEstrutura, Fotografia, Filme de Curta-metragem, Interface Visual e Projeto Hoshimi (Games). O Brasil também foi um dos 10 países selecionados para apresentar as soluções desenvolvidas por seus estudantes para Bill Gates, em Redmond, um mês antes da etapa final. Os outros foram China, Egito, França, Alemanha, Japão, Coréia, Estados Unidos, Polônia e Reino Unido. "Participar da Imagine Cup é uma experiência marcante. Temos a oportunidade de conhecer gente do mundo todo e ver que muitas pessoas querem usar a tecnologia para fazer diferença" – afirmou André Furtado, integrante da equipe Trivent Dream, vencedora na categoria Sistemas Embarcados. "Ficamos muito felizes com o resultado e com os comentários positivos que recebemos dos juízes e de outros competidores". Conforme conversado com Amintas Neto esta semana, as inscrições para a Imagine Cup 2008 estão abertas no site http://www.imaginecup.com e, insisto, convido-os a mostrarem seu talento, criatividade e competência nesta competição fantástica. Vejam esta notícia a respeito no site da TV Globo: http://video.globo.com/Videos/Player/Noticias/0,,GIM710979-7823COMECA+A+COPA+DA+INFORMATICA+NA+COREIA+DO+SUL,00.html.

Até a próxima coluna, e não se esqueçam: “No Stress, Think .NET !”

Mauricio Wieler Orellana - Bacharel em Ciências da Computação, Mestrando em Ciências da Computação na USP, MCSD em Visual Studio 6, MCP em C#, atua no mercado Informática há 14 anos e é professor da Universidade Paulista (UNIP), Universidade Salesiana de São Paulo (UNISAL) e Faculdade Montessori, desde 2000. Foí Coordenador Acadêmico da INETA Brasil.

29

Coluna: 6 coisas que você tem que saber sobre performance no Compact Framework
Uma de minhas palestras de maior sucesso (Que já virou 2 WebCasts para a Microsoft) é sobre a otimização de código para o Windows Mobile, ou melhor, para o Compact Framework. Eu vejo muitos projetos onde presto consultoria com graves problemas de lentidão, uso de recursos e falhas graves de segurança e esses problemas sempre são recorrentes! Vejam minhas palestras pessoal ..

COMPACT PLACE

Para essas pessoas que não tem tempo nem de ver os WebCasts nem de participar dos evento, reuni aqui algumas regras de ouro que vocês devem colar na parede da sala de sua equipe de mobilidade. São algumas dicas que passam despercebidas pela maioria dos desenvolvedores. Vamos lá: 1. O usuário espera que sua aplicação seja mais responsiva! – Isso é muito chato. Por algum motivo que meus limitados conhecimentos da psique humana não conseguem compreender, os usuários esperaram que a aplicação do device seja bem a mais rápida que uma aplicação equivalente no desktop. Eles não querem perder tempo esperando a interface se formar, ou algum conjunto de dados ser enviado, etc. Normalmente, quando pergunto porque eles acham isso, eles me respondem “ué..é um computador tão pequenininho...tem de ser mais rápido!”. Tenha Métricas. – Não adianta sair por aí lendo artigos desse tipo e sair otimizando tudo feito um louco. Só otimize coisas DEPOIS que você verificou que elas não estão de acordo com o esperado. Faça medições para posterior avaliação desde o começo do seu projeto. Não há nada pior do que otimizar sem ter medido nada antes. Evite o uso frequente de boxing e unboxing. Ele causa uma alocação no heap e a cópia degrada a performance. Isso é óbvio, mas a quantidade de desenvolvedores que foge de generics ainda é grande. Chamadas a métodos Virtuais são até 3x mais caras do que um método de instância, e chamadas a interfaces até 2x mais caras! Isso não uma característica do Compact Framework apenas, mas sim de plataformas com código gerenciado. Pergunte ao pessoal do JME para você ver o que eles dizem. Então pense duas vezes antes de fazer aquele modelo seguindo padrões com vários níveis de hierarquia, interfaces, etc. Chamadas Platform Invoke são até 6x mais caras do que em código gerenciado. Então se você se acha “esperto” fazendo chamadas a API para acelerar a execução, pense duas vezes. Evite Reflection para trechos de código mais sensíveis a performance. Por motivos óbvios.

2.

3. 4.

5. 6.

Dê uma olhada agora no seu código. Faça algumas medições e verifique se você não está fazendo exatamente algo contra alguma dessas regras. Eu aposto que está 

José Antonio Leal de Farias é MVP em Windows Mobile Development e bacharel em ciências da computação pela UFCG, programador profissional nas linguagens C++ e C# e atualmente é Diretor Técnico da Light Infocon S.A . Atua como consultor na área de desenvolvimento para dispositivos móveis há mais de 10 anos, participando de projetos em todo Brasil e em diversos países.”

31

Destaques: Download do Mês
Todo mês temos alguma novidade para baixar da internet e para ninguém perder nenhum desses downloads, vamos publicar mensalmente os principais downloads.

Download do Mês
O Beta 2 do Visual Studio 2008 já está disponível! Acessem: http://msdn2.microsoft.com/en-us/vstudio/default.aspx

Visual Studio 2008 Professional http://www.microsoft.com/downloads/details.aspx ?FamilyId=B98A61BA-99B0-40B7-AB6E-5386A2B94217&displaylang=en

Mais informações de outras versões: http://blogs.msdn.com/bharry/archive/2007/07/26/orcas-beta-2-download-urls.aspx

32

Destaques: Blog do Mês
Os Blogs hoje são ferramentas essenciais para quem acompanha tecnologia, especificamente na área de desenvolvimento, temos muitos blogs com informações pra lá de quentes sendo atualizados diariamente. Muitos funcionários da Microsoft, membros da comunidade, especialistas, etc. formam uma gigante comunidade on-line com notícias, dicas, artigos, etc. Vamos destacar em nossas edições dois blogs, sendo um nacional e um internacional. Sempre analisando a qualidade dos posts e freqüência.

Blog Nacional
Roberto Sonino é um dos campeões da Imagine Cup 2007 e mantém um blog sobre novas tecnologias.

Link do Blog: http://www.virtualdreams.com.br/blog/

Blog Internacional
O time de VB mantém um blog atualizado pelos funcionários do time do produto.

“Os Blogs hoje são ferramentas essenciais para quem acompanha tecnologia”

Link do Blog: http://blogs.msdn.com/vbteam/

33

Cinema
DURO DE MATAR 4.0
Do ilustre diretor Len Wiseman (Anjos da Noite (2003) e Anjos da Noite: A Evolução (2006)), Duro de Matar 4.0 supera as expectativas dos seus mais fiéis fãs. Nesta trama, que são destruídos helicópteros, Aviões e Cidades, não faltam tiros, sangue e ação... Muita ação por sinal. Para quem não tem problemas de ouvir incansáveis estrondos no cinema, é um filme recomendadíssimo. Os outros filmes da série Duro de Matar foram: Die Hard (1988),

Die Hard 2 (1990), Die Hard: With a Vengeance (1994) e agora, depois de 13 anos Die Hard 4.0.

OS SIMPSONS – O FILME
Grandíssimo diretor e roteirista da série desde seu início em 1989, Matt Groening lançou neste ano o aguardado Os Simpsons – O Filme (The Simpsons – The movie). Em seus 1h27min de desenho, é gargalhada garantida o tempo inteiro. Homer, Marge, Bart, Lisa e Maggie são os protagonistas da história. Os Simpsons já está com mais de 400 episódios e mais de 18 temporadas. Atualmente é passado no canal FOX de TV a Cabo. Ultimamente foi lançado o Box da 10ª temporada. Dá pra rir muito e consumir pipoca de montão nesta excelente animação.

TRASH

RIDÍCULO

DÁ PRO GASTO

VÁ ASSISTIR

TÁ ESPERANDO O QUE?

34

.Close()
Eu consigo implantar o TFS na minha empresa? Desde o lançamento do Team Foundation no pacote Visual Studio Team System em 2005, participei de muitas tentativas de venda da implementação ou utilização do produto por algumas empresas. O produto é realmente muito grande! Não é tão simples assim instalar, colocar no servidor, investir uma verba agressiva e pronto! Produto implantado! É muito mais do que isso, existem diversos pontos! Antes mesmo de colocar o DVD de instalação na gaveta de DVD do servidor, é preciso uma tarefa árdua e complexa! Definir o ciclo de vida de desenvolvimento dos projetos! Isso não é uma balela, é a pura realidade! Quando chego nos clientes eu pergunto... Qual metodologia vocês utilizam? As vezes a resposta é o silêncio! Ou as vezes: - Ah utilizamos uma metodologia nossa, temos tudo documentado mas não conseguimos seguir 100%! O fato é, poucas empresas pregam uma metodologia. O pior são as desculpas... - Ah não utilizamos nenhuma metodologia, porque aqui na empresa temos um cenário muito diferente, com projetos apertados, etc... Ué, isso é desculpa? A metodologia não serve para arrumar a bagunça? A verdade é que grande parte das empresas não tem sequer uma metodologia por razões simples: ninguém até hoje “patrocinou” isso, ninguém se dedicou a isso, sempre baseado em desculpas espalhafatosas e que não convencem a niguém. Será que é tão difícil definir um processo de trabalho? Acredito que seja possível que as empresas criem suas metodologias, mas pra mim pra grande parte dos casos é reinventar a roda... Trabalho duplicado, que alguém já fez. Temos um leque de metodologias ou práticas e podemos adaptar aos nossos cenários. A idéia do produto TFS é ser um ferramental para acompanhar o ciclo de desenvolvimento, e com isso já trás embutido duas metodologias... MSF sabor agile e sabor CMMI... Acredito que seja uma ótima opção para quem não tem idéia por onde começar e o principal vem na facilidade de adaptar isso as suas necessidades. O processo de trabalho é baseado em um conceito chamado Process Template onde temos diversos arquivos XML, com diversos documentos que podemos alterá-los da forma que vem entendermos... Nada muito dolorido. Também podemos customizar os tipos de Work itens, também em XML mas com diversas IDE´s gratuitas. Podemos criar regras de check-in com políticas adaptadas as necessidades reais... Enfim, podemos fazer qualquer coisa no produto! No livro VSTS Rocks existe um capítulo que mostra como fazer essa customização do Process Template. A customização em si é muito simples, o complicado é sentar a equipe, definir o processo e começar a customização... Talvez já tenha passado da hora das empresas pensarem nisso! []´s

Alexandre Tarifa é MVP Visual Developer Visual Basic .Net, bacharel/pós graduado em Ciência da Computação, trabalha em diversos projetos. Tem participado de diversos projetos que começam como Web e terminam com Smart Client. Especialista .Net e Líder de Projetos na ITGROUP (www.itgroup.com.br), editor da revista Codificando e-Magazine e fanático torcedor do São Paulo Futebol Clube. Blog: www.vstsrocks.com.br/alexandretarifa.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->