Você está na página 1de 65

Editorial

EDITORIAL
EQUIPA PROGRAMAR
Coordenadores Antnio Silva Fernando Martins Editor Igor Nunes Design Srgio Alves (@scorpion_blood) Redaco Augusto Manzano, Caio Proiete, Fernando Martins, Fbio Domingos, Nuno Godinho, Pedro Martins, Ricardo Rodrigues, Sandro Pereira, Sara Silva Staff Antnio Santos, Fbio Domingos, Jorge Paulino, Marco Marques Contacto revistaprogramar@portugal-a-programar.org Website http://www.revista-programar.info ISSN 1 647-071 0

Hacktivismo
Segundo a Wikipdia a palavra hacktivismo vem da juno entre Hack e Activism (Hacktivism em ingls), e nos ltimos tempos tem sido bastante usado por muitos. Em cerca de um ms e meio a Sony foi atacada pelo menos quatro vezes, e pelo menos inicialmente o suposto motivo era o hacktivismo, e a Sony chegou mesmo a acusar o grupo Anonymous referiram que nada tinham a ver com o roubo de informao de clientes da Sony. Ainda no ano passado este grupo de Hackers e Activistas tinha sido notcia pelos ataques perpetrados contra servidores das empresas que tinham retirado o apoio ao Wikileaks, como a Amazon, Visa, MasterCard, PayPal, at o banco suo PostFinance onde estava a conta de doaes do Wikileaks depois de ter cancelado a conta de Julian Assange foi atacado. Tambm membros do senado Norte-Americano e do Ministrio Pblico Sueco foram atacados com a mesma razo. Recentemente veio a pblico que o Departamento de Defesa NorteAmericano pretende avanar com a retaliao aos ataques cibernticos com armas convencionais, que podero ir at ao lanamento de msseis. Sim, leu bem, em ltimo caso podero ser lanados msseis contra este tipo de criminosos. Mas a grande questo, como tero eles a certeza da identidade do criminoso, e quantas sero as vtimas inocentes. Todos ns conhecemos maneiras mais ou menos eficazes de ocultar a nossa identidade completamente na Internet, ou pelo menos tornar a sua descoberta muito mais difcil. Mas o Departamento de Defesa NorteAmericano parece ter uma plena confiana nas suas capacidades para detectar estas origens, o problema ser quando surgirem as mortes de inocentes O primeiro grande ataque conhecido, foi o worm anti-nuclear WANK, em 1 989, que atingiu agncias americanas como a NASA, o Departamento de Energia, entre outros. Mas no s l fora que isto acontece, em 1 997, um grupo portugus atacou sites da Indonsia, incluindo sites governamentais e militares, pelo facto de a Indonsia ter invadido Timor Leste. Esse mesmo ataque foi repetido um ano mais tarde, em 1 998. Este foi sem dvida um dos primeiros grandes ataques massivos na histria da internet. Ser que no futuro em vez de armas nucleares ou termonucleares, teremos que temer a Internet por ser a melhor arma de destruio de pases? Ou nunca chegaremos a este ponto? NR: Quero desde j agradecer ao Igor Nunes por ter aceite o cargo de editor da Revista PROGRAMAR, e desejo-lhe um ptimo trabalho. Antnio Silva

A revista PROGRAMAR um projecto voluntrio, sem fins lucrativos. Todos os artigos so da responsabilidade dos autores, no podendo a revista ou a comunidade ser responsabilizada por alguma impreciso ou erro. Para qualquer dvida ou esclarecimento poder sempre contactar-nos.
2

ndice

INDICE
TEMA DE CAPA
6

Git - Controlo de Verses para Pequenos e Grandes Projectos

Um artigo que descreve funcionalidades do Git, bem como as principais diferenas entre os sistemas de controlo de verses centralizados e distribudos. Caio Proiete

A PROGRAMAR
24 Lua Linguagem de Programao (Parte 9)
A continuao de um excelente artigo sobre Lua, uma linguagem de programao pouco conhecida. Nesta nona parte descubra tudo sobre o operador lgico XOR e os Mdulos. Augusto Manzano O que o Cloud Computing? Para que serve? Em que ajuda? Descubra a resposta a esta e a outras questes relativas a esta renovao no mundo da computao que adveio da actual Virtualizao em massa. Nuno Godinho Conhea a framework oficial de extensibilidade de aplicaes para a Plataforma .NET que veio corrigir falhas na plataforma para construo de software extensvel. Ricardo Rodrigues

28 Introduo ao Cloud Computing e Plataforma Windows Azure 34 Managed Extensibility Framework (MEF)

37 Microsoft BizTalk Server aos olhos dos programadores Muito se ouve falar sobre esta plataforma. Saiba agora quais so os benefcios da sua utilizao no mercado de trabalho e
em funcionalidades para o programador. Sandro Pereira

44 O Editor de texto VIM deste Saiba os conceitos bsicos

editor de texto Open-Source para sistemas baseados em Unix, ferramenta inclusive capaz de realizar syntax-highlight de vrias linguagens de programao. Fbio Domingos

COLUNAS
50 CORE DUMP - Fazer mal = Rpido? 51
Um artigo de opinio sobre o problema de no se criar as melhores solues devido falta de tempo no mundo da programao. Afinal, fazer mal mais rpido que fazer bem? As consequncias no se sobrepem? Fernando Martins

VISUAL (NOT) BASIC - Introduo ao OpenXML SDK

Implemente este padro ISO de arquivos (documentos, folhas de clculo, entre outros) nas suas aplicaes, em vrias plataformas. Altere-os e visualize-os atravs de diversas aplicaes. Pedro Martins

COMUNIDADES
58

NetPonto - Certificaes Microsoft

Qual o percurso a percorrer para obter a sua Certificao Microsoft? Conhea as Certificaes existentes, as hierarquias, os benefcios e como obt-las. Sara Silva

EVENTOS
1 8 Jun. 21 Jun. 29 Jun. 09 Jul. 22 Jul. 23 Jul.

Reunio presencial Comunidade NetPonto - Lisboa XII Encontro da Comunidade SQLPort Windows Phone 7 Mango Dev Hub - Lisboa Reunio presencial Comunidade NetPonto - Coimbra IOI'201 1 - 23 Olimpadas Internacionais de Informtica Reunio presencial Comunidade NetPonto - Lisboa

Para mais informaes/eventos: http://bit.ly/PAP_Eventos


3

Noticias

NOTICIAS
R e d e s d a PT j e st o p re p a ra d a s p a ra o I Pv6
Um comunicado da PT refere que as redes que suportam o Meo, a TMN, e o Sapo ADSL j se encontram aptas a funcionar tanto em IPv4 (a norma que ainda domina nos endereos de Internet) como em IPv6. Para o processo de migrao ficar concludo falta ainda proceder adaptao para a verso 6 do IP dos terminais e equipamentos dos clientes da operadora. A PT definiu como objetivo a migrao dos clientes empresariais para o IPv6 at ao final de 201 1 , mas no adianta qualquer data para adaptao dos equipamentos usados pelos clientes residenciais. Uma vez que nem todos os intervenientes conseguem trabalhar mesma velocidade, a rede da PT vai seguir a tendncia mundial e passar a funcionar em dual stack que garante a compatibilidade com IPv4 e IPv6. A migrao para o IPv6 comeou a ser trabalhada na PT h cerca de trs anos, com o objetivo de acautelar o provvel esgotamento dos 4,3 mil milhes endereos disponibilizados pela IPv4. No fim do ms de Abril foi lanada a nova verso do Ubuntu, a Natty Narwhal (1 1 .04), onde uma das suas principais novidades a incluso do Unity, que d ao ambiente grfico um aspecto renovado, correndo no entanto por cima do GNOME. A verso 1 1 .1 0 (Oneiric Ocelot) j est agendada para Outubro deste mesmo ano e a vreso Alpha 1 que j foi lanada conta j com a implementao do GNOME 3 e com o Firefox 5 Beta. Conta tambm tal como a verso anterior, a 1 1 .04, com o LibreOffice ao invs do OpenOffice. Mais informao: https://wiki.ubuntu.com/OneiricOcelot/TechnicalOverview/Al pha1

La n a m e n to d o U b u n tu 1 1 . 0 4

TM N te sta re d e 4G e m B ra ga
A TMN iniciou no ms de Maio as primeiras demonstraes de redes da quarta gerao de telemveis (4G) em Braga. A TMN optou por fazer a demonstrao pblica do 4G no Shopping Braga Parque. A demonstrao, que deu a conhecer o potencial dos 1 50 Mbps do protocolo LTE (Long Term Evolution), abrange os servios Meo Online, Meo Jogos, Videoconferncias, e transmisses de vrios vdeos em simultneo. As demonstraes foram realizadas com tecnologias de rede fornecidas pela Nokia Siemens. a segunda vez que a TMN procede a demonstraes pblicas das redes LTE: a primeira decorreu em Abril num centro comercial de Cascais.

M i c ro s o ft a p re s e n ta Wi n d o ws 8
Na conferncia D9, na Califrnia, a Microsoft levantou o vu sobre a nova inteface grfica do Windows 8 que representa, talvez, a maior mudana na interface do sistema operativo da Microsoft. Ao contrrio do que acontece agora, o ecr principal apresenta agora uma srie de "tiles", os tais retngulos com informao a ser atualizada em tempo real, tal como acontece com o Windows Phone 7. A empresa de Redmond diz que o Windows 8 ser compatvel com todos os perifricos e dispositivos que neste momento correm no Windows 7, apesar de a interface ter sido redesenhada e repensada. Ver o Vdeo: http://bit.ly/iMPq0A

TEMA DE CAPA
Git: Controlo de Verses para Pequenos e Grandes Projectos

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s
O Git um sistema de controlo de verses distribudo, gratuito e open-source, desenvolvido originalmente pelo Linus Torvalds, o criador do kernel do sistema operativo Linux, e actualmente mantido pelo Junio Hamano juntamente com outros quase 300 colaboradores voluntrios.

Centralizado vs Distrbuido
O Subversion (SVN), o Visual Source Safe (VSS), o Team Foundation Server (TFS), e muitos outros, so todos sistemas de controlo de verses que funcionam de forma centralizada, isto , existe sempre um computador central (servidor) que contm toda a histria dos projectos com todas as incluses e alteraes que foram feitas pelos programadores desde o momento em que o projecto foi includo no sistema de controlo de verses (geralmente no incio do projecto) at a verso mais recente, e cada programador tem apenas *uma* verso da aplicao em seu prprio computador, normalmente a mais verso recente. Dessa forma, os programadores esto sempre dependentes do servidor para guardar (check-in) alteraes que desenvolvem em seus computadores, bem como para obter as alteraes desenvolvidas por outros membros da equipa:

Comparado com outros sistemas de controlo de verses tradicionais, o Git diferencia-se por ser extremamente rpido, por simplificar o desenvolvimento de software de forma no-linear, onde podemos trabalhar em paralelo em diferentes funcionalidades das aplicaes que desenvolvemos e ento escolher quais funcionalidades devem fazer parte de cada verso da aplicao conforme o nosso fluxo de trabalho, e principalmente por ser um sistema distribudo bastante verstil e adequado para projectos de qualquer dimenso. Outra grande vantagem do Git, possuir verses para Windows, Linux e Mac OS X, o que facilita muito o controlo de verso de aplicaes desenvolvidas em diferentes plataformas. Hoje em dia muito comum uma mesma empresa desenvolver aplicaes em .NET no Windows, outras em Java no Linux, e ainda outras para iPhone no Mac OSX, e poder utilizar uma nica ferramenta para controlo de verso de todas as aplicaes desenvolvidas na empresa, excelente! Neste artigo, vou explicar o funcionamento do Git e as principais diferenas entre os sistemas de controlo de verses centralizados e distribudos, como instalar e configurar o Git no Windows, e os principais comandos que precisa conhecer para comear a utilizar o Git no dia-a-dia.
6

Assim, efectuar o controlo de verses com sistemas centralizados geralmente mais lento, pois todas as operaes (check-in, check-out, etc...) necessitam de comunicao com servidor central, que pode estar a apenas alguns metros de distncia, como pode estar em outra cidade ou pas. Alm disso, torna-se impossvel

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

controlar verses quando se est desconectado da rede onde encontra-se o servidor central, o que pode ser um problema quando preciso trabalhar fora das instalaes da empresa e no possibilidades de conectar-se remotamente rede da empresa, por exemplo nas instalaes de um cliente ou em viagens.

No entanto, ao trabalhar em equipas com vrias pessoas, ao invs de cada pessoa comunicar-se individualmente com outra para enviar/receber commits, normal existir um stio comum onde os elementos da equipa enviam os seus commits para que sejam partilhados com o restante da equipa, sendo este stio comum normalmente conhecido como servidor de integrao.

Controlo de Verso Distribudo


Nu m sistema de controlo de verso distribudo como o Git,
no existe propriamente um servidor central. Cada programador tem uma cpia completa de toda a histria dos projectos em sua prpria mquina e pode controlar a verso de ficheiros e contedos de ficheiros localmente sem depender de um servidor e, somente quando achar apropriado, pode partilhar as suas alteraes com outras pessoas da equipa e/ou receber alteraes efectuadas por outros membros da equipa. No Git, cada conjunto de alteraes efectuadas em ficheiros ou contedos de ficheiros chamado de commit, e conforme o programador implementa novas funcionalidades nas aplicaes que est a desenvolver, vai efectuando diferentes commits que ficam guardados no seu prprio computador sem precisar depender de um servidor. Uma vez que cada membro da equipa possui uma cpia integral de toda a histria dos projectos, um programador que queira partilhar os seus commits recentes com outro colaborador, pode enviar directamente os commits para este colaborador (push), ou ainda, pode permitir que o outro colaborador obtenha os commits a partir de seu prprio computador (pull), tudo sem precisar comunicar-se com um servidor central. primeira vista, este stio comum se parece muito como o servidor central dos sistemas de controlo de verses centralizados, mas em realidade bem diferente, pois apenas mais um computador com uma cpia de toda a histria dos projectos, assim como o computador de qualquer outro membro da equipa. O servidor de integrao apenas uma conveno social entre os participantes da equipa, de forma a facilitar a partilha das alteraes entre as vrias pessoas. O importante a destacar que nenhum membro da equipa est directamente dependente ou conectado ao servidor de integrao. Todos trabalham de forma desconectada em seus computadores, onde efectuam diversos commits que so gravados localmente, e s utilizam o servidor de integrao para partilhar seus commits recentes com o restante da equipa, quando/se quiserem.

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

Dessa forma, as funcionalidades que devem ser partilhadas com toda a equipa, podem ser enviadas (push) para o servidor de integrao e os membros da equipa podem obter (pull) essas alteraes quando desejarem, assim como funcionalidades que no ainda no esto prontas para serem partilhadas com toda a equipa, podem ser partilhadas apenas entre as pessoas envolvidas no desenvolvimento dessas funcionalidades.

Por exemplo, observe a estrutura de pastas abaixo: C:\Projectos\ ------ NetPonto ------------ lib ------------ src ------------------------ NetPonto.sln ------------------------ ... ------------ doc ------ Portugal-a-Programar ------------ lib ------------ src ------------------------ Portugal-a-Programar.sln ------------------------ ... ------------ doc Qualquer uma destas pastas poderia ser transformada em um repositrio Git de acordo com as necessidades do programador, mas normalmente controlamos as verses individuais de cada projecto, portanto faz sentido que a pasta C:\Projectos\NetPonto\ seja um repositrio Git e pasta C:\Projectos\Portugal-a-Programar\, ser outro repositrio Git separado.

Importante: Algumas ferramentas de controlo de verses

centralizado, como por exemplo o Team Foundation Server (TFS), permitem accionar uma opo para trabalhar de forma desconectada do servidor, para ento mais tarde (quando for possvel conectar-se ao servidor central) enviar as alteraes. Isto no a mesma coisa que que trabalhar num sistema distribudo, pois neste caso no ser possvel efectuar commits no prprio computador, enquanto efectua diferentes alteraes no cdigo, ou seja, a ferramenta no permite gravar diferentes conjuntos de alteraes (commits), para depois envi-los para o servidor. Se trabalhou em funcionalidades diferentes, no conseguir (facilmente) distinguir quais ficheiros/contedos correspondem a cada funcionalidade que trabalhou enquanto estava desconectado, e provavelmente ir enviar um nico commit para o servidor central com todas as alteraes, e estar a usar o sistema de controlo de verses de forma pouco eficiente.

Instalao do Git no Windows


O site oficial do Git o http://git-scm.com, onde pode efectuar o download da verso mais recente para a plataforma que desejar. Para utilizar o Git no Windows, existem basicamente duas formas: Directamente, utilizando o msysGit ou atravs do Cygwin. O msysGit uma verso desenvolvida especialmente para funcionar no Windows, e a opo mais utilizada actualmente, enquanto o Cygwin uma coleco de ferramentas e APIs que permite criar um ambiente com a mesma aparncia e experincia do Linux, dentro do Windows, e ento utilizar o Git atravs do Cygwin . Neste artigo, vou demonstrar a instalao e configurao do msysGit, que no momento em que escrevo este texto est na verso 1 .7.5.4.

Repositrios Git
Para controlar verses dos contedos, o Git utiliza o conceito de repositrios, onde cada repositrio corresponde a uma pasta que pode conter ficheiros e sub-pastas tambm com ficheiros onde controla a verso de todos os contedos desta pasta e sub-pastas que existirem. Uma pasta s considerada um repositrio Git, aps executarmos um comando especfico (init) para que o Git inicialize a pasta como um repositrio, e normalmente criamos um repositrio Git para cada projecto que desenvolvemos, de forma a controlar as verses dos contedos de cada projecto separadamente.
8

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

Aps efectuar o download msysGit e executar o instalador, recomendo efectuar a instalao mantendo as opes que j vem seleccionadas por padro (Next, Next, Next ...), com excepo do passo 4, onde recomendo seleccionar tambm as opes Context menu entries, Git Bash Here e GUI Bash Here para adicionar duas entradas nos menus de contexto do Windows Explorer que permitem seleccionar uma pasta e executar as ferramentas do Git directamente na pasta seleccionada.

Passo 4 da instalao do Git

Enquanto o Git GUI permite realizar as principais tarefas do dia-a-dia, o Git Bash a ferramenta que permite total controlo dos repositrios, e tambm a ferramenta que utilizo para mostrar o funcionamento do Git neste artigo. No Windows Explorer (aps a instalao)

Configurao Inicial do Git


Aps a instalao do msysGit, o prximo passo configurar o nome e o e-mail que ser utilizado por padro, na criao dos repositrios e dos commits. possvel configurar estes parmetros de forma global ou individualmente para cada repositrio, e para isto utilizamos o comando g i t c on fi g em uma sesso do Git Bash, a ferramenta de mencionda acima e que aps a instalao pode ser encontrada na pasta Git no menu iniciar do Windows. Ao iniciar o Git Bash, ir visualizar um ecr parecido com a figura abaixo:

Principais Ferramentas do Git / msysGit


As principais ferramentas do Git so o Git GUI e o Git Bash. O Git GUI , como o nome ndica, uma interface grfica que permite criar e gerir repositrios Git atravs de uma interface grfica simples, e o Git Bash uma aplicao de linha-de-comando, que tambm permite criar e gerir repositrios Git via linha-de-comando.

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

Os parmetros globais a serem definidos so o user.name e o user.email, que correspondem ao nome e ao e-mail do utilizador, respectivamente, e para efectuar a configurao, basta executar os comandos abaixo, substituindo os valores entre aspas pelo nome e e-mail do utilizador:
$ g i t c on fi g --g l oba l u s er. n a me " S eu N ome" $ g i t c on fi g --g l oba l u s er. ema i l " s eu @ema i l . pt"

Controlo de Verses com o Git


Criao de um Repositrio Git
Depois de configurar o nome e o e-mail padro, o prximo passo escolher a pasta onde ir criar um repositorio Git, ou cri-la caso ainda no exista. Para este exemplo, o repositrio Git estar localizado na pasta C:\Projectos\Portugal-a-Programar\, e assumo que esta pasta ainda no exista, portanto podem ser criadas atravs do Windows Explorer se preferir, ou directamente atravs do Git Bash, utilizando alguns comandos existentes para o efeito:

- Criar a pasta C:\Projectos


Alm de configurar o nome e o e-mail do utilizador, comum neste momento configurar tambm um parmetro global para definir o editor de textos que deve ser utilizado pelo Git. Por padro, o Git utiliza o editor de textos Vim, uma verso melhorada do editor Vi muito utilizado em ambientes Unix e que exige que o utilizador conhea as suas diferentes combinaes de teclas para aceder cada uma das suas funcionalidades, o que pode tornar a utilizao do Git mais complicada para quem no est acostumado com este editor, portanto uma opo definir o bloco de notas do Windows (Notepad) como editor de texto padro, ou outro de sua preferncia (Notepad++, Textpad, etc...). Para configurar o editor de textos, basta executar o comando abaixo, adaptando o caminho do executvel do editor de textos desejado:
$ g i t c on fi g --g l oba l c ore. ed i tor " C: / Wi n d ows / n otepa d . exe" $ gi t i ni t $ mkd i r / c / Proj ec tos /

- Criar a pasta C:\Projectos\Portugal-a-Programar


$ mkd i r / c / Proj ec tos / Portu g a l -a -Prog ra ma r/

- Entrar na pasta C:\Projectos\Portugal-a-Programar


$ c d / c / Proj ec tos / Portu g a l -a -Prog ra ma r/

Uma vez posicionado na pasta desejada, para criar o repositrio do Git deve utilizar o comando git init, que essencialmente ir preparar a pasta actual para permitir o controlo de verses dos ficheiros e sub-pastas dentro deste repositrio recm-criado.

10

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

O que este comando faz, em realidade criar a estrutura do repositrio Git em uma pasta oculta chamada .git dentro da pasta onde executou o comando. Neste exemplo, em C:\Projectos\Portugal-a-Programar\.git. dentro desta pasta estaro, entre outas coisas, todos os commits. A pasta onde criou o repositrio Git, a partir de agora passa a ser chamada de working folder (pasta de trabalho). Com o repositrio Git criado, pode adicionar novos ficheiros, alterar ficheiros que j existiam, remover ficheiros, criar novas pastas, e etc... Para este exemplo, pode adicionar trs ficheiros na pasta onde est o repositrio Git com o seguinte nome/contedo:

Staging Area e Commits


Conforme efectua alteraes no repositrio, dever guardar as verses (efectuar commits) dos contedos que desejar, quando for apropriado. Idealmente cada commit representa uma unidade lgica, como por exemplo uma nova funcionalidade implementada numa aplicao, ou uma correco de um bug, ou seja, um commit um conjunto de alteraes que foram feitas no repositrio, e podem ser alteraes em ficheiros existentes, criao de novos ficheiros, ou remoo de um ou mais ficheiros. No entanto, ao trabalhar em uma tarefa especfica (por exemplo, na implementao de uma funcionalidade X), normal um programador efectuar outras alteraes no cdigo que no estao relacionadas com a tarefa em questo, mas que j sabe que ser preciso na implementao de uma funcionalidade Y (outra tarefa futura), e a grande vantagem do Git compreender que isso normal acontecer, e permitir definir quais so as alteraes que pertencem a uma funcionalidade X (commit X), e quais pertencem a uma funcionalidade Y (commit Y), e por isso que o Git conta com um recurso chamado staging area. Assim, para criar um commit, necessrio primeiro indicar quais so as alteraes que devem fazer parte do commit. Estas alteraes so adicionadas nessa rea chamada staging area, de forma que apenas as alteraes que correspondem a uma determinada unidade lgica sejam armazenadas como um commit.
11

Primeiro.txt

Este o primeiro ficheiro, verso 1 .0

Segundo.txt Terceiro.txt

Este o segundo ficheiro, verso 1 .0 Este o terceiro ficheiro, verso 1 .0

Neste momento, pode executar um outro comando do Git, o git status, que permite verificar o estado do repositrio, e perceber quais so os ficheiros que no esto a ser controlados (novos ficheiros), os ficheiros que foram modificados e os que foram apagados. Este normalmente o comando que ir utilizar com mais frequncia, para consultar o estado do repositrio conforme efectua alteraes e antes de efectuar commits. Neste exemplo, o comando git status deve mostrar que existem trs ficheiros na pasta, mas que no esto a ser controlados pelo Git, por enquanto:
$ g i t s ta tu s

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

O comando utilizado para adicionar ficheiros (ou parte de um ficheiro) staging area o comando git add, e depois de adicionar todas as alteraes na staging area, deve executar o comando git commit para transformar todas as alteraes adicionadas na staging area em um commit. O comando git add pode receber diferentes parmetros, e permite adicionar ficheiros individualmente, todos os ficheiros alterados ou novos que encontrar, contedos de ficheiros, entre outras opes. Para adicionar o ficheiro Primeiro.txt na staging area, pode informar o nome do ficheiro individualmente no comando git add:
$ g i t a d d Pri mei ro. txt

Para efectuar o commit, deve utilizar o comando git commit e pode opcionalmente utilizar o parmetro -m e informar a descrio do commit. Se no utilizar o parmetro -m o Git ir executar o editor de texto padro configurado para que possa informar a mensagem a descrever as alteraes contidas no commit.
$ g i t c ommi t -m " Ad i c i on a fu n c i on a l i d a d e X"

Se aps efectuar este primeiro commit consultar novamente o status do repositrio, ver que apenas os ficheiros Segundo.txt e Terceiro.txt aparecem como ficheiros que no esto a ser controlados, e o ficheiro Primeiro.txt deixa de aparecer na lista. Para este exemplo, o ficheiro Primeiro.txt deve ser alterado para demonstrar uma actualizao de contedo no repositrio:
Pri mei ro. txt E s te o pri mei ro fi c h ei ro, vers o 1 . 1 ( a l tera d o)

Neste momento, o ficheiro Primeiro.txt foi adicionado a staging area, o que significa que far parte do prximo commit, enquanto os outros dois ficheiros continuam sem estarem a ser controlados pelo Git. Se executar o comando git status novamente pode confirmar que o ficheiro foi efectivamente adicionado a staging area:

Ao consultar o status do repositrio, ver que o ficheiro Primeiro.txt est marcado como modificado, ou seja, o seu contedo est diferente do contedo que est no ltimo commit efectuado, e os outros dois ficheiros continuam como estavam antes.

12

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

Para um prximo commit, e supondo que a alterao no ficheiro Primeiro.txt juntamente com os ficheiros Segundo.txt e Terceiro.txt fazem parte de uma mesma funcionalidade Y, pode adicionar cada um dos ficheiros manualmente a staging area, ou pode utilizar um atalho e adicionar todos os ficheiros, novos e modificados, de uma s vez:
$ gi t add .

modificados e/ou adicionados staging area so mostrados na cor verde ao executar o comando g i t s ta tu s , assim como ficheiros que no esto a ser controlados aparecem na cor vermelho. Para habilitar a utilizao de cores, deve configurar o parmetro global color.ui com o valor true:
$ g i t c on fi g --g l oba l c ol or. u i tru e

Ignorar ficheiros e pastas com o .gitignore


Por padro, o Git permite controlar as verses de qualquer tipo de ficheiro que existir dentro da pasta (ou sub-pastas) onde est o repositrio, mas nem sempre queremos controlar as verses de todos os tipos de ficheiro. Ficheiros temporrios que so criados pelo sistema operativo ou pela ferramenta de desenvolvimento, no devem fazer parte do repositrio, ou seja, nunca devem adicionados aos commits. No entanto, podero existir na working folder enquanto trabalha, mas devem ser ignorados pelo Git quando adicionamos alteraes a staging area e efectuamos commits.

Ao consultar o estado do repositrio, ver que todos os ficheiros esto seleccionados para fazerem parte do prximo commit:

Para concluir e efectuar o commit, basta utilizar o comando git commit como feito anteriormente:
$ g i t c ommi t -m " Ad i c i on a fu n c i on a l i d a d e Y"

Por exemplo, o Windows costuma criar ficheiros com o nome Thumbs.db em pastas que possuem imagens, onde armazena uma espcie de cache das miniaturas das imagens contidas na pasta. Esses ficheiros Thumbs.db jamais devem ser guardados no repositrio, pois podem ser recriados pelo Windows conforme o contedo da pasta muda. Ainda, num projecto .NET, o Visual Studio cria ficheiros do tipo NomeProjecto.suo, NomeProjecto.user, NomeProjecto.sln.cache, e outros tipos de ficheiros temporrios que esto relacionados com o utilizador actual e podem ser recriados pelo Visual Studio a qualquer momento. Estes ficheiros tambm no devem ser armazenados no repositrio Git, e portanto devem ser ignorados. Alm disso, uma prtica comum no guardar ficheiros executveis, e outros ficheiros que podem ser gerados (compilados) a partir do cdigo que est a ser controlado
13

E desta forma que controlamos as verses no repositrio. Aps efectuar um conjunto de alteraes, deve seleccionar quais alteraes devem fazer parte de commit atravs do comando git add, e ento finalizar a operao efectuando o commit, atravs do comando git commit.

Nota: Nas imagens acima pode reparar que os ficheiros

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

pelo repositrio Git, ou seja, deve-se guardar apenas o cdigo-fonte e as dependncias necessrias para que seja possvel compilar o cdigo-fonte. Por exemplo, num projecto .NET, normalmente temos as pastas bin e obj que possuem o resultado da compilao de cada projecto do Visual Studio. Estas bastas tambm no devem ser armazenadas no repositrio Git, pois deve ser possvel recri-las a qualquer momento, a partir do cdigo-fonte do projecto. Para poder ignorar determinados tipos de ficheiros ou pastas, criamos um ficheiro chamado .gitignore na pasta onde criamos o repositrio. O Windows por padro no permite criar ficheiros que no tenham nome e apenas uma extenso, como o caso do .gitignore, por isso uma alternativa simples criar o ficheiro a partir do Git Bash, executando o Bloco de Notas para criar o ficheiro:
$ n otepa d . g i ti g n ore

I g n ora r

as

pa s ta s

c om

fi c h ei ros

bi n ri os

g era d os vi a c ompi l a o [ Oo] bj / [ Bb] i n /

A sintaxe bastante intuitiva, e pode utilizar *.extenso dos ficheiros que pretende ignorar, e informar o nome das pastas com uma barra / no final para indicar que trata-se de uma pasta. O Git faz diferena entre letras maisculas e minsculas, por isso pode utilizar expresses como [Oo]bj/ que permite indicar que tanto as pastas obj/ quanto Obj/ devem ser ignoradas. Ao criar o ficheiro .gitgnore, os ficheiros e pastas definidos no contedo deste ficheiro sero ignorados pelo Git, e deixaro de aparecer, por exemplo, quando visualizar o estado do repositrio com o comando git status, no entanto importante adicionar o ficheiro .gitignore ao repositrio para garantir que continuar a ignorar os ficheiros desejados nos prximos commits, e tambm para que todos os membros da equipa estejam a ignorar os mesmos tipos de ficheiros e pastas.
$ g i t a d d . g i ti g n ore $ g i t c ommi t -m " Ad i c i on a o fi c h ei ro . g i ti g n ore a o repos i tori o"

No contedo do ficheiro .gitignore, pode inserir comentrios (linhas que comeam com #), definir os tipos de ficheiros que pretende ignorar e as pastas que pretende ignorar por completo, independente do contedo. Neste exemplo:
# I g n ora r fi c h ei ros tempor ri os d o Wi n d ows Th u mbs . d b # I g n ora r pa c otes d e fi c h ei ros *. zi p * . ra r # I g n ora r fi c h ei ros tempor ri os d o Vi s u a l S tu d i o *. suo * . u s er * . u s erprefs

14

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

Consulta do Histrico de Commits


Conforme efectuamos commits, muito comum necessitarmos consultar a histria do projecto para, por exemplo, perceber quando foi introduzida uma determinada alterao. Para este efeito, o Git possui um comando chamado git log, que permite visualizar os commits que esto armazenados no repositrio, incluindo informaes como a data e hora, nome e e-mail do utilizador que efectuou cada commit, e tambm o identificador nico de cada commit (ex: 5944d4c5c92c89766ac77de221 b1 b36b803ee37b), que podemos utilizar quando necessitamos efectuar operaes especficas em determinados commits.
$ g i t l og

Desenvolvimento em Paralelo
Ao trabalharmos no desenvolvimento de software profissional, muito comum termos um ambiente de desenvolvimento onde efectuamos testes de novas funcionalidades que esto a ser desenvolvidas, separado do ambiente de produo onde a aplicao est a ser executada pelos utilizadores finais. Em realidade, tambm muito comum termos um ambiente intermdio de controlo de qualidade (tambm conhecido como ambiente de qualificao, de qa ou de testes), que geralmente possui as mesmas caractersticas do ambiente de produo, e possui uma verso da aplicao com funcionalidades que ainda precisam ser testadas antes de serem promovidas para o ambiente de produo.

O comando git log pode receber diferentes parmetros que permitem visualizar mais, ou menos informao sobre os commits, algumas opes de formatao, entre outros recursos. Uma outra forma de consultar o histrico de commits utilizar um utilitrio instalado juntamente com o msysGit chamado gitk, que permite consultar os commits de forma grfica.
$ g i tk

Desta forma, o ambiente de produo possui sempre a verso mais antiga do projecto, mas tambm a mais estvel e que passou pelos testes de controlo de qualidade, enquanto o ambiente de qualificao (se houver) possui uma verso mais nova do projecto, mas que ainda necessita ser testado antes de evoluir para o ambiente de produo, e por fim o ambiente de desenvolvimento possui
15

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

uma verso ainda mais nova do projecto, com as funcionalidades que esto a ser desenvolvidas e que aps testes dos developers podero ser enviadas para o ambiente de qualificao, para serem efectuados mais testes. Uma vez que temos ambientes separados, podemos utilizar a ferramenta de controlo de verses para manter diferentes as verses dos nossos projectos em paralelo de forma a conseguirmos enviar uma nova verso para qualquer um dos ambientes o mais rpido possvel e idealmente a qualquer momento. Para este efeito, o Git e a grande maioria de sistemas de controlo de verses oferece um recurso chamado branch, que no Git representado por um conjunto de commits identificado por um nome escolhido pelo developer que efectua criao do branch. Ao criar um novo repositrio Git, automaticamente criada um primeiro branch chamado master, que ir agregar todos os commits que fizer neste branch. Pode identificar a qualquer momento em qual branch encontra-se posicionado atravs do nome entre parnteses aps o caminho da pasta:

Estes commandos efectuam a criao de dois novos branches chamados desenvolvimento e qualificacao respectivamente, mas que esto a apontar para o mesmo commit do branch actual (master), que neste exemplo, o commit que adiciona o ficheiro .gitignore. O branch master, neste exemplo, est a ser usado como sendo o branch com a verso de produo, enquanto os outros branches representam as verses dos outros ambientes. Isto pode variar de acordo com a preferncia pessoal da equipa. Em alguns casos, a branch master ser utilizada como branch de desenvolvimento, por exemplo, e so criadas outras branches para os outros ambientes. Para mudar para um novo branch, deve utilizar o comando git checkout e informar o nome da branch para onde deseja ir:
$ g i t c h ec kou t d es en vol vi men to

Para criar um novo branch, pode utilizar o comando git branch, e informar o nome do branch a ser criado:
$ g i t bra n c h d es en vol vi men to $ g i t bra n c h q u a l i fi c a c a o

A partir de agora todos os commits efectuados sero armazenados na branch desenvolvimento, de forma isolada da branch master criada inicialmente, e tambm de forma isolada da branch qualificacao.
16

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

Para este exemplo, pode criar um ficheiro chamado NovaFuncionalidade.txt e efectuar o commit:
$ ec h o " Con teu d o" > > N ova F u n c i on a l i d a d e. txt $ gi t add . $ g i t c ommi t -m " Ad i c i on a o N ova F u n c i on a l i d a d e. txt"

para cada nova funcionalidade que pretendem implementar num projecto, e depois decidem funcionalidade/branch deve ser adicionada nas branches principais de cada ambiente. A operao de juntar os commits de uma branch com os commits de outra branch chamada de merge e para este efeito o Git possui o comando git merge que permite juntar a branch informada como parmetro, na branch onde est posicionado. Por exemplo, para juntar as alteraes da branch desenvolvimento com a branch master, em primeiro lugar preciso ir para a branch master (com o comando git checkout) e ento executar o comando git merge e informar que deve ser efectuado o merge da branch desenvolvimento com a branch actual:
$ g i t c h ec kou t ma s ter

E neste momento, o repositrio possui quatro commits diferentes: - Commit 4 | Adiciona o NovaFuncionalidade.txt - Commit 3 | Adiciona o ficheiro .gitignore ao repositorio - Commit 2 | Adiciona funcionalidade Y - Commit 1 | Adiciona funcionalidade X No entanto, o commit 4 est presente apenas no branch desenvolvimento, enquanto a branch master e qualificacao continuam a apontar para o commit 3, como pode visualizar atravs do utilitrio gitk:

$ g i t merg e d es en vol vi men to

Como pode reparar na imagem acima, o Git efectuou um Fast-forward que o tipo de merge mais simples que existe, onde apenas o apontador da branch actual move-se para apontar para o novo commit, que neste caso mais novo. Desta forma, possvel continuar a efectuar commits neste branch sem comprometer as verses que esto em paralelo e correspondem aos outros ambientes, e apenas quando for apropriado, poder juntar os commits efectuados em uma branch, com outra. A utilizao de branches no Git to simples e to rpida, que muitos developers adoptam uma conveno conhecida como branch-per-feature, onde criam novas branches
17

Existem outros tipos de merge, e em alguns casos um merge pode causar conflitos, por exemplo, caso as mesmas linhas de um ficheiro tenha sido alteradas por commits diferentes, e pode necessitar de interveno manual do developer, e que normalmente utiliza uma ferramenta para auxiliar a resoluo de conflitos. Este um assunto que merece um artigo prprio, que ficar para uma prxima edio desta revista.

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

Partilha de Alteraes em Equipa


A partilha de commits entre os membros da equipa pode ser feita directamente entre os repositrios dos developers envolvidos, pode ser utilizado um repositrio partilhado, ou outras formas de acordo com o fluxo de trabalho da equipa. Na prxima seco ir encontrar breve explicao sobre os workflows mais comuns para controlo de verses em sistemas distribudos. Os principais comandos para a utilizao do Git em equipa so o git clone, git pull e o git push. O comando git clone serve para criar uma cpia integral de um repositrio Git. Este o comando utilizado quando desejamos participar de um projecto, e para isso precisamos ter uma cpia do repositrio em nosso computador. O git clone automaticamente guarda uma referncia para o repositrio original, de forma a facilitar obter actualizaes desse repositrio, bem como enviar as actualizaes feitas localmente. J o comando git pull permite receber novos commits que tenham sido adicionados num repositrio de origam. tipicamente utilizado para receber as alteraes enviadas por outros membros da equipa para um repositrio partilhado, ou ainda para receber novos commits de um repositrio especfico de um membro da equipa. E por fim, o comando git push, como o nome indica, faz exactamente o inverso do git pull, e serve para enviar as alteraes efectuadas localmente no repositrio, para um repositrio de origem, tipicamente um repositrio remoto partilhado com os membros da equipa.

mostrados abaixo so criados no mesmo computador, em pastas diferentes. Como explicado no incio desta seco, a criao de repositrios feita atravs do comando git init. No entanto, para a criao de repositrios partilhados que podero receber actualizaes (push) de outros utilizadores, necessrio indicar que trata-se de um repositrio partilhado atravs dos parametros --shared e -bare".
$ cd . . $ mkd i r Repos i tori oPa rti l h a d o $ c d Repos i tori oPa rti l h a d o $ g i t i n i t --s h a red --ba re

Aps a execuo das instrues acima, criado um repositrio chamado RepositorioPartilhado que ir servir como um repositrio intermdio para dois membros da equipa, o Tiago e o Carlos, que tero cada um os seus prprios repositrios.

Criao de Clones de Repositrios


Para criar um clone de um repositrio, como referido acima, utilizamos o comando git clone, informando o nome do repositrio a ser clonado:
$ cd . . $ g i t c l on e Repos i tori oPa rti l h a d o Ti a g o $ g i t c l on e Repos i tori oPa rti l h a d o Ca rl os

Criao de um Repositorio Partilhado


Um repositrio partilhado pode estar no mesmo computador, ou em um computador remoto que pode estar na mesma rede, em uma rede separada, ou ainda em um servidor que pode aceder via Internet. A comunicao entre repositrios pode ser feita de diferentes formas, via rede (partilha de pastas), SSH, HTTP, HTTPS, entre outras formas. Para efeitos de exemplo, todos os repositrios
18

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

As instrues acima permitiram criar dois clones do repositrio RepositorioPartilhado, um para o Tiago ou outro para o Carlos, criados e pastas separada, e neste momento esto vazios (sem qualquer commit armazenado). Para este exemplo, criado um ficheiro no repositrio do Tiago que ser ento armazenado em um commit. Em seguida este commit ser enviado (push) para o repositrio partilhado RepositorioPartilhado, e a partir da o Carlos pode obter as actualizaes (pull) do repositrio RepositorioPartilhado e consequentemente ir obter o commit efectuado inicialmente no repositrio do Tiago e que foi partilhado no repositrio RepositorioPartilhado.

importante reparar que o commit foi efectuado na branch master deste repositrio.

Passo 2: Enviar as alteraes para o repositrio partilhado (push)


Como referido acima, para enviar as alteraes efectuadas no repositrio local para o repositrio de origem, deve utilizar o comando git push, e para isto deve informar o nome da referncia do repositrio de origem, e o nome da branch que deve ser considerada para o envio. Ao efectuar um clone de um repositrio, o Git automaticamente cria uma referncia para o repositrio de origem com o nome origin. possvel alterar este nome se desejar, e tambm possvel criar outras referncias para outros repositrios remotos. Assim, para enviar as alteraes para o repositrio partilhado, basta informar origin como referncia para o repositrio partilhado, e master como nome da branch, uma vez que o commit que deve ser enviado est nesta branch.
$ g i t pu s h ori g i n ma s ter

Passo 1 : Efectuar as alteraes no repositrio do Tiago


$ c d Ti a g o/ $ ec h o " Al tera c a o Ti a g o" > > N ova F u n c i on a l i d a d e. txt $ gi t add . $ g i t c ommi t -m " Ad i c i on a n ova fu n c i on a l i d a d e ( Ti a g o) "

19

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

Passo 3: Receber as alteraes enviadas para o repositrio partilhado no repositrio do Carlos


Para receber as alteraes existentes no repositrio partilhado, deve utilizar o comando git pull, e para isto deve informar o nome da referncia do repositrio de origem, e o nome da branch que deve ser considerada para o recebimento. Dessa forma, assim como o comando git push basta informar origin como referncia para o repositrio partilhado, e master como nome da branch.
$ cd . . $ c d Ca rl os / $ g i t pu l l ori g i n ma s ter

Workflows Comuns para Controlo de Verses Distribudo


Subversion-style
Este o workflow mais simples, e normalmente utilizado em equipas que esto a utilizar o Git pela primeira vez. Neste workflow, utiliza-se o Git como se fosse um sistema de controlo de verses centralizado, mas com as vantagens de um sistema distribudo, onde pode-se efectuar commits localmente, de forma desconectada, e enviar para o repositrio partilhado apenas quando for apropriado. Todas as alteraes so partilhadas num repositrio partilhado e no h comunicao directa entre os membros da equipa.

E a partir de agora, os trs repositrios esto sincronizados e possuem os mesmos commits. Assim, o fluxo de trabalho comum no dia-a-dia do Git em equipa algo como: inicio - Efectuar alteraes/novos commits (git commit) - Juntar actualizaes do repositrio partilhado com o repositrio local (git pull) - Enviar as actualizas do repositrio local para o repositrio partilhado (git push) loop

Descentralized but centralized


Este o workflow mais comum para pequenos e mdios projectos em equipas com alguma experincia com o Git. Os membros da equipa acordam entre si que todas as alteraes que devem ser consideradas para as futuras verses do projecto sero armazenadas em um repositrio partilhado principal, conhecido por blessed repository (repositrio abenoado). Os membros da equipa podem ento partilhar commits entre eles directamente enquanto trabalham em determinadas tarefas, e quando for apropriado, podem enviar os commits para o blessed repository.

20

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

(tenente) e normalmente so responsveis por mdulos especficos do projecto. Aps a validao das alteraes pelos liutenants, estas so enviadas para outra pessoa que assume o papel de dictator (ditador) e que efectua uma validao final, antes de enviar para o blessed repository.

Integration Manager
Este um workflow mais sofisticado e indicado para projectos mdios e grandes, onde cada membro da equipa possui dois repositrios, um pblico e outro privado (que podem estar no mesmo computador). Cada developer trabalha em seu repositrio privado, e quando apropriado pode partilhar (push) as alteraes que efectuou em seu repositrio privado no repositrio pblico. Existe ento uma pessoa da equipa que assume o papel de Integration Manager que a pessoa responsvel em obter (pull) as alteraes do repositrio pblico de cada developer, validar, e ento enviar (push) para o blessed repository.

Por curiosidade, este o workflow utilizado actualmente para controlar as verses do kernel do Linux. Existem pessoas consideradas como sendo pessoas de confiana e que so responsveis por diferentes mdulos do kernel e validam as alteraes enviadas pelas centenas de pessoas que contribuem para o projecto, e por fim so enviadas para o ditador que as valida e escolhe quais alteraes faro parte do repositrio principal e que eventualmente iro fazer parte de uma futura verso do sistema operativo.

Servios de Alojamento de Repositrios Git na Internet


Dictator and Lieutenants
Este um workflow ainda mais sofisticado que o anterior e indicado para projectos extremamente grandes e com muitas pessoas a participar no desenvolvimento. Cada developer possui um repositrio pblico onde pode partilhar as alteraes que posteriormente sero validadas por pessoas na equipa que assumem o papel de liutenant
21

Existem dezenas de empresas que fornecem servios de alojamento de repositrios Git na Internet, permitindo desenvolver projectos (open-source ou no) com equipas distribudas sem precisar criar e manter uma infra-estrutura prpria. O servio mais popular e provavelmente o mais utilizado em todo o mundo o GitHub (http://github.com) que oferece a possibilidade de criar repositrios pblicos

TEMA DE CAPA
G i t: C o n tro l o d e Ve rs e s p a ra Pe q u e n o s e G ra n d e s Pro j e c to s

gratuitos com at 300 Mb, para quem pretende desenvolver software open-source, e oferece tambm a possibilidade de criar repositrios privados para empresas que queiram ter repositrios privados partilhados e no possui infraestrutura prpria com preos que variam entre os $7 e $22 dlares americanos por ms no momento em que escrevo este artigo. Em Abril de 201 1 , o GitHub ultrapassava os 2 milhes de repositrios. Outros exemplos servios que oferecem servios semelhantes so: Gitorious (http://gitorious.org) Unfuddle (http://unfuddle.com) ProjectLocker (http://www.projectlocker.com) RepositoryHosting (http://repositoryhosting.com) Assembla (http://www.assembla.com )

Uma lista mais detalhada de projectos que utilizam o Git est disponvel no Wiki do Git em https://git.wiki.kernel.org/index.php/GitProjects, e pode acompanhar os projectos open-source mais populares no GitHub em https://github.com/popular/watched.

Links para Referncia


Git Scm - Site oficial do Git
http://git-scm.com

Posts sobre Git em meu blog


http://caioproiete.net/pt/tag/git/ http://vimeo.com/20652754

Vdeo: Controlo de Verses Distribudo com Git Pro Git (e-book)


http://progit.org

Git Ready (tutorial / tips)


http://www.gitready.com

Exemplos de Grandes Projectos que Utilizam o Git


O Git amplamente utilizado em projectos open-source em todo o mundo, em pequenos, mdios e grandes projectos, e foi originalmente desenvolvido para controlar as verses do kernel do Linux e desde a sua primeira verso continua a ser utilizado para tal. Alguns projectos populares que utilizam Git para controlo de verses, alm do kernel Linux, so: Ruby on Rails, Node.js, jQuery, Modernizr, Scriptaculous, Android, CakePHP, Sinatra, VLC, entre muitos outros, e o prprio Git. Exacto! O controlo de verses do cdigo-fonte do Git feito atravs do prprio Git.

Git Magic (e-book) Git for Beginners

http://www-cs-students.stanford.edu/~blynn/gitmagic http://stackoverflow.com/questions/31 591 1 /git-forbeginners-the-definitive-practical-guide

Why Git is Better than X

http://whygitisbetterthanx.com

Git Is Your Friend not a Foe

http://hades.name/blog/201 0/01 /1 7/git-your-friend-not-foe

A successful Git branching model

http://nvie.com/posts/a-successful-git-branching-model

Use Git For What It Is Not Intended (UGFWIINI)


http://thread.gmane.org/gmane.comp.versioncontrol.git/1 1 041 1

AUTOR
Escrito por Caio Proiete Exerce as funes de arquitecto de software e analista-programador numa multinacional sediada em Portugal, e ministra cursos tcnicos de formao na Ciclo (http://ciclo.pt). formador certificado pela Microsoft (MCT), Microsoft Certified Professional Developer (MCPD) nas reas Windows, Web e Enterprise em .NET 4.0, Microsoft Most Valuable Professional (MVP) em ASP .NET desde 2009, e lder da Comunidade NetPonto (http://netponto.org), onde organiza reunies presenciais todos os meses, e apresenta sesses de assuntos relacionados com desenvolvimento de software na plataforma Microsoft .NET. autor do blog http://caioproiete.net - Twitter: @CaioProiete

22

A PROGRAMAR
Lua Linguagem de Programao (Parte 9) I n tro d . C l o u d C o m p u ti n g e Pl a ta fo rm a Wi n d o ws Azu re M a n a ge d E xte n s i b i l i ty Fra m e wo rk ( M E F) e AJ AX

M i c ro s o ft B i zTa l k Se rve r a o s o l h o s d o s p ro gra m a d o re s O E d i to r d e te xto VI M

A PROGRAMAR
Lu a Li n gu a ge m d e Pro gra m a o ( Pa rte 9 )
Este artigo apresenta uma soluo para o uso e implementao do operador lgico xor em linguagem Lua. Apresenta tambm instrues de uso e criao de mdulos que so as bibliotecas de funes externas que podem ser criadas pelos prprios programadores.
-- i n i c i o d o prog ra ma TABU ADA pri n t( " Prog ra ma Ta bu a d a " ) pri n t( " \n " ) i o. wri te( " E n tre u m n u mero ta bu a d a : " ) N = i o. rea d ( " * n u mber" ) pri n t( " \n " ) l oc a l TE M PO = os . c l oc k( ) for I = 1 , 1 000, 1 d o R = N * I i o. wri te( s tri n g . forma t( " %4d " , N ) ) i o. wri te( " X " ) i o. wri te( s tri n g . forma t( " %4d " , I ) ) i o. wri te( " = " ) i o. wri te( s tri n g . forma t( " %5d " , R) ) i o. wri te( " \n " ) en d l oc a l R = os . c l oc k( ) - TE M PO i o. wri te( " \n Tempo = " . . R) i o. wri te( " s eg s . \n " ) -- fi m d o prog ra ma TABU ADA -- i n i c i o d o prog ra ma OPE R_XOR

ALGO A MAIS EM LUA


A ttulo de ilustrao sobre recursos variados que podem ser utilizados na linguagem Lua segue alguns poucos exemplos, como: modo de limpeza do ecr e medio do tempo de CPU. Uma forma de efectuar limpeza do ecr (tela, monitor ou monitor de vdeo no Brasil) executar o comando cls na janela de prompt de comando do Microsoft Windows (modo MS-DOS) ou o comando clear na janela de comando do Linux/UNIX. Outra maneira por meio de uso dos recursos de terminal ANSI, mas este ser assunto para outro momento. Para fazer a execuo do comando de limpeza de ecr cls ou clear deve-se fazer uso da funo execute da biblioteca os com a sintaxe os.execute("comando"), onde comando ser substitudo pelo comando de limpeza de ecr do sistema operacional em uso. Para fazer a mtrica de tempo de execuo de uso de certo recurso em linguagem Lua usa-se a funo clock da biblioteca os a partir da sintaxe os.clock() que retorna o valor aproximado em segundos do tempo gasto para a execuo do recurso medido. Para efectuar um teste da funo os.clock() considere um programa que apresente o resultado de uma tabuada de um nmero qualquer variando de 1 at 1 000, como segue.

Em seguida escreva o cdigo de programa em um editor de texto, gravando-o com o nome tabuada.lua e execute-o com a linha de comando lua 5.1 tabuada.lua.

24

A PROGRAMAR
Lu a Li n gu a ge m d e Pro gra m a o ( Pa rte 9 )

OPERADOR XOR
Na linguagem de programao Lua no h a existncia do operador lgico xor como no h tal operador tambm na linguagem C, a no ser quando se trabalha com operaes de mais baixo nvel com a manipulao de bits por meio do operador ^. A no existncia do operador lgico xor no desmerece em nada a linguagem Lua, mas parece criar em alguns programadores certo desconforto por no conhecerem ou no saberem como resolver a questo. Apesar de ser uma soluo muito simples e de certa maneira fcil de ser encontrada em bons livros, stios ou blogs que tratam sobre o tema da programao de computadores cabe neste espao mostrar a soluo para a linguagem Lua, que nada mais do que uma soluo meramente matemtica. O operador lgico XOR retorna o resultado verdadeiro quando apenas, e to-somente, uma das condies da expresso lgica verdadeira. No caso em que as condies avaliadas sejam todas falsas ou verdadeiras o resultado da expresso lgica ser falso. Assim sendo, considere a tabela verdade a seguir para o operador lgico xor:

No sentido de exemplificar o uso da aco de aplicao do conceito do operador lgico xor (ou exclusivo) em Lua considere um programa que efectue a entrada dos nomes e sexos de duas pessoas que pretendem formar um par para participar de uma dana de quadrilha. Os administradores da festa determinaram que somente sero aceitos pares de sexos heterogneos. No sero aceitos casais formados por pessoas do mesmo sexo. Para atender a condio estabelecida o programa deve, aps a entrada do sexo dos participantes, verificar se formam par, e neste caso apresentar uma mensagem informando esta possibilidade. Caso no seja a condio verdadeira o programa deve indicar a impossibilidade da composio do par de dana. Observe que sero aceitos pares caso o sexo do 1 participante seja masculino e do 2 participante for feminino ou vice-versa. Assim sendo, considere como exemplo o seguinte cdigo de programa:
i o. wri te( " N ome 1 o. d a n c a ri n o: " ) N 1 = i o. rea d ( ) repea t i o. wri te( " S exo 1 o. d a n c a ri n o: " ) S 1 = s tri n g . u pper( i o. rea d ( ) ) u n ti l ( S 1 == " M " ) or ( S 1 == " F " ) i o. wri te( " N ome 2 o. d a n c a ri n o: " ) N 2 = i o. rea d ( ) repea t i o. wri te( " S exo 2 o. d a n c a ri n o: " ) S 2 = s tri n g . u pper( i o. rea d ( ) ) u n ti l ( S 2 == " F " ) or ( S 2 == " M " ) i f ( S 1 == " M " ) a n d ( S 2 == " F " ) or ( S 1 == " M " ) a n d ( S 2 == " F " ) or ( S 1 == " F " ) a n d ( S 2 == " M " ) or ( S 1 == " F " ) a n d ( S 2 == " M " ) th en pri n t( N 1 . . " d a n c a c om " . . N 2 ) el s e pri n t( N 1 . . " n a o d a n c a c om " . . N 2 ) en d -- fi m d o prog ra ma OPE R_XOR ( S 1 == " M " ) a n d ( S 2 == " F " ) or

Condio 1
Verdadeiro Verdadeiro Falso Falso

Condio 2
Verdadeiro Falso Verdadeiro Falso

Resultado lgico
Falso Verdadeiro Verdadeiro Falso

A soluo para uso da expresso lgica: (C1 ) xor (C2) em uma linguagem de programao, onde C1 e C2 so condies a serem avaliadas usar a expresso lgica (C1 and (not C2)) or ((not C1 ) and C2). No entanto, o uso desta expresso lgica na linguagem Lua no surte o efeito esperado. Isto posto, passa-se a ter outro problema a ser resolvido. Como ento fazer o uso de tal necessidade? Uma soluo recorrer a um mtodo no estilo fora bruta .
25

A PROGRAMAR
Lu a Li n gu a ge m d e Pro gra m a o ( Pa rte 9 )

Em seguida escreva o cdigo de programa em um editor de texto, gravando-o com o nome oper_xor.lua e execute-o com a linha de comando lua 5.1 oper_xor.lua. Observe no programa o uso da instruo de lao repeat until na entrada dos sexos dos participantes no sentido de evitar que ocorram entradas de sexo que no sejam M para masculino ou F para feminino. Outro detalhe a ser observado o uso da funo string.upper() que formata uma entrada de texto para maisculo. O trecho escrito entre a instruo if then faz o uso de uma aco de fora bruta para a simulao da execuo do operador lgico xor com o trecho de cdigo seguinte.
( S 1 == " M " ) a n d ( S 2 == " F " ) or ( S 1 == " F " ) a n d ( S 2 == " M " ) or ( S 1 == " F " ) a n d ( S 2 == " M " ) -- i n i c i o d o prog ra ma M ODU L O01

debug : funes para processo de depurao; io: possui as funes para as operaes de entrada e sada; math : possui as funes para o uso de operaes matemticas; os : funes que facilitam operaes com o sistema operacional; package: possui funes para o tratamento de mdulos; string : possui as funes que manipulam cadeias de caracteres; table: possui as funes para a manipulao de tabelas. Os mdulos padro da linguagem Lua so automaticamente carregados quando do uso do interpretador. No havendo necessidade de uso da funo require(). O uso da funo require() obrigatrio quando da definio e uso de uma biblioteca externa e particular criada pelo programador para atender as suas prpria necessidades. Para fazer uso de mdulos de forma simples considere como exemplo o seguinte cdigo de programa: Grave o cdigo do programa anterior com o nome modulo01 .lua.

A soluo indicada pode no ser elegante, mas funcional e atende a necessidade de soluo do problema, pois quem programa um computador um programador e no a linguagem em si.

MDULOS
Na estrutura operacional de Lua chama-se mdulo a biblioteca de funes e variveis externa contidas em uma tabela de cunho global utilizada por meio da funo require(). H tambm a possibilidade de se trabalhar com mdulos a partir da funo module(), mas este no ser o foco tratado neste artigo. A linguagem Lua possui alguns mdulos em sua biblioteca padro (biblioteca interna), sendo:

fu n c ti on s a u d a c a o( N OM E ) pri n t( " Ol , " . . N OM E ) en d fu n c ti on ra i z ( BAS E , I N DI CE ) l oc a l X = BAS E ^ ( 1 / I N DI CE ) retu rn X en d -- fi m d o prog ra ma M ODU L O01 -- i n i c i o d o prog ra ma M ODU L O02

coroutine: possui as funes de uso do recurso de corotinas;

Em seguida escreva o prximo cdigo de programa em um editor de texto, gravando-o com o nome modulo02.lua no
26

A PROGRAMAR
Lu a Li n gu a ge m d e Pro gra m a o ( Pa rte 9 )

mesmo local do programa modulo01 .lua e execute-o com a linha de comando lua 5.1 modulo02.lua. Ao ser o programa modulo02.lua executado ser aberto o acesso a biblioteca modulo01 por meio da execuo da linha de cdigo require("modulo01 ").
req u i re( " mod u l o01 " ) pri n t( " S ej a bem vi n d o, vi s i ta n te" ) i o. wri te( " I n forme s e n ome: " ) N = i o. rea d ( ) s a u d a c a o( N ) i o. wri te( " M e d e u ma ba s e . . . . . : " ) B = i o. rea d ( " * n u mber" ) i o. wri te( " M e d e u m i n d i c e . . . . : " ) I = i o. rea d ( " * n u mber" ) R = ra i z ( B, I ) i o. wri te( " Res u l ta d o = " . . R, " \n " ) -- fi m d o prog ra ma M ODU L O02

possvel encontrar na Internet bibliotecas para a linguagem Lua disponibilizadas por outros programadores. Caso interesse-se por este tema poders consultar o stio http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/ o qual encontravase no ar at Abril de 201 1 quando este artigo estava sendo finalizado. As bibliotecas externas para uso em na linguagem Lua podero possuir a extenses de identificao .lua ou .so (ou .dll no caso do sistema operacional da Microsoft).

CONCLUSO
Neste artigo foi visto os procedimentos de uso e criao de bibliotecas externas e a simulao de uso do operador lgico xor. No que tange ao uso do recurso de mdulos o assunto mais extenso do que o apresentado. O leitor poder aprofundar-se nesta temtica com a leitura do livro Beginning Lua Programming publicado pela editora Wiley Publishing, Inc. dos autores Kurt Jung e Aaron Brown. No prximo a inteno e abordar a temtica relacionada ao uso de co-rotinas e a integrao da linguagem Lua com outras linguagens de programao.

A partir deste momento ficam disponveis para o programa modulo02 as funes da biblioteca externa modulo01 , as quais so executadas quando do uso das linhas de instruo saudacao(N) e raiz(B,I).

AUTOR
Escrito por Augusto Manzano Natural da Cidade de So Paulo, tem experincia em ensino e desenvolvimento de programao de software desde 1 986. professor da rede federal de ensino no Brasil, no Instituto Federal de Educao, Cincia e Tecnologia. tambm autor, possuindo na sua carreira vrias obras publicadas na rea da computao.

27

A PROGRAMAR
I n tro d u o a o C l o u d C o m p u ti n g e Pl a ta fo rm a Wi n d o ws Azu re
Nos ltimos tempos muito se tem falado sobre o Cloud Computing/Cloud, mas a verdade que muita gente ainda se questiona sobre: O que ? Para que serve? E a mais importante de todas as questes; O que que isto me ajuda? Tendo estas questes em mente, e tambm aps o desafio lanado pelos responsveis da revista Portugal-aProgramar, decidi escrever este artigo para clarificar estas e outras questes. O Cloud Computing embora se tenha vindo a falar muito ultimamente, no uma revoluo, mas sim uma evoluo da computao, pois evoluiu naturalmente da adopo em massa da Virtualizao, e tambm no seguimento de outros tipos de computao distribuda, como por exemplo o Grid Computing. Mas para melhor compreendermos o conceito de Cloud Computing o melhor olhar-mos para uma pequena analogia, e para isso o mais simples olhar-mos para algo que todos conheamos e tambm sejamos consumidores, como por exemplo a energia elctrica ou mesmo a gua. Vamos ento olhar para o exemplo da gua (uma vez que a verso energia elctrica est deveras utilizada). A realidade que durante muitos anos cada um de ns ramos responsveis por produzir a gua que consumia-mos, fosse atravs de ir buscar gua aos rios/ fontes, ou mesmo criarmos um nosso prprio poo para que pudssemos ter mais facilmente a nossa gua disponvel., Mas a questo importante que nenhuma das opes era simples, e requeria acima de tudo bastante trabalho da nossa parte, pois quer fosse por transportarmos a gua ou mesmo pela manuteno do nosso poo, muito trabalho e dinheiro era gasto no processo. Tudo isto foi bastante normal at um determinado momento em que surgiu uma rede de gua, que tinha a vantagem de ser simples, sem qualquer esforo necessrio da nossa parte para que tudo funcionasse, e acima de tudo com um valor associado utilizao que fazamos da mesma, o que tornava os investimentos anteriores completamente desadequados.
28

Com o Cloud Computing aconteceu exactamente a mesma coisa. At este momento todos ns temos andado a procurar formas de obtermos mais capacidade de computao, no sendo fcil nem mesmo interessante em termos de investimento. Tambm em termos de disponibilidade tem sido muito complicado, pois qual de ns ainda no passou pela experincia de identificar a necessidade de aumento do nmero de servidores, e desesperar pela disponibilizao do mesmo, e isto independentemente de sermos ns ou um servio de Hosting a gerir o Data Center. Aqui onde esta nova forma de computao chama mais ateno, uma vez que podemos ter quase no imediato disponvel o poder de computao que necessitamos, e acima de tudo pagando apenas pelo que utilizamos, e no pelo simples facto de existirem os servidores, como estvamos habituados at aqui. Como curiosidade, por vezes surgem questes

A PROGRAMAR
I n tro d u a o a o C l o u d C o m p u ti n g e Pl a ta fo rm a Wi n d o ws Azu re

relativamente ao porqu da palavra Cloud. Este termo deve-se ao facto de a Internet ter sido representada ao longo dos anos com uma nuvem, e por isso mesmo o termo Cloud/Nuvem, ser utilizado, pois estamos a falar de um tipo de computao acessvel via Internet.

Se respondeu sim a todas as questes anteriores, ento est certamente perante uma verdadeira oferta de Cloud Computing.

Modelos de Utilizao
Em conjunto com o Cloud Computing surgiram outras siglas que tm sido muito badaladas como o SaaS (Software como um Servio), PaaS (Plataforma como um Servio) e IaaS (Infra-estrutura como um Servio). Mas o que so na realidade? Olhando de uma perspectiva de alto nvel, elas definem a responsabilidade que o cliente sobre o servio:

Caractersticas
Uma questo importante a ter em conta o facto de ser necessrio compreendermos exactamente o que e o que no Cloud Computing, pois ao longo dos anos j assistimos por diversas vezes a situaes em que utilizam nomes novos para reciclar ofertas antigas. Por isso mesmo existem algumas caractersticas principais para que possamos identificar as ofertas mais rapidamente, sendo elas: Elasticidade / Agilidade possvel ou no aumentar e diminuir a capacidade de computao rapidamente (menos de 1 dia)? API Existem ou no uma API capaz de nos permitir interagir programaticamente com o sistema? Custo Os custos so associados utilizao que fazemos? Multi-Tenancy O sistema suporta mais do que um cliente sem quaisquer alteraes? Fiabilidade Existe ou no redundncia e tolerncia falha? Escalabilidade fcil ou no escalar solues e recursos? Segurana Existem ou no acordos de nvel de servio?

Se respondeu sim a todas as questes anteriores, ento est certamente perante uma verdadeira oferta de Cloud Computing.
29

SaaS O cliente apenas se preocupa com a utilizao da aplicao e nada mais, pois os dados, aplicao e respectiva infra-estrutura passam a ser responsabilidade do fornecedor do servio. (ex. Office 365, Google Apps, SalesForce.com, ) PaaS O cliente preocupa-se apenas com a construo da aplicao e respectiva gesto dos dados da mesma, pois toda a restante infra-estrutura e plataforma onde as mesmas iro correr passam a ser responsabilidade do fornecedor do servio. (Ex. Windows Azure, SQL Azure, Amazon AWS, Google App Engine, Force.com, ) IaaS A responsabilidade prende-se com a gesto de todos os elementos virtuais da infra-estrutura, como o Sistema Operativo, Servios de Suporte, etc., mas no se preocupando com qualquer questo de gesto fsica dessa mesma infra-estrutura, pois a mesma ser responsabilidade do fornecedor desse mesmo servio. (Ex. Amazon EC2, vCloud Express, Hyper-V Cloud, )

A PROGRAMAR
I n tro d u a o a o C l o u d C o m p u ti n g e Pl a ta fo rm a Wi n d o ws Azu re

Modelos de Disponibilizao
Sempre importante tambm compreendermos as formas como podemos encontrar o Cloud Computing disponvel, pois ao contrrio do que se possa pensar o Cloud Computing no tem a ver apenas com computao que se encontra disponvel publicamente (embora exista um grande grupo que o defenda), pois na realidade existem 4 tipos de disponibilizao que poderemos encontrar, sendo eles os seguintes: Pblica - Cloud Computing de uma forma tradicional (como maioritariamente vista), onde os recursos so provisionados dinamicamente e com enorme detalhe, mas sempre de uma forma autogerida via Internet atravs de Aplicaes ou Servios Web, um parceiro que que nos cobra a um nvel de detalhe na base do utility computing. Privada - Capacidade de ter todas as capacidades de uma Cloud interna a uma organizao. Comunitria - Poder ser estabelecida entre organizaes que tenham requisitos semelhantes e procurem partilhar infra-estrutura. Exemplo deste tipo de modelo a nuvem comunitria da Google "Gov Cloud". Hbrido - Este termo tem sido utilizado como significando quer duas nuvens integradas (pblica, privada, interna ou externa), quer a combinao de instncias virtualizadas em conjunto com hardware real.

disponibilizao esta uma oferta de Cloud Pblica, e fornece-nos um modelo de utilizao PaaS (Plataforma como um servio). Tendo terminado o processo inicial de categorizao da oferta, passemos ento a compreender melhor aquilo que ento a Plataforma Windows Azure. Na realidade esta plataforma assenta muito na reutilizao das competncias, pois encontra-se assente nas tecnologias que a Microsoft tem vindo a disponibilizar ao longo dos anos para o desenvolvimento de solues, permitindo que o processo de desenvolvimento para a Cloud seja mais simples, uma vez que utiliza ferramentas e frameworks que programadores, gestores, e todos os outros interlocutores no processo de desenvolvimento de aplicaes j se encontram familiarizados, mas no s, pois tambm possvel utilizar esta oferta com frameworks e ferramentas no Microsoft, como so os casos do Java, PHP, Ruby, Python, entre outros. Dado isto, uma das questes que se levanta : ento afinal o que pode correr em Windows Azure?. A resposta no poder ser mais simples, pois salvo raras excepes, tudo aquilo que seja possvel instalar num sistema operativo Windows Server 2008 SP2 ou Windows Server 2008 R2, poder ser disponibilizado na plataforma Windows Azure. Este um aspecto muito importante pois no uma plataforma limitada disponibilizao de solues desenvolvidas apenas numa tecnologia especfica, mas sim num sistema global com capacidade de disponibilizar uma grande maioria das solues que tm vindo a ser desenvolvidas, pois consegue abranger um grande leque de tecnologias. Ento agora que j sabemos o que podemos colocar, vamos olhar para a sua composio, pois a mesma composta 4 reas principais:

Plataforma Windows Azure

Agora que j conhecemos melhor o que efectivamente o Cloud Computing, podemos iniciar uma viso mais detalhada sobre uma das ofertas de Cloud sobre a qual muito se tem falado, e ela a Plataforma Windows Azure da Microsoft. No que respeita ao modelo de
30

Windows Azure - Muitas vezes denominado de Sistema Operativo da Cloud, fornece servios de computao, armazenamento, e tambm automatizao na gesto dos mesmos. este o responsvel por correr todas as nossas

A PROGRAMAR
I n tro d u a o a o C l o u d C o m p u ti n g e Pl a ta fo rm a Wi n d o ws Azu re

solues disponibilizadas na plataforma, bem como tratar dos dados associados mesma. Windows Azure AppFabric Tem como objectivo fornecer servios aplicacionais para consumo nas diversas aplicaes, sejam eles ao nvel da Identidade e Controlo de Acessos, at a servios de conectividade e caching. Disponibiliza acima de tudo um conjunto de servios que permitem tornar as nossas solues mais ricas, de uma forma simplificada. SQL Azure Servios de dados relacionais como por exemplo uma base de dados relacional (SQLAzure), um sistema de relatrios (SQL Azure Reporting Services) e tambm um sistema de sincronizao de dados (SQL Azure DataSync), permitindo que possamos criar solues que tirem partido quer de uma base de dados relacional altamente distribuda e disponvel, entre outros servios muito importantes quando trabalhamos com dados. MarketPlace Plataforma para a monetizao de aplicaes e dados. Este um dos pontos muito interessantes da plataforma, pois no se limita apenas a fornecer um conjunto de servios para criar e correr aplicaes, mas tambm uma forma de monetizar os

mesmo, uma vez que permite ao fornecedor de servios, descrever a sua oferta e o valor a ser cobrado pela mesma. Olhando ento numa perspectiva funcional e de alto nvel, esta plataforma fornece-nos os seguintes servios: Ao nvel com Computacional , o Windows Azure Compute, que nada mais do que um dos principais blocos desta oferta, pois para alm de definir o que dever correr em termos de computao, permite descrever tambm a forma como a mesma dever ser efectuada, seja ao nvel da capacidade de processamento, at ao nvel da memria alocada a esse processo de computao. tambm aqui que acontece o processo que permite fornecer a elasticidade soluo, pois atravs do conceito de instncia (ambiente de computao funcional de acordo com as regras definidas na configurao do Servio) permite definir para cada um dos servios disponibilizados na plataforma, quantas instncias devero estar funcionais ao mesmo tempo, detendo ainda a capacidade de analisar a sade das mesmas por forma a evitar problemas e, ao mesmo tempo, resolver rpida e automaticamente todos os

31

A PROGRAMAR
I n tro d u a o a o C l o u d C o m p u ti n g e Pl a ta fo rm a Wi n d o ws Azu re

problemas que possam surgir. aqui que muita da magia acontece, pois atravs deste servio que podemos ter o sistema elstico necessitamos em tantas situaes. No que respeita ao nvel de Armazenamento, prope duas opes: o Windows Azure Storage Sistema de Armazenamento disponibilizado como um servio. Permitenos focar apenas nos dados armazenados e no na forma como se encontram armazenados ou at dos processos necessrios para os tornar mais disponveis. composto por 4 abstraces diferentes: Tables (Base de Dados Hierrquica, no relacional), Queues (Filas de Trabalho que nos iro permitir a criao de solues assncronas, e ao mesmo tempo tolerantes a falhas), Blobs (Ficheiros) e Drives (Simulao de um Disco que poder ser utilizado pelos servios de computao).

o SQL Azure Base de Dados Relacional disponibilizada como um servio, sendo fcil de provisionar e disponibilizar, mas acima de tudo preparada para ser altamente disponvel e tolerante a falhas. Mantm tambm ao mesmo tempo a mesma forma de utilizao que j habitual para consumir e gerir dados de qualquer base de dados SQL Server.
Uma nota importante ao nvel do armazenamento que a plataforma Windows Azure efectua em qualquer dos casos a 3 rplicas dos dados que so armazenados, garantindo desta forma uma maior segurana e tolerncia a falha dos mesmos. Isto faz com que o grau de segurana que obtemos ao utilizar este tipo de armazenamento bastante elevado, pois encontramo-nos protegidos em caso de falha do sistema. Em termos de Conectividade, as opes so: o Rede Virtual - Mecanismo simples e de fcil manuteno que nos permite criar conectividade/rede virtual entre recursos que se encontrem na Cloud com outros que se encontrem On-Premise (internamente nas organizaes), sem que para isso seja necessrio as longas e complexas configuraes de rede, habitualmente necessrias sempre que seja necessrio ligar recursos de
32

fora de uma determinada organizao a recursos internos mesma. o Windows Azure AppFabric ServiceBus Permite fornecer uma forma de criar e consumir servios de uma forma simples e poderosa, ficando para o criador do servio apenas o que diz respeito s regras de negcio que o mesmo dever disponibilizar, e tambm a forma como o servio dever ser disponibilizado, ficando todo o processo de disponibilizao e manuteno do mesmo a cargo da plataforma. o Windows Azure AppFabric Integration Proporciona a simplificao do processo de criao de servios para integrar diferentes solues e at transformao de dados. o Windows Azure AppFabric Caching Garante a possibilidade de obter de uma forma simples e rpida um ambiente de Caching altamente distribudo e disponvel, auxiliando dessa forma a melhoria da performance das solues desenvolvidas. o CDN (Content Delivery Network) Servio que nos ir permitir melhorar o acesso quer a elementos presentes no servio de armazenamento do Windows Azure ou at mesmo ao nvel da computao. composto por um conjunto de cerca de 22 ns dispersos geograficamente que tm como responsabilidade disponibilizar os contedos requeridos pelo cliente rapidamente e com tendo por base a localizao do mesmo. Quanto Identidade Windows Azure AppFabric Access Control que nos permite definir a forma como a identidade das nossas solues ir ser efectuada, inclusivamente disponibilizando uma forma simples de implementar o Single-Sign On, que tanto tempo se vem falando. sem dvida uma enorme mais-valia para as solues uma vez que cria uma camada de abstraco sobre a forma como o utilizador identificado, pois essa transformao, entre a origem do utilizador at ao que a nossa soluo necessita de saber sobre esse mesmo utilizador, -nos fornecida e tratada por este servio. Tambm muito importante, e de acordo com o que vimos no que respeita ao Cloud Computing, compreender o Acordo de Nvel de Servio (SLA) associado a esta oferta da Microsoft, pois atravs dele que garantimos o nvel de confiana na plataforma. Os SLAs existentes so os de

A PROGRAMAR
I n tro d u a o a o C l o u d C o m p u ti n g e Pl a ta fo rm a Wi n d o ws Azu re

Computao que nos garantem 99,95% de disponibilidade ao nvel de solues Web, e 99,9% para todos os restantes servios de computao, sendo para isso necessrio que existam pelo menos duas instncias activas desse mesmo servio. Quanto ao SQL Azure o SLA garante 99,9% de disponibilidade da mesma forma como acontece com o Windows Azure AppFabric e Windows Azure CDN. Estes SLAs tm tambm um aspecto muito importante que se prende com o facto de fornecerem uma compensao monetria ao cliente em caso de incumprimento.

Concluso
Tendo em considerao tudo o que falamos, poderemos considerar o Cloud Computing como a prxima gerao de computao, e mais importante que no algo que apenas poderemos comear a tirar partido num futuro prximo, mas sim J, pois algo que j est disponvel e pronto para utilizarmos de forma a melhorarmos os nossos investimentos.

falar de algo que importante apenas para alguns, mas sim para todos, quer seja atravs da utilizao de uma simples aplicao como o CRM na Cloud, ou at ao desenvolvimento de novas solues de negcio e at formas nichos de mercado, o Cloud Computing ir ajudarnos a atingirmos os nossos objectivos, de uma forma mais gil, econmica e adequada s necessidades. E lembremse que como diz o ditado popular nem tudo o que luz ouro, por isso sempre que lhes apresentem uma soluo denominada de Cloud Computing, sejam capazes de vocs prprios a avaliar, e compreender se ou no na verdade. Tambm importante compreender que o Cloud Computing no a soluo para todos os problemas, mas sim mais uma opo para tirarmos o mximo partido dos investimentos que fazemos. Podemos tambm olhar para a oferta Windows Azure da Microsoft e considerar a mesma como uma aposta sria e de elevada qualidade, pois no s nos permite colocar os recursos que devero ser processados, como tambm nos fornece um enorme conjunto de servios para melhorar as nossas solues, mantendo ou mesmo aumentando disponibilidade das solues. Espero que com este artigo vos tenha ajudado a compreender melhor o que afinal o Cloud Computing e a Plataforma Windows Azure e ao mesmo tempo desmistificar um pouco esta questo. Muito mais poderia ser dito, mas parece-me que aqui ficou o essencial.

no algo que apenas poderemos comear a tirar partido num futuro prximo, mas sim j
tambm importante ter em ateno que no estamos a

AUTOR
Escrito por Nuno Godinho. Consultor Independente com 1 0 anos de Experincia e principal responsabilidade de ajudar os clientes a identificar, planear, gerir e desenvolver solues e produtos de software. Especialista em Tecnologias Microsoft. Orador em alguns dos maiores eventos de desenvolvimento da Microsoft Portugal como MSDN, TechDays, DevDays, alm de eventos internacionais como TechEd Europa, TechEd Online Worldwide, MVP Nation e CloudViews.Org. Microsoft MVP h 4 anos, inicialmente em ASP.NET e a partir do incio deste ano em Windows Azure com blogs em http://www.pontonetpt.com/blogs/nunogodinho (Portugus e Ingls) e http://www.msmvps.org/blogs/nunogodinho (Ingls), INETA Country Leader por Portugal, e parte da equipa de gesto de por diversas comunidades Portuguesas como PontoNetPT, XAMLPT e Fundador da AzurePT (Windows Azure em Portugus).
33

A PROGRAMAR
M a n a ge d E xte n s i b i l i ty Fra m e wo rk ( M E F)
Neste artigo vou expor a framework oficial de extensibilidade de aplicaes para a plataforma .NET, que existe desde a verso 3.5 mas que foi oficialmente lanada com a plataforma .NET a partir da verso 4.Esta framework vem preencher uma lacuna na plataforma para a construo de software extensvel, sem as tpicas dores de cabea que esta problema tem trazido at agora.Embora j existessem outras abordagens ao problema como Unity, IoC Containers, Castle Project, a Microsoft percebeu que nenhuma delas era leve e fcil o suficiente para o efeito, e como tal, decidiram lanar e incorporar na plataforma a sua prpria framework.A MEF o culminar de aprendizagem com todos estes sistemas, ao perceber onde erravam e ao preencher os espaos que estavam por preencher para que todos possamos desenvolver sistemas extensvel com o mnimo esforo possvel. no mbito dessa organizao no teria de se preocupar em desenvolver um sistema de logging, apenas importaria o j existente atravs de MEF.Import - um servio que uma Part consome. Uma Part pode importar um ou vrios servios tanto quanto necessrio. Composition - o acto de satisfazer as importaes e exportaes definidas na aplicao, connect the dots.Contracts - Definem e identificam o que est a ser exportado e o que para ser importado.A MEF disponibiliza out-of-the-box um modelo de desenvolvimento por atributos em que o modo como se define o que importado, o que exportado e os metadados destas importaes e exportaes, atravs destes. Este o mtodo de utilizao que vamos falar neste artigo, mas o core da MEF completamente agnstico, poderia-se usar qualquer outro modelo.Para entrarmos realmente na utilizao de MEF e num cenrio real, vamos supor que temos uma aplicao e que esta necessita de um sistema de cache. Este sistema tem de ser externo porque temos de conseguir trocar de sistema de cache de um modo transparente, ou seja, a cache um ponto de extensibilidade da nossa aplicao.Em primeiro lugar (no sendo obrigatrio para a utilizao de MEF, mas como boa prtica em modelos desacoplados) vamos definir um interface que o contrato da nossa extenso:
pu bl i c i n terfa c e I Pers i s t { voi d S a veToCa c h e( s tri n g key, s tri n g pa yl oa d , L i s t< s tri n g > d epen d en tKeys ) ; s tri n g GetF romCa c h e( s tri n g key) ; }

Composable Part - algo que tem tanto consome servios de outras Parts como fornece tambm servios. As Parts podem tanto vir de dentro da mesma aplicao como de um componente externo.Export - um servio que uma Part fornece. Quem importar esta Part vai obter a/as funcionalidades inerentes. Uma Part pode exportar mais do que um servio se assim for necessrio. Exemplo: Uma Part poderia por exemplo exportar um sistema de logging transversal a uma organizao, e qualquer aplicao feita
34

A partir deste interface, podemos criar um projecto separado da nossa aplicao e apenas referenciar uma assembly (tipicamente temos um projecto com todos os

A PROGRAMAR
M a n a ge d E xte n s i b i l i ty Fra m e wo rk ( M E F)

contratos, que tanto referenciado pela aplicao como por quem cria componentes importados pela aplicao, o contrato conhecido por ambas as partes que define os termos das extenses).Ao faz-lo, implementamos essa assembly da forma que esse sistema de cache funcionar:
pu bl i c c l a s s M emoryCa c h e : I Pers i s t {

utilizar estes sistemas de um modo simples, e o mais importante, totalmente desacoplado:


pu bl i c pa rti a l c l a s s App : Appl i c a ti on { pri va te I Pers i s t c a c h eS ys tem { g et; s et; } pu bl i c App( )

pu bl i c voi d S a veToCa c h e( s tri n g key, s tri n g pa yl oa d , L i s t< s tri n g > d epen d en tKeys ) { / / l g i c a } pu bl i c s tri n g GetF romCa c h e( s tri n g key) { / / l g i c a } } }

{ / / fa l ta a q u i a l g o, c omo c a rreg a mos o s i s tema d e c a c h e d es ej a d o ? c a c h eS ys tem. S a veToCa c h e( " key" , " pa yl oa d " , n ew L i s t< s tri n g > ( ) ) ; c a c h eS ys tem. GetF romCa c h e( " key" ) ; }

pu bl i c c l a s s Di s kCa c h e : I Pers i s t { pu bl i c voi d S a veToCa c h e( s tri n g key, s tri n g pa yl oa d , L i s t< s tri n g > d epen d en tKeys ) { / / l g i c a } pu bl i c s tri n g GetF romCa c h e( s tri n g key) { / / l g i c a } }

O que temos de alterar para que o MEF se encarregue de carregar a assembly que contm o sistema de cache que queremos utilizar? (qualquer um que implemente a interface IPersist).Vamos assumir que a assembly que tem a nossa lgica de cache se encontra na directoria da nossa aplicao (poderia estar noutra qualquer directoria, ou at poderamos definir a classe dentro da nossa prpria aplicao, no existe qualquer obrigatoriedade de ser uma assembly externa).Em primeiro lugar temos de especificar que as classes que contm a lgica de cache se vo exportar, e isto apenas feito decorando as classes com o atributo:[Export(typeof(IPersist))] O que este atributo nos diz que a classe est a disponibilizar-se para ser importada, e o tipo com que ela est a expor o IPersist, e isto torna-se importante especialmente quando estamos a exportar e importar vrias funcionalidades em simultneo, pois facilitam a identificao.Na nossa aplicao, vamos ter de instanciar um catlogo, e os tipos de catlogos que existem so:AssemblyCatalog: procura numa assemblyDirectoryCatalog: procura numa directoria (relativa ou
35

Deste modo temos duas classes que podem servir como o nosso sistema de cache, a MemoryCache e a DiskCache, que tero as suas lgicas prprias que para o mbito do artigo no so relevantes, mas mostram-nos que podemos, ao implementar o contrato (interface) definido, criar vrias implementaes diferentes para o mesmo problema, e que com o MEF, como vou mostrar de seguida, podemos

A PROGRAMAR
M a n a ge d E xte n s i b i l i ty Fra m e wo rk ( M E F)

absoluta)- AggregateCatalog: agrega vrios catlogosTypeCatalog: procura num tipo- DeploymentCatalog (exclusivo Silverlight): carrega XAPs dinamicamenteCustom: podemos definir o nosso prprio catlogoNeste caso utilizamos um DirectoryCatalog, visto que estamos a obter as assemblies que se esto a disponibilizar para importao na directoria da nossa aplicao. Aps instanciar o catlogo temos de instanciar um CompositionContainer, fornecendo o nosso catalogo como parmetro.O CompositionContainer responsvel por aceder ao catlogo fornecido e satisfazer os imports e exports:

c a c h eS ys tem. S a veToCa c h e( " key" , " pa yl oa d " , n ew L i s t< s tri n g > ( ) ) ; c a c h eS ys tem. GetF romCa c h e( " key" ) ; } }

pu bl i c pa rti a l c l a s s App : Appl i c a ti on { [ I mport] pri va te I Pers i s t c a c h eS ys tem { g et; s et; } pu bl i c App( ) { va r c a ta l og = n ew Di rec toryCa ta l og ( E n vi ron men t. Cu rren tDi rec to ry) ; va r c on ta i n er = n ew Compos i ti on Con ta i n er( c a ta l og ) ; c on ta i n er. Compos ePa rts ( th i s ) ;

Estas poucas linhas de cdigo contm um poder extraordinrio se pensarmos no que seria necessrio.Para implementar um sistema destes manualmente. Podemos inclusive alterar o sistema de cache sem qualquer recompilao, apenas trocando a assembly. No necessria qualquer referncia s assemblies que implementam o sistema de cache, tudo desacoplado. O nico ponto em comum o contrato, que o elo de ligao, um interface: a aplicao no tem qualquer noo sobre o funcionamento do sistema de cache, nem o sistema tem qualquer necessidade de saber o que se passa na aplicao. O nvel de abstraco quase total.Este artigo tem como objectivo demonstrar o poder da Managed Extensibility Framework, conceitos, casos de uso e a facilidade com que podemos tirar partido dela.Stay tuned!

AUTOR
Escrito por Ricardo Rodrigues tcnico Nvel III em Informtica/Gesto pela Fundao Escola Profissional de Setbal, tendo ingressado aps na FCT da Universidade Nova de Lisboa. Posteriormente frequentou vrios cursos da Microsoft em diversas reas como Windows Forms,ASP.NET, Securing .NET Applications, WCF, WWF, Web Services e COM+ tendo obtido as certificaes MCP .NET 2.0, MCAD .NET 1 .1 , MCSD .NET 1 .1 , MCPD Windows, Web e Distributed Applications e MCPD Enterprise Applications Developer. Contribui activamente em comunidades como StackOverflow e tambm possui um blog/twitter como temtica relacionada: Blog / @ricmrodrigues

36

A PROGRAMAR
M i c ro s o ft B i zTa l k Se rve r a o s o l h o s d o s p ro gra m a d o re s
J muito se tem falado sobre a plataforma BizTalk Server, o que , e as vantagens que oferece as organizaes. Para os mais distrados, BizTalk Server a plataforma de excelncia da Microsoft para a integrao de sistemas e processos empresariais. Mas quais os beneficios que esta plataforma oferece aos programadores? prestao de servios do governo 9 das 1 0 maiores companhias de telecomunicaes norte americanas utilizam BizTalk 6 das 8 maiores companhias farmacuticas norte americanas utilizam BizTalk 9 das 1 0 maiores companhias espaciais e de defesa nos EUA utilizam BizTalk Com uma robusta infra-estrutura de mensagens, funcionalidade de resilincia (Dehydration e Rehydration), mais de 25 adaptadores multiplataforma, motor de regras, possibilidade de obter informaes de desempenho sobre processos crticos de negcios, debug, persistncia, tratamento e recuperao de erros, suporte a transaces. Torna o BizTalk Server numa ferramenta e infra-estrutura nica, ideal para ser usado principalmente para integrao de aplicaes corporativas (EAI), integrao de sistemas entre parceiros de negcio (B2B) e para gesto de processos de negcio (BPM).

Mercado de trabalho
Onde o produto utilizado? Em que contextos? Quais as oportunidades de trabalho que oferece? Remuneraes? Estas so algumas perguntas que um programador quer saber antes de se dedicar a uma tecnologia/produto. Microsoft BizTalk Server 201 0 a stima verso do produto, tornando-o num dos produtos mais maduros e estveis da Microsoft.

Ao longo dos anos o produto tornou-se uma referncia de sucesso entre os sistemas de integrao, sendo actualmente o produto mais utilizado no mundo na sua rea, como asseguram os seguintes factos: Mais de 1 0 000 clientes espalhados por todo o mundo 81 % do Top 1 00 da revista Fortune 1 2 dos 1 5 maiores retalhistas mundiais utilizam BizTalk 5 das 1 0 maiores cadeias de hotis mundiais utilizam BizTalk 9 das 1 0 maiores seguradoras mundiais utilizam BizTalk 23 dos 27 governos membros da UE utilizam BizTalk para
37

No que diz respeito s oportunidades de trabalho, podemos definir 3 perfis:

BizTalk Architect: conhecedor de todo o sistema de

integrao, backup e planos de recuperao, segurana, logging, o fluxo de mensagens, interface de comunicao. Utilizando os seus conhecimentos tambm como um programador, o arquitecto dever conhecer as capacidades e limitaes das ferramentas sua disposio (BizTalk,

A PROGRAMAR
M i c ro s o ft B i zTa l k Se rve r a o s o l h o s d o s p ro gra m a d o re s

BAM, BRE) e desenhar os projectos fazendo as melhores escolhas para cada situao.

BizTalk Developer:

implementa e estende as funcionalidades base, tirando partido das diferentes ferramentas. Aqui existem muitas reas completamente ortogonais e um programador poder no dominar ao mesmo nvel todas elas: Orchestration, Adapters, Pipelines, Mappings, Functoids, Routing, Rules, Tracking, OLAP, entre outras.

com mais ateno alguns requisitos, fcil identificar certos desafios que se podem tornar bastante complexos: implementao de persistncia, correlao de mensagens assncronas, recuperao em caso de falhas nas comunicaes, mapeamentos complexos, atomicidade, transaces de longa durao, monitorizao e visibilidade dos processos, e tudo isto se reflecte, para um programador, em custos enormes na implementao. aqui que o BizTalk entra e o que ele faz de melhor, porque todas estas funcionalidades esto ao dispor dos programadores out of the box com o produto, libertando assim, os mesmos, da necessidade de terem de reimplementar vezes sem conta estas funcionalidades e permitindo assim um foco no aspecto mais critico que a implementao da lgica de negcio associado aos fluxos de integrao. So diversas as funcionalidades ou mdulos que poderamos enumerar. Umas ajudam a simplificar a interoperabilidade, outras a reduzir custos na implementao:

BizTalk Administrator: um administrador de sistemas ter

outras preocupaes, como sejam a sade dos servidores e a sua actividade (HAT), desbloqueando mensagens e processos, garantindo o devido fluxo das mensagens, bem como o fluxo de dados de telemetria necessrios ao bom diagnstico dos processos de negcio. Apesar do nosso mercado interno ser muito diferente do internacional aqui esto alguns exemplos reais de oportunidades de trabalho (fonte LinkedIn): BizTalk Developers needed in: Miami, NYC, Jacksonville, Austin, Sacramento, Louisville, Hawaii, Panama City, Montevideo, London, Toronto, Preston, Porto. BizTalk Administrator needed in Ft. Lauderdale FL 75K 1 00K depending on experience. BizTalk Developer/Architect needed for International Law Firm in NY. 1 1 0k-1 30k. 6 Month BizTalk 2009 Consultant required for Public Sector project in London. Rates negotiable but c500-550 per day. 2 BizTalk Developer Needed in NYC - Healthcare, midlevel $95-1 1 0K and senior level $1 05-1 20K.

BizTalk Orchestration Designer

Antes de aprender a programar ensinado a todos os programadores como representar todos os passos necessrios para a execuo de um processo na forma de um fluxograma, isto porque mais legvel e ilustra de forma simplificada o progresso da execuo. O BizTalk inclui um Orchestration Designer, integrado no Visual Studio, que possibilita aos programadores representarem os processo de negcio de forma visual, assim como uma representao das portas, configuraes e das ligaes entre as diversas actividades (shapes), tornando-se assim mais fcil de gerir e ler do que numa linguagem textual generalista (exemplo C#).

Funcionalidades para os programadores


No h nada que o BizTalk faa que com cdigo escrito de raiz no se consiga fazer, a questo quanto tempo demora a implementar uma soluo sem um uso de middleware (sistema de integrao). Facilmente se conseguir efectuar uma integrao entre dois sistemas com o uso de tecnologias de comunicao e transporte de dados tais como o Microsoft WCF, mas quando se analisa
38

A PROGRAMAR
M i c ro s o ft B i zTa l k Se rve r a o s o l h o s d o s p ro gra m a d o re s

BizTalk Expression Editor

O BizTalk Expression Editor permite aos programadores introduzir cdigo .NET, com suporte a intellisense, directamente nas orquestraes ou invocar bibliotecas externas, o que em certos cenrios se torna bastante til, como por exemplo: manipular valores das mensagens a partir da Message Assignment shape, manipular variveis na Expression shape, construo de expresses booleanas dentro de Loop e Decide shapes, definir tempo de pausa na Delay shape, ou at mesmo configurar portas dinmicas de sada.

Usar regras, que mudam constantemente, em vez cdigo poder permite aos programadores no terem de refazer sistematicamente as suas aplicaes. Para mais informao: The Business Rules Framework

BizTalk Mapper Designer

Motor de regras (BRE)

Inclui o BizTalk Mapper Designer, integrado no Visual Studio, que possibilita efectuar transformaes de mensagens complexas de forma visual e extremamente simples.

O BizTalk Server inclui o Business Rules Framework onde podem ser isolados critrios de deciso de negcio. Sendo que os mdulos principais incluem o Business Rule Composer para construo de polticas (regras), o Rule Engine Deployment Wizard para as instalar no Run-Time Business Rule Engine. A tarefa da criao e alterao das regras poder no ser uma tarefa do programador. Os analistas, consultores ou responsveis de negcio podero cria-las e a qualquer momento actualizar as mesmas. O programador poder ento reutilizar as regras de negcio nas suas orquestraes para suportar uma variedade de cenrios como por exemplo para determinar o caminho de execuo de um processo de negcio, ou um valor a aplicar numa transaco. Mais que um parmetro aplicacional, este motor permite que o valor ou condio seja completamente dinmico e apenas determinado em contexto de runtime.

Na realidade, este editor est a gerar um mapa XSLT, e em determinadas situaes poder ser mais adequado usar snippets XSLT directamente no mapa. Estas opes dependem muito da experincia do programador. Em termos de estruturao/modularidade, estes mapas podem ainda ser enriquecidos com funes (Functoids), chamadas externas (SQL lookups, outros mapas) ou cdigo XSLT, .NET/C#, COM, VBscript.

Transaces, Excepes e Persistncia de dados

comum nas aplicaes Service-Oriented Architecture (SOA) ou Business Process, onde os processos podem abranger vrios endpoints (sistemas), as operaes no
39

A PROGRAMAR
M i c ro s o ft B i zTa l k Se rve r a o s o l h o s d o s p ro gra m a d o re s

poderem ser realizados num curto perodo de tempo, o que origina a que as transaces ACID no sejam as mais adequadas para este tipo de cenrios. Ao contrrio da programao tradicional, o BizTalk Server suporta dois tipos distintos de transaces: Atmicas: permite que uma transaco volte automaticamente para o seu estado anterior em caso de a operao no seja concluda com sucesso. Podemos desenhar orquestraes com suporte ACID (Atomic, Consistent, Isolated e Durable) configurando a Scope (ou mesmo ao nvel da orquestrao) como atmica. Longa durao: Estes processos podem ficar activos por dias, semanas ou por perodos de tempo mais longos, podem conter vrias transaces (nested transactions), e possibilita tratar excepes para recuperao de falha. Suporta consistncia e durabilidade. Entre vrias opes, pode-se configurar o tipo de transaco ao nvel da orquestrao:

O programador tambm tem a sua disposio a possibilidade de definir vrios blocos (Handlers) para tratamento de excepes:

Quando lidamos com processos de negcio, nomeadamente os de longa durao, necessitamos sempre de falar de persistncia dos dados por forma a salvaguardamos de falhas e podermos efectuar o reprocessamento a partir de uma determinado ponto do processo. A Orquestration engine persiste, automaticamente, o estado das instncias em execuo baseado no desenho das orquestraes efectuada pelo programador, existindo alguns eventos ou etapas em que despoletado a operao de persistncia, chamados pontos de persistncia: Ao nvel do BizTalk Engine: quando as instancias das orquestraes so suspensas, quando o sistema desligado de forma controlada, quando a engine determina hidratar/desidratar os processos ou quando uma instncia da orquestrao concluda. Ao nvel da Orquestrao: quando o final de uma scope transaccional alcanado, na execuo de outras orquestraes atravs da Start Orchestration shape, na Send Shape ou em breakpoints de debugging. A persistncia do estado das instncias inclui: o progresso actual da instncia, o estado de qualquer componente .NET que contm informao do estado e est a ser utilizado na orquestrao assim como os valores das mensagens e variveis. Para mais informao: BizTalk Orchestration Understanding Persistence points
40

Assim como definir a transao ao nivel do scope por forma a encapsular uma unidade de trabalho detro de um contexto de transaco:

A PROGRAMAR
M i c ro s o ft B i zTa l k Se rve r a o s o l h o s d o s p ro gra m a d o re s

Adaptadores

Inclui mais de 25 adaptadores que simplificam a integrao directa para as top Line of Business (LOB) Applications (tais como o Siebel, SAP, JD Edwards, Oracle ou Dynamics CRM), Base de dados (Microsoft SQL Server, Oracle, DB2) e outras tecnologias (Tibco, Java EE).

(EDI Batch), analisar os documentos, converter os arquivos EDI em arquivos XML e efectuar validaes EDI e/ou XSD. A pipeline de envio EDI permite converter arquivos XML em documentos X1 2 ou EDIFACT, codificar as mensagens e efectuar validaes XSD e/ou EDI.

A Trading Partner Management Interface permite que uma organizao defina as propriedades de processamento para os parceiros comerciais fazendo intercmbio EDI.

WCF LOB Adapter SDK

Fornece um modelo de programao enriquecido para desenvolvimento de adaptadores baseados em Windows Communication Foundation. (WCF LOB Adapter SDK).

Suporte poderoso e completo para EDI/AS2

Electronic Data Interchange (EDI) uma das formas mais comuns de comunicao electrnica entre organizaes (Facturas, encomendas, notas de dbito). Estes padres (EDIFACT, ASC X1 2) so projectados para leitura electrnica, e portanto inadequados para leitura humana, reflectindo troca estruturada de dados de negcios entre sistemas utilizando um formato de dados padronizado que garante a fiabilidade dos dados atravs de diferentes checksums. As aplicao BizTalk EDI contm pipelines, orquestraes e schemas que so teis e indispensveis para a capacidade de processar transaces de EDI. A pipeline de entrada EDI capaz de dividir os lotes EDI
41

Para mais informaes: EDI Support in BizTalk Server EDI Support in BizTalk Server 2000, 201 0

, 2006, 2009, and

Monitorizao de processos de negcio (BAM)

O Business Activity Monitoring ou BAM um mdulo que captura dados de negcio e milestones do processo permitindo que os analistas de negcios monitorizem e analisem os dados em tempo real.

A PROGRAMAR
M i c ro s o ft B i zTa l k Se rve r a o s o l h o s d o s p ro gra m a d o re s

O grande benefcio do BAM que proporciona a visibilidade sobre os processos de negcios. Este pequeno grande efeito, poder ser o ideal para envolver os responsveis de negcio na operao activa dos processos criando um feedback loop importantssimo para a melhoria contnua dos projectos de automao (BPA). Uma vez que a implementao do BAM muitas vezes apenas a definio do modelo e toda a implementao automatizada (geradores), o esforo para incluir o BAM muito simplificado para os programadores. Mais informaes: Business Activity Monitoring

Estas ferramentas permitem libertar os programadores da preocupao, na altura do desenvolvimento, de qual a informao que pretendem recolher e da implementao da monitorizao, uma vez que os analistas podem desenvolver o seu modelo com uma ferramenta extremamente familiar (Microsoft Excel) e o administrador poder posteriormente ligar o modelo com os processos utilizando a ferramenta Tracking Profile Editor.

BizTalk WCF Service Publishing Wizard e BizTalk WCF Service Consuming Wizard

Mesmo quando for preciso expor um processo como um Web Service, existem wizards que nos ajudam a criar tanto os projectos WCF, como na instalao destes no servidor Web (IIS). O mesmo acontece no caso de querermos incluir nos nossos processos, chamadas a outros Web Services. Estas ferramentas permitem aos programadores abstrarem-se de programao repetitiva, agilizando o processo de integrao.

BizTalk Flat File Schema Wizard

Uma dos padres mais antigos para a troca de mensagens a utilizao de arquivos texto (Flat Files) como como: CSV ou TXT, muitos deles customizados medida para os sistemas. Porm com a adopo do XML como formato de eleio na troca de mensagens, muitas vezes necessrio transformar arquivos texto em XML e vice-versa.

42

A PROGRAMAR
M i c ro s o ft B i zTa l k Se rve r a o s o l h o s d o s p ro gra m a d o re s

A ferramenta BizTalk Flat File Schema Wizard permite ao programador facilmente e de forma visual efectuar transformao de arquivos de texto posicionais: CABEALHOXXXXXXXXXXXXXXXXXXXX CORPOXXXXXXXXXXXXXXXXXXXXXXXX CORPOXXXXXXXXXXXXXXXXXXXXXXXX RODAPXXXXXXXXXXXXXXXXXXXXXXX

A definio das regras de parsing fica embebida no schema XSD, simplificando logo toda a reutilizao destes esquemas nos diferentes pontos do processo. Em qualquer ponto o documento poder ser novamente traduzido para flat-file pois a definio declarativa e simtrica.

Testes, debug e suporte ao Team Foundation Server

As ferramentas de desenvolvimento do BizTalk usam pastas, ficheiros e projectos do Visual Studio. Assim as equipas podem tirar partido de todo o ambiente ALM (Application Lifecycle Management) colaborando naturalmente com os demais programadores, gestores de projecto e testers que fazem parte da equipa. Claro que dentro do VS vo encontrar suporte para debug, seja dos orchestrations, ou dos mapas (XSLT), ou componentes de pipelines. Bem como para a realizao de Testes Unitrios e muitas outras ferramentas do Visual Studio (da Microsoft ou de outros fornecedores). Ou delimitado por smbolos: 1 999990;1 ;P01 1 0;1 ;1 ;201 1 0307; 1 999990;2;P0529;2;2;201 1 0307; 1 999990;3;P0530;3;3;201 1 0307;

Concluso

Conforme apresentado neste artigo, com o foco no desenvolvimento de solues de integrao empresarial, o BizTalk Server 201 0 simplifica a integrao de aplicaes, independentemente dos seus interfaces se encontrarem dentro (EAI), nos seus parceiros (B2B) ou alojados na cloud. Este tipo de middleware torna-se cada vez mais importante quando o nmero de endpoints cresce cada vez mais e o tipo de mensagens transaccionadas se torna cada vez mais crtico num mercado cada vez mais electrnico e automatizado.

AUTOR
Escrito por Sandro Pereira. Actualmente Senior Software Developer na empresa DevScope. Microsoft Most Valuable Professional (MVP) em Microsoft BizTalk. O seu principal foco de interesse so as tecnologias e plataformas de Integrao (EAI): BizTalk e SOAP / XML / XSLT e Net, que utiliza desde 2002. um participante bastante activo nos fruns da Microsoft (MSDN BizTalk Server Forums) e autor do blog http://sandroaspbiztalkblog.wordpress.com - Twitter: @sandro_asp
43

A PROGRAMAR
O E d i to r d e te xto VI M
Introduo
O editor de texto Vim, uma aplicao open source disponvel para os vrios sistemas operativos Unix-based, existindo tambm alguns ports para Windows, como o caso do cygwin, bem como diversas verses grficas. Para quem no conhece, o Cygwin uma espcie de ambiente unix e linha de comandos para o sistema operativo da Microsoft, no entanto no possvel atravs deste ambiente, correr aplicaes criadas nativamente para Linux, existindo uma necessidade de as recompilar. O seu conjunto alargado de funcionalidades, como o syntax-highlight, fazem com que este seja um editor de texto til para programadores, da a razo deste artigo. Com este artigo, pretendo fazer um "tour" pelo Vim, mais propriamente pela verso 7.3, no vou abordar todas as funcionalidades do mesmo, pois se o fizesse, talvez desse origem a um livro. O objectivo deste artigo que no fim do mesmo fiquem a saber os conceitos bsicos para desfrutarem do editor.

Utilizao do Syntax-Highlight
Uma das principais funcionalidades para programadores do vim o syntax highlight, que permite distinguir o cdigo mais facilmente, e consequentemente ser um excelente auxlio ao programador, como podemos ver na imagem seguinte: Esta funcionalidade, poder ser usada abrindo um ficheiro de cdigo, com a extenso apropriada, por exemplo, um ficheiro com o nome programa.c, ir ser aberto com o syntax highlight para c.

Instalar o Vim
Em muitas distribuies de Linux e no Mac OS X, o Vim j vem instalado, no entanto certas distribuies como o Linux Ubuntu no o trazem instalado, e a instalao dever ser feita abrindo uma janela do terminal e escrevendo o seguinte comando:
$ s u d o a pt-g et i n s ta l l vi m

Como abrir
Se utilizar um port para Windows, poder abri-lo como qualquer outro programa (menu iniciar ou acedendo ao executvel do mesmo), se utiliza cygwin, Linux ou Mac OS X, dever execut-lo atravs do terminal, existindo duas formas de o abrir: Se quisermos abrir um ficheiro j existente escrevemos o seguinte comando no terminal:
$ vi m < d i rec tori a e n ome d o fi c h ei ro>

Poder tambm utilizar o Software Center desta distribuio. Se utiliza Windows e no desejar instalar o Linux nem que seja recorrendo a uma mquina virtual, poder recorrer ao cygwin ou a uma verso grfica deste editor como a que se encontra no site http://www.vim.org.
44

Se quisermos especificar um nome para um novo ficheiro

A PROGRAMAR
O E d i to r d e te xto VI M

escrevemos o seguinte comando no terminal:


$ vi m < n ome d o fi c h ei ro> , c a s o es tej a n a mes ma d i rec tori a on d e o q u er c ri a r/ a bri r.

Para abrir o editor de texto vim com um ficheiro sem nome, podemos utilizar o seguinte comando no terminal:
$ vi m

escrever quando abre o vim. Para passar do comand mode para o insert mode, premimos, tal como j foi referido a tecla i, para fazer o contrario (insert mode para command mode), usa-se a tecla esc. Last Line Mode um submodo do modo Command, para aceder ao mesmo, prime-se a tecla : no modo Command.

O Modo Insert

Iremos ento ver o ecr inicial do vim:

Quando nos encontramos no modo insert, ir aparecer essa indicao no rodap do terminal, tal como podemos ver na imagem seguinte:

Se nunca trabalhou com este editor de texto, provavelmente voc est neste momento a interrogar-se como que eu crio um novo documento nisto?, como que eu comeo a escrever?. O motivo de no conseguir escrever nada, porque voc no se encontra no modo que possibilita escrever, ou seja o modo insert, mas afinal o que so os modos do vim? Vamos ver na prxima seco.

Este modo, bastante fcil de usar, as teclas das setas movem o cursor, e poder escrever livremente usando as teclas. Para guardar o documento, necessrio recorrer ao modo command, para isso, e tal como anteriormente referido, prime-se a tecla esc.

Os modos do vim
O vim possui 3 modos de edio, o modo Insert, o modo Command e o Last Line Mode (modo ltima linha), vamos ver quais as funes de cada um deles:

O Modo Command
Comandos para Mover o Cursor
O cursor pode fazer movimentos simples e mltiplos neste modo, uma das caractersticas do Vim o facto de poder usar teclas do teclado principal para alm das do cursor. Este sistema tem muitos fs, uma vez que possibilita mover o cursor sem ser necessrio tirar os dedos do centro do

Insert Permite inserir texto, sendo por isso o modo bsico

do editor de texto, e possibilita escrever. Command Permite inserir comandos, que permitem executar as vrias funcionalidades do editor, como guardar e formatar o texto, fazer tipos de deslocamento especficos, etc. Para introduzir estes comandos, usamos as teclas do teclado, por exemplo, para entrar no modo insert, usamos a tecla i, que a tecla que dever premir para comear a
45

A PROGRAMAR
O E d i to r d e te xto VI M

teclado. Na tabela abaixo, podemos ver uma listagem das teclas utilizadas para os movimentos singulares:

Se tentar gravar um ficheiro com o mesmo nome de um j existente, poder usar o comando :w! para fazer overwrite, ou seja substituir o ficheiro mais antigo pelo novo

Edies Simples
Quando inserimos texto no ficheiro, este raramente est perfeito, muitas vezes encontramos erros. por este motivo que o Vim, contm um conjunto de ferramentas que nos permitem fazer algumas edies simples ao documento. Na tabela seguinte, podemos ver alguns dos comandos mais utilizados para editar o documento:

tambm possvel efectuar movimentos mltiplos atravs destas teclas de movimentos simples precedendo a tecla com o nmero de vezes que pretendemos carregar, por exemplo, se quisermos avanar quatro caracteres para a direita, em vez de premirmos 4 vezes a tecla "l", podemos escrever "4l". Existem tambm mais algumas formas teis de movimentar o cursor:

Gravar o documento
Para gravar o documento, necessrio tambm recorrer ao modo de comando, para isso utilizam-se os seguintes comandos: A tecla c tem como funo substituir texto e tem a vantagem de podermos dizer quanto texto queremos alterar, combinando-a com teclas de movimento. Desta forma, eis algumas das possibilidades de utilizao desta tecla para que melhor fiquem a perceber a sua utilizao:

Com estes trs exemplos, em princpio dever compreender como funciona a tecla c. Vejam as teclas de movimento anteriormente referidas e abuse desta funcionalidade.
46

A PROGRAMAR
O E d i to r d e te xto VI M

deslocar (fazer scroll) ao ecr:

Mover Texto
Uma vez que o Vim, guarda temporariamente num buffer o texto eliminado, possvel restaur-lo premindo a tecla p. Por isso, o procedimento para mover texto neste editor apagar o que se pretende mover, e restaurar no local desejado com a tecla p. No entanto tenha em ateno que aps qualquer outra edio, o texto limpo, por isso restaure sempre antes de qualquer outra edio.

Concluso
Termina assim, este tour pelo vim. Agora que j conhece os conceitos bsicos deste editor e se estiverem interessado em perceber mais poder encontrar diversos sites que explicam as funcionalidades avanadas deste editor. Para mim, este um excelente editor, o facto de no dar uso ao rato, faz com que tenha como pblico-alvo os mais puristas do teclado, no entanto, e apesar deste argumento, isso no significa que as pessoas que gostam do rato, no o possam usar, pois este editor bastante simples de utilizar, e a grande quantidade de comandos disponveis, tornam mais rpidas certas operaes. Se precisar de ajuda, o vim possui uma srie de documentos, bastando para aceder aos mesmos, entrar no Command Mode, e digitar o comando :help. Um bom stio para comear a cheat-sheet disponvel em http://www.tuxfiles.org/linuxhelp/vimcheat.html, onde poder consultar outros comandos teis.

Copiar Texto
Para copiar texto no vim, usa-se a tecla y seguida de uma tecla de movimento, ou da tecla y para copiar a linha em que o cursor se encontra. Para colar, usa-se a tecla p. Para obter mais informaes, acerca de alguns exemplos de teclas de movimento que poder usar, consulte as tabelas referentes aos movimentos.

Repetir ou anular o comando anterior


Se desejar fazer vrias vezes o mesmo comando, coloque o cursor no local onde o deseja correr e prima a tecla ponto (.). Ir aplicar novamente o comando anterior. Caso tenha cometido um erro de edio, recorra tecla u, para anular a ltima aco.

Deslocamentos no ecr
Existem tambm algumas sequncias de teclas que podemos digitar no modo command e que permitem

AUTOR
Escrito por Fbio Domingos Estudante de Gesto de Sistemas de Informao na Escola Superior de Cincias Empresariais do Instituto Politcnico de Setbal, tem como principal hobbie a informtica, nomeadamente as reas de programao, bases de dados e IT Support. moderador global do forum Portugal-a-Programar, membro do Staff desta revista e por vezes contribui com solues para a comunidade Experts-Exchange. Blog pessoal - @fdomingos

47

COLUNAS

CORE DUMP - Fazer mal = Rpido? VISUAL (NOT) BASIC - Introduo ao OpenXML SDK

CORE DUMP
Fa ze r m a l = R p i d o ?
Em conversa recente com um programador sobre uma determinada opo que no me parecia a melhor, este respondeu-me que teve de ser assim porque no havia tempo. Esta justificao, ou fatalidade, comum no meio da programao, sendo impossvel a um profissional desta rea no se ter cruzado com ela. Todos ns, mesmo os que no so profissionais desta rea, j olharam para o seu trabalho e o criticaram. Isso excelente dado que indica que sabemos fazer melhor. Ento porque no o fazemos? S porque havia pouco tempo? Ouvi tantas vezes esta explicao, ou desculpa, que tal me levou a parar e pensar um pouco sobre a mesma. Sem dvida que os prazos tm poderes mgicos sobre os projectos. Quando um dead-line se aproxima comea a Silncio pensativo... Resposta inconclusiva... A verdade que a larga maioria das pessoas aceita esta expresso como um dogma. Para fazer mais rpido tenho de fazer mal parece uma fatalidade, qual fado de quem ganha a vida a programar. No entanto, quando confrontadas com o facto de que demorariam mais tempo se fizessem bem, nenhuma, at ao dia de hoje, me respondeu que sim, que necessitaria de mais tempo para fazer as coisas de forma correcta. A minha teoria, obviamente no provada cientificamente, de que com a presso, a maioria das pessoas entra em

stress e baixa os seus prprios padres de qualidade, aceitando como mdio um trabalho que rejeitariam em condies normais. Em casos mais crticos, esta baixa de
padres acompanhada por trashing mental, onde as pessoas deixam de conseguir raciocionar de forma clara, afectando assim o resultado final do seu trabalho.

magia: os testes passam para segundo plano, a documentao resume-se a pouco mais do que cdigo fonte e o cdigo fonte comea a ser escrito de forma menos ortodoxa... E precisamente neste ltimo ponto
que reside a origem da justificao de cdigo mal feito: a tal falta de tempo...

Seguindo um raciocnio lgico, corroborado ao longo de anos a fio pela expresso falta de tempo => mau cdigo, qualquer um poder acreditar que tal verdade. Para provar se esta expresso verdadeira ou falsa comecei a perguntar a todos quantos quantos usam este dogma, a seguinte questo: Dizes que fizeste mal porque era

Sejam quais forem as razes na verdade fazer mal no implica que se faa mais rpido. Obviamente haver excepes, mas mesmo sobre a presso de um dead line devemos ser capazes de manter a cabea fria e ser fieis aos nossos prprios padres de forma a no comprometer o resultado final do nosso trabalho. Numa rea onde a presso de dead lines agressivos demasiado recorrente, no ceder e saber manter os seus padres um factor valiosos que diferencia os bons profissionais. No entanto, e infelizmente, continuo a ouvir esta expresso demasiadas vezes...

mais rpido. Isso quer dizer que se fizesses bem demorarias mais tempo?
AUTOR

Escrito por Fernando Martins Faz parte da gerao que se iniciou nos ZX Spectrum 48K. Tem um Mestrado em Informtica e mais de uma dcada de experincia profissional nas reas de Tecnologias e Sistemas de Informao. Criou a sua prpria consultora sendo a sua especialidade a migrao de dados.

50

VISUAL (NOT) BASIC


I n tro d u o a o O p e n XM L S D K
Resumidamente, o OpenXML um padro aberto (ISO) de arquivos para documentos, folhas de clculo e apresentaes, que baseado em XML e que pode ser implementado por diversas aplicaes em diversas plataformas. A sua principal funo poder alterar e visualizar o contedo dos documentos atravs de diversas aplicaes, desenvolvidas em diferentes plataformas, garantindo assim a fidelidade da informao sem qualquer perda de dados. Uma grande vantagem desta estrutura a possibilidade de aceder a uma determinada parte do arquivo sem que seja necessria a sua leitura total, o que leva a ganhos de tempo no que toca a arquivos de grande dimenso.

Como a sua estrutura


Um arquivo no formato OpenXML um arquivo ZIP que contem uma estrutura de pastas, arquivos XML e mais qualquer outro objecto que esteja presente no documento. Dai o formato ocupar substancialmente menos do que as verses mais antigas (*.doc, *.xml, *.ppt) Se renomearmos, por exemplo, um ficheiro *.xlsx para *.zip podemos ver a sua estrutura e os ficheiros XML que compem este documento. Usando o Open XML SDK 2.0 Productivity Tool permite-nos tambm ver a estrutura hierarquicamente e o seu contedo. Neste exemplo podemos ver que o Book1 .xlsx tem trs Worksheets (Sheet1 , Sheet2 e Sheet3) e que os textos das worksheets so guardados no ficheiro SharedString.xml.

Uma grande vantagem desta estrutura a possibilidade de aceder a uma determinada parte do arquivo sem que seja necessria a sua leitura total
Este SDK tambm oferece suporte a programao atravs de LINQ para XML, o que torna a programao com XML muito mais fcil do que o tradicional modelo de programao.

O que pode ser feito com OpenXML


O OpenXML permite, como j foi referido anteriormente, a manipulao e criao de documentos, folhas de clculo e apresentaes, para tal existem as seguintes subcategorias:

WordProcessingML - Manipulao de documentos de


texto (Word)

SpreadSheetML - Manipulao de folhas de clculo (Excel) PresentationML - Manipulao de apresentaes


(PowerPoint) Para manipular facilmente este tipo de ficheiros, existe o Open XML SDK que gratuito e de fcil/rpida instalao.

51

VISUAL (NOT) BASIC


I n tro d u o a o O p e n XM L SD K

Arquitectura
O Open XML SDK implementado camadas, a partir de uma camada de base que vai subindo a uma de maior nvel de funcionalidade. O diagrama abaixo mostra o esquema do Open XML SDK.

Stream Reading/Writing : O seu funcionamento


semelhante ao funcionamento das classes XmlReader e XmlWriter, mas so mais fceis de usar

O pen XML File Format

Shema Level Validation : Esta camada facilita a depurao


e validao de documentos Open XML

Additional Semantic Validation : Fornece informaes


adicionais com base em restries e sintaxe

System Support .NET Framework 3.5: Simplifica a manipulao dos


ficheiros XML mais simples atravs de Linq to XML

Potencial Helper Functions Hight Level Functions : um auxiliar com exemplos de


cdigo para executar operaes comuns. Estas funes tm como funo modificar o XML

System.IO.Packaging : Adiciona, edita e remove os


ficheiros XML contidos no pacote

Open XML Schemas : Estes esquemas so a base do


Open XML SDK que actualmente baseado no padro ECMA-376

Open XML File Format Base Level Open XML Packaging API : Este componente construdo
sobre o componente System.IO.Packaging. Em vez de retornar partes do documento, retorna classes de tipos e objectos.

Vantagens
A principal vantagem de usar o Open XML SDK que totalmente suportado no servidor, ao contrrio dos aplicativos do Microsoft Office. No necessita de ter o Microsoft Office instalado, para criar ficheiros neste formato, e alm disso, h uma enorme vantagem de desempenho no desenvolvimento com o Open XML quando se trata de um grande nmero de documentos. Podem ser criados milhares de documentos em segundos!
52

Open XML Low-Level DOM : A grande vantagem deste

componente que se pod e ver facilmente as propriedades contidas numa determinada classe atravs do IntelliSense

VISUAL (NOT) BASIC


I n tro d u o a o O p e n XM L S D K

O Open XML SDK um formato especializado na manipulao e criao de pacotes de Open XML. O SDK totalmente compatvel com a estrutura e esquema do Open XML Formats.

escolham a referncia DocumentFormat.OpenXML, no separador .NET

A principal vantagem de usar o Open XML SDK que totalmente suportado no servidor ... no necessita de ter o Microsoft Office instalado
Limitaes
No um substituto para o Microsoft Office e alm disso, necessrio compreender a estrutura dos formatos para usar o Open XML SDK. No possvel converter formatos Open XML para outros formatos, como HTML ou XPS. No garante a validade do documento quando se opta por manipular directamente o XML. No possui um layout ou funcionalidades de recalculo

Exemplos de utilizao
Exemplo 1
Este exemplo mostra como efectuar uma simples exportao do contedo de uma DataGridView para uma folha de Excel, usando um Template

Utilizao
O SDK pode ser obtido atravs desta hiperligao: http://bit.ly/jkaykK

Necessrio: OpenXMLSDKv2.msi aqui que est a Dll


que vamos precisar

Criamos um template:

Opcional : OpenXMLSDKTool.msi uma espcie de

explorador do arquivo (Open XML SDK 2.0 Productivity Tool), onde se pode visualizar o seu esquema (rvore) de construo, documentao, etc.. Tambm dispe de um gerador de cdigo, mas apenas para C#. Depois de instalado, ter de ser referenciado. Para isso
53

Agora guardamos o nosso template com o nome

VISUAL (NOT) BASIC


I n tro d u o a o O p e n XM L SD K

template.xlsx

M y. Res ou rc es . Templ a te, F a l s e) ' Abre o templ a te c ri a d o U s i n g Doc As S prea d s h eetDoc u men t = S prea d s h eetDoc u men t. Open ( fi c h ei ro, Tru e) ' Abre o workbookPa rt Di m Pa rte As WorkbookPa rt = Doc . WorkbookPa rt Di m WS h eet As Works h eetPa rt = Pa rte. Works h eetPa rts . F i rs t( ) ' Ac ed e a os d a d os n el a c on ti d os Di m Da d os As S h eetDa ta = WS h eet. Works h eet. GetF i rs tCh i l d ( Of S h eetDa ta ) ( ) ' Al g u ma s va ri a vei s q u e va mos prec i s a r ' n o c i c l o q u e s e s eg u e Di m R As Row = N oth i n g Di m C As Cel l = N oth i n g ' Perc orre tod a s a s l i n h a s d a Gri d F or E a c h L i n h a As Da ta Gri d Vi ewRow I n Dg v. Rows ' Cri a u ma n ova l i n h a

Depois de termos o template criado, vamos adicionar aos resources da aplicao

Depois do template pronto vamos passar ao cdigo. Primeiro devem-se importar os namespaces necessrios
I mports Doc u men tF orma t. Open Xml I mports Doc u men tF orma t. Open Xml . Pa c ka g i n g I mports Doc u men tF orma t. Open Xml . S prea d s h eet

R = N ew Row R. RowI n d ex = CType( L i n h a . I n d ex + 2 , U I n t32 Va l u e) ' Perc orre a s c ol u n a s d a Gri d F or E a c h Col u n a As Da ta Gri d Vi ewCol u mn I n Dg v. Col u mn s C = N ew Cel l C. Cel l Referen c e = Col u n a . N a me & L i n h a . I n d ex C. Da ta Type = Cel l Va l u es . S tri n g ( ) ' Ad i c i on a o va l or c ol u n a C. Cel l Va l u e = N ew Cel l Va l u e( L i n h a . Cel l s ( Col u n a . I n d ex) . Va l u e. ToS tri n g ( ) )

Cdigo do boto exportar:


Pri va te S u b Btn E xporta r_Cl i c k( ) H a n d l es Btn E xporta r. Cl i c k ' E s c reve o templ a te n u ma pa s ta tempor ri a Di m fi c h ei ro As S tri n g = M y. Compu ter. F i l eS ys tem. S pec i a l Di rec tori es . Tem p & " \L i s ta Cl i en tes . xl s x" M y. Compu ter. F i l eS ys tem. Wri teAl l Bytes ( ,
54

VISUAL (NOT) BASIC


I n tro d u o a o O p e n XM L S D K

Importao dos namespaces necessrios


' Ad i c i on a a c ol u n a l i n h a R. Appen d Ch i l d ( C) N ext ' Ad i c i on a a l i n h a fol h a Da d os . Appen d Ch i l d ( R) N ext ' Cri a u m n ovo d oc u men to ' Gu a rd a o d oc u men to a c tu a l e fec h a -o Pa rte. Workbook. S a ve( ) Doc . Cl os e( ) End Usi ng ' Depoi s d e tu d o fei to, a bre-s e a fol h a Proc es s . S ta rt( fi c h ei ro) End Sub ' Cri a u ma n ova pa rte d o d oc u men to Di m Pa rte As M a i n Doc u men tPa rt = Doc . Ad d M a i n Doc u men tPa rt U s i n g Doc As Word proc es s i n g Doc u men t = Word proc es s i n g Doc u men t. Crea te( fi c h ei ro, Word proc es s i n g Doc u men tType. Doc u men t) Di m fi c h ei ro As S tri n g = " C: \E xporta c a oWord . d oc x" I mports Doc u men tF orma t. Open Xml I mports Doc u men tF orma t. Open Xml . Pa c ka g i n g I mports Doc u men tF orma t. Open Xml . Word proc es s i n g

Cdigo do boto exportar

E este o resultado:

' Cri a u ma n ova es tru tu ra Pa rte. Doc u men t = N ew Doc u men t ' Cri a o c orpo d o d oc u men to Di m Corpo As Bod y = Pa rte. Doc u men t. Appen d Ch i l d ( N ew Bod y( ) ) ' Ad i c i on a u m pa ra g ra fo

Como podemos ver, esta operao foi efectuada em pouco tempo, com simplicidade e rapidez.

Di m Pa ra g ra fo As Pa ra g ra ph = Corpo. Appen d Ch i l d ( N ew Pa ra g ra ph ( ) ) ' E s c reve u m texto Di m Texto As Ru n = Pa ra g ra fo. Appen d Ch i l d ( N ew Ru n ( ) ) Texto. Appen d Ch i l d ( N ew Text( TxtTexto. Text) ) ' F ec h a o d oc u men to Doc . Cl os e( ) End Usi ng ' Abre o d oc u men to Proc es s . S ta rt( fi c h ei ro)
55

Exemplo 2
Este exemplo mostra como criar uma folha de Word de raiz e colocar l algum texto

VISUAL (NOT) BASIC


I n tro d u o a o O p e n XM L SD K

E este o resultado:
' F ec h a o d oc u men to Doc . Cl os e( ) End Usi ng

Exemplo 3
Este exemplo mostra como ler pargrafos de uma folha de Word. Importao dos namespaces necessrios
I mports Doc u men tF orma t. Open Xml I mports Doc u men tF orma t. Open Xml . Pa c ka g i n g I mports Doc u men tF orma t. Open Xml . Word proc es s i n g

Concluso
Neste artigo foi feita uma pequena abordagem ao OpenXML SDK 2.0 Productivity Tool, onde foi possvel ver a sua arquitectura, o que possvel fazer e quais so as sua vantagens e desvantagens. Resta dizer que uma excelente alternativa programao directa nos objectos do Microsoft Office.

L o texto e escreve na consola


' Cri a u m n ovo d oc u men to Di m fi c h ei ro As S tri n g = " C: \E xporta c a oWord . d oc x" ' Abre o d oc u men to a n teri ormen te c ri a d o U s i n g Doc As Word proc es s i n g Doc u men t = Word proc es s i n g Doc u men t. Open ( fi c h ei ro, F a l s e) ' Perc orre a c ol ec o d e pa r g ra fos F or E a c h Pa ra g ra fo I n Doc . M a i n Doc u men tPa rt. Doc u men t. Bod y Con s ol e. Wri teL i n e( Pa ra g ra fo. I n n erText) N ext

Algumas Referncias
Welcome to the Open XML SDK 2.0 for Microsoft Office http://bit.ly/84hC3 Office 201 0 Sample: Open XML SDK 2.0 Code Snippets for Visual Studio 201 0 http://bit.ly/azN4Pw OpenXML Developer http://openxmldeveloper.org Open XML Explained Ebook http://openxmldeveloper.org/archive/2007/08/1 3/1 970.aspx

AUTOR
Escrito por Pedro Martins tcnico Nvel III em Informtica/Gesto pela Escola Profissional Cisave Exerce funes de programador numa multinacional sediada em Portugal onde trabalha com vrias tecnologias da Microsoft .NET. moderador do quadro Visual Basic.NET e ASP.NET na comunidade Portugal@Programar e tambm faz parte do staff da WikiTeam

56

COMUNIDADES
NetPonto - Certificaes Microsoft

COMUNIDADE NETPONTO
C e rti fi c a e s M i c ro s o ft
Neste artigo pretendo abordar o que a certificao Microsoft e clarificar o leitor sobre o percurso a percorrer para obter a certificao e quais os benefcios. Decerto que os mais interessados neste tema, j se devem ter deparado com as seguintes dvidas: O que a certificao? Quais os benefcios? Como comear? Que exame tenho que realizar? Onde devo realizar os exames? Quanto custa? Como so os exames? Como estudar? Quanto tempo demora obter? Que ttulos posso obter? A Certificao Microsoft no mais do que formao profissional, que no exige que um aluno tenha curso superior para se tornar um profissional qualificado para desenvolver e dar suporte s tecnologias Microsoft. o mtodo mais rpido e reconhecido para obter conhecimento sobre os produtos e tecnologias Microsoft que esto em uso ou que acabaram de ser lanados no mercado. A certificao atribuda de acordo com a aprovao nos exames oficiais da Microsoft, desta forma um aluno que obtenha aprovao em um exame, torna-se Microsoft Certified Professional (MCP) e emitido por parte da Microsoft, um documento comprovativo da sua capacidade e qualificao, garantindo desta forma a diferenciao no mercado. A Microsoft oferece uma srie de certificaes que qualificam o profissional de acordo com a sua rea de tecnologia. Os principais benefcios que se destacam com a obteno da certificao so: Reconhecimento Profissional Produtividade Certificao Internacional Informao Privilegiada Eventos Descontos O vasto leque de produtos e tecnologias Microsoft origina que estejam disponveis muitos exames, o melhor ser filtrar pela rea para a qual se pretende obter certificao. As reas disponveis so: Server technologies Developer tools and applications Microsoft Dynamics Windows Microsoft Office Security Other solutions Escolhida a rea em que o leitor se enquadra ou pretende obter certificao, coloca-se a grande questo: Como comear? Escolher a certificao que pretende fazer; Escolher o primeiro exame;

Os profissionais com Certificao destacam-se no panorama laboral das TI

Microsoft

58

COMUNIDADE NETPONTO
C e rti fi c a e s M i c ro s o ft

Para escolhermos a certificao a realizar, o leitor deve pensar no(s) objectivo(s) atingir. Por exemplo, caso esteja interessado em melhorar os conhecimentos do dia-a-dia, deve-se focar na certificao que esteja relacionada com a(s) tecnologia(s) ou produto(s) que usa mais. Suponhamos que no dia-a-dia desenvolve aplicaes usando Silverlight, ento aconselhado a realizar o exame 70-506 - TS: Silverlight 4, Development e em caso de sucesso obtm o ttulo de Microsoft Certified Technology Specialist (MCTS): Silverlight 4, Development. A certificao est hierarquizada da seguinte forma:

Nota: 1 . O grau dos vrios nveis aumenta de baixo para cima. Por exemplo, um Microsoft Certified IT Professional ter como requisito, pelo menos, a obteno de um ttulo de Microsoft Certified Techonology Specialist, que por sua vez implica a aprovao em pelo menos um exame. 2. O seguinte Professional Career Chart, permite ajudar a orientar no percurso profissional, consulte em http://bit.ly/mQHuBn

Mais frente iro ser apresentadas as certificaes e os respectivos ttulos. Os exames podem ser realizado em qualquer centro de exames Microsoft, em Portugal temos vrios, como a Ciclo, a Rumos, a Galileu, a Actual Training, etc. Todos estes centros tambm so centros Prometric, podendo por isso usar o site da Prometric para efectuar a marcao do exame a que prope, sendo o custo actual de cada exame 1 40. Saliento que ao efectuar o registo atravs de um centro o valor poder ter valor de IVA acrescido. Os nveis mais comuns entre os profissionais so: Microsoft Technology Associate, Microsoft Certified Techonology Specialist, Microsoft Certified IT Professional / Professional Developer, Microsoft Office Specialist. Enquanto que Microsoft Certified Master e Microsoft Certified Architect so nveis muito exigentes, com um percurso longo e para o qual preciso requisito muito especficos e uma experincia e conhecimentos avanados, este nveis normalmente so obtidos no Estados Unidos e o custo deles muito elevado. So poucos os profissionais que obtm estes ttulos. Em Portugal temos alguns profissionais com estes ttulos, no entanto no consigo quantificar.
59

At dia 30 de Junho de 201 1 , poder usufruir da possibilidade de ter um desconto de 1 5-25% no valor do exame e ainda a second shots, isto , a 2 oportunidade para realizar o exame sem pagar mais por isso. Para mais informaes consulte o seguinte link: http://bit.ly/jSuNre

Para o leitor que seja estudante, chamo ateno que

COMUNIDADE NETPONTO
C e rti fi c a e s M i c ro s o ft

possvel at ao dia 30 de Junho de 201 1 , realizar uma certificao sem qualquer custo. Para mais informaes consulte o seguinte link: http://bit.ly/l5N43t

Webcasts do MSDN e Comunidades Sesses dos Eventos da Microsoft - PDC, Mix, TechEd primeira vista poder achar que existem muitos recursos, no entanto no necessrio que tenha que ter todos em conta. Associado ao ritmo de estudo, tipo de estudo, disponibilidade e maturidade, assim ser definido o tempo de preparao para um exame. preciso ter ateno quando se marca o exame, deve-se ter em conta um perodo de tempo suficiente para ficar bem preparado e ao mesmo tempo no ficar com intervalo muito grande para no dispersar por outras coisas. Irei de seguida apresentar os ttulos que se podem obter e os respectivos exames, de acordo com a tecnologia ou produto em causa.

Nota: Um exame quando marcado tem um prazo para poder ser alterado ou cancelado, no entanto preciso apresentar uma justificao vlida. A estrutura dos exames varia de tecnologia para tecnologia ou de produto para produto, tanto em termos de tempo disponvel para realizar a prova ou o tipo e nmero de questes. Para saber mais sobre o formato dos exames visita as seguintes referncias: Exam Formats: http://bit.ly/fsA9f5 Microsoft Certification Exam Demo - http://bit.ly/fWoFyW Para alm da experincia ser um factor fundamental para a realizao do exame, nem sempre isso um um dado adquirido. Com experincia ou no sempre bom realizar um estudo estruturado e para ajudar nesse estudo pode-se ter em conta: Os objectivos de cada exame, pois estes apresentam todo o contedo abordado no exame. Cursos presenciais nos centros Microsoft Cursos Oficiais da Microsoft On-line: http://bit.ly/mRTUvj - atravs do portal Microsoft e-Learning, pode fazer diversos cursos on-line com preos bastante reduzidos, comparado com os cursos presenciais. Cursos do Programa RampUp: http://bit.ly/lk49d8 - O RampUp uma iniciativa da Microsoft onde pode fazer alguns cursos on-line totalmente gratuitos. ideal para quem iniciante em um produto ou tecnologia! Training Kits da Microsoft Press - Podem ser comprados na Microsoft Press UK, Amazon, etc. ) Exames Simulados - Existem vrias empresas que fornecem exames simulados, para que possa praticar antes de fazer o exame real, como por exemplo a MeasureUp ou Self-Test Software Prepare o seu Prprio Plano de Estudos - No site da Microsoft Learning pode encontrar os Learning Guides para cada exame de certificao, contendo todos os tpicos que so abordados no exame em questo.
60

Microsoft Visual Studio and Microsoft .NET Framework technologies


Percurso para obteno do ttulo - Microsoft Certified Techonology Specialist (MCTS)
.NET Framework 3.5 - Visual Studio 2008

.NET Framework 4.0 Visual Studio 201 0

COMUNIDADE NETPONTO
C e rti fi c a e s M i c ro s o ft

O guia de preparao para Microsoft VS and Microsoft .NET Framework est disponvel em http://bit.ly/9sqIA5

Percurso para obteno do ttulo - Microsoft Certified Professional Developer (MCPD)


.NET Framework 3.5 Visual Studio 2008

Microsoft SQL Server Technologies - SQL Server 2008


Percurso para obteno do ttulo - Microsoft Certified Techonology Specialist (MCTS)

Percurso para obteno do ttulo - Microsoft Certified IT Professional (MCITP)

.NET Framework 4.0 Visual Studio 201 0

Nota: Para obter cada um dos ttulos de MCITP requerido um MCTS. O guia de preparao para Microsoft SQL Server Technologies - SQL Server 2008 est disponvel em http://bit.ly/9mEOTK
61

COMUNIDADE NETPONTO
C e rti fi c a e s M i c ro s o ft

Microsoft Office System Technologies


Percurso para obteno do ttulo - Microsoft Certified Techonology Specialist (MCTS)
SharePoint 2007

O guia de preparao para Microsoft Office System Technologies est disponvel em http://bit.ly/jeiqiz

Microsoft Exchange Server Technology


Percurso para obteno do ttulo - Microsoft Certified Techonology Specialist (MCTS)

Percurso para obteno do ttulo - Microsoft Certified IT Professional (MCITP)


SharePoint 201 0

Project Server 201 0 O guia de preparao para Microsoft Exchange Server Technology est disponvel em http://bit.ly/m1 8WvA Project Server 2007

Microsoft Virtualization Technology


Percurso para obteno do ttulo - Microsoft Certified Techonology Specialist (MCTS)

Percurso para obteno do ttulo - Microsoft Certified IT Professional (MCITP)


SharePoint 201 0

Percurso para obteno do ttulo - Microsoft Certified IT Professional (MCITP)


O guia de preparao para Microsoft Virtualization Technology est disponvel em http://bit.ly/m1 8WvA
62

COMUNIDADE NETPONTO
C e rti fi c a e s M i c ro s o ft

Windows 7
Percurso para obteno do ttulo - Microsoft Certified Techonology Specialist (MCTS) Percurso para obteno do ttulo - Microsoft Certified IT Professional (MCITP)

Percurso para obteno do ttulo - Microsoft Certified IT Professional (MCITP)


O guia de preparao para Windows Server est disponvel em http://bit.ly/hr6tZk Em concluso, a certificao Microsoft uma mais-valia no percurso profissional de um profissional de TI, dado a possibilidade ao profissional gerir todo o processo de certificao consoante a sua disponibilidade e objectivos. O guia de preparao para Windows 7 est disponvel em http://bit.ly/jUjHXw

Referncias:

Windows Server
Percurso para obteno do ttulo - Microsoft Certified Techonology Specialist (MCTS)

Certificaes Microsoft: http://bit.ly/f7IN3o Apresentao - Nova Gerao de Certificao Microsoft TechDays 201 0: http://bit.ly/dJQTPk Microsoft Certification Exams: http://bit.ly/ewmmbi Microsoft Certification Tutorial: http://bit.ly/hrDvYc Learn about becoming an MCTS: http://bit.ly/dIXbXA Learn about becoming an MCITP: http://bit.ly/f4AEWS Learn about becoming an MCPD: http://bit.ly/fuW70V Learn about becoming an MOS: http://bit.ly/hOfWpe Explore Careers: http://bit.ly/iVqHxN Career Portal Home: http://bit.ly/iDNDmv IT Manager Portal: http://bit.ly/mA0S4h Student Career Portal Home: http://bit.ly/iyI4fU

AUTOR
Escrito por Sara Silva licenciada em Matemtica Especialidade em Computao, pela Universidade de Coimbra, actualmente Software Developer no Porto. O entusiasmo pela rea resultou na obteno dos ttulos de Microsoft Certified Profissional Developer Windows 3.5, Microsoft Certified Tecnology Specialist WPF 3.5, WPF 4 e Windows Forms. Faz parte de vrias comunidades, tendo uma participao activa na Comunidade NetPonto e no P@P.
63

NOTICIAS
Fe l i z An i ve rs ri o P@ P
A comunidade Portugal-a-Programar fez 6 anos de existncia no dia 28 de Maio de 201 1 . So vrios anos de WIKI
trabalho e dedicao, de diversos colaboradores voluntrios, para que tenha sido possvel criar e fazer crescer uma comunidade de programadores na lngua Portuguesa. Aproveitamos para divulgar alguns nmeros do P@P:

FRUM

A wiki da comunidade tem tido tambm um crescimento importante (mdia de 1 2.500 visualizaes/ms ). No primeiros meses de 201 1 foram efectuadas vrias alteraes e remodelaes que tm sido correspondidas com mais visitas. Esperamos que possa crescer ainda mais.

Mas h mais ...


Nos ltimos meses o crescimento do frum da comunidade tem sido muito significativo, com uma mdia de 1 .1 22.034 visualizaes por ms , recuperando uma quebra no primeiro semestre de 2009. So sem dvida bons indicadores para o futuro!

REVISTA PROGRAMAR
A revista PROGRAMAR sem dvida um dos projectos mais importantes da comunidade, estando neste momento num dos melhores perodos de sempre. Embora as primeiras edies tenham mais downloads, por estarem disponveis mais tempo, as ltimas edies (a partir da edio n 25) tm tido os melhores resultados nos primeiros dois meses de lanamento e com uma mdia de 1 4.375 downloads por edio.

20.000 membros (23 novos membros por dia) 43.000 tpicos (28 novos tpicos por dia) 390.000 mensagens (200 novas mensagens por dia) 28 edies da revista PROGRAMAR 208 artigos na revista PROGRAMAR 1 1 0 redatores j contriburam na revista PROGRAMAR 676 artigos/snippets na Wiki
Estes so apenas alguns dos muitos poderiam ser apresentados! nmeros que

Numa iniciativa de divulgao do 6 aniversrio, a Microsoft apoiou-nos, oferecendo t-shirts a todos os que participaram e divulgaram a iniciativa nos seus blogs e redes sociais.

Agradecemos desde j Microsoft, pelo apoio, e a todos os que contribuem diariamente para o crescimento desta comunidade!

64