Revista programar 29
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,421
On Slideshare
1,421
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
21
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. EditorialEDITORIAL EQUIPA PROGRAMAR Hacktivismo Coordenadores Segundo a Wikipédia a palavra hacktivismo vem da junção entre Hack e António Silva Activism (Hacktivism em inglês), e nos últimos tempos tem sido bastante Fernando Martins usado por muitos. Em cerca de um mês e meio a Sony foi atacada pelo menos quatro vezes, e pelo menos inicialmente o suposto motivo era o Editor hacktivismo, e a Sony chegou mesmo a acusar o grupo Anonymous Igor Nunes referiram que nada tinham a ver com o roubo de informação de clientes da Sony. Design Ainda no ano passado este grupo de Hackers e Activistas tinha sido notícia Sérgio Alves (@scorpion_blood) pelos ataques perpetrados contra servidores das empresas que tinham retirado o apoio ao Wikileaks, como a Amazon, Visa, MasterCard, PayPal, Redacção até o banco suíço PostFinance onde estava a conta de doações do Augusto Manzano, Caio Proiete, Wikileaks depois de ter cancelado a conta de Julian Assange foi atacado. Fernando Martins, Fábio Domingos, Também membros do senado Norte-Americano e do Ministério Público Nuno Godinho, Pedro Martins, Ricardo Rodrigues, Sandro Pereira, Sueco foram atacados com a mesma razão. Sara Silva Recentemente veio a público que o Departamento de Defesa Norte- Americano pretende avançar com a retaliação aos ataques cibernéticos com Staff armas convencionais, que poderão ir até ao lançamento de mísseis. Sim, António Santos, Fábio Domingos, leu bem, em último caso poderão ser lançados mísseis contra este tipo de Jorge Paulino, Marco Marques criminosos. Mas a grande questão, é como terão eles a certeza da identidade do criminoso, e quantas serão as vítimas inocentes. Todos nós Contacto conhecemos maneiras mais ou menos eficazes de ocultar a nossa revistaprogramar@portugal-a-programar.org identidade completamente na Internet, ou pelo menos tornar a sua descoberta muito mais difícil. Mas o Departamento de Defesa Norte- Website Americano parece ter uma plena confiança nas suas capacidades para http://www.revista-programar.info detectar estas origens, o problema será quando surgirem as mortes de inocentes ISSN O primeiro grande ataque conhecido, foi o worm anti-nuclear WANK, em 1 647-071 0 1 989, que atingiu agências americanas como a NASA, o Departamento de Energia, entre outros. Mas não é só lá fora que isto acontece, em 1 997, um grupo português atacou sites da Indonésia, incluindo sites governamentais e militares, pelo facto de a Indonésia ter invadido Timor Leste. Esse mesmo ataque foi repetido um ano mais tarde, em 1 998. Este foi sem dúvida um dos primeiros grandes ataques massivos na história da internet. Será que no futuro em vez de armas nucleares ou termonucleares, teremos que temer a Internet por ser a melhor arma de destruição de países? 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. António SilvaA revista PROGRAMAR é um projecto voluntário, sem fins lucrativos. Todos os artigos são da responsabilidade dos autores, não podendo a revista ou a comunidade ser responsabilizada por alguma imprecisão ou erro. Para qualquer dúvida ou esclarecimento poderá sempre contactar-nos. 2
  • 2. Índice INDICE TEMA DE CAPA 6 Git - Controlo de Versões para Pequenos e Grandes Projectos Um artigo que descreve funcionalidades do Git, bem como as principais diferenças entre os sistemas de controlo de versões centralizados e distribuídos. Caio Proiete A PROGRAMAR 24 Lua – Linguagem de Programação (Parte 9) A continuação de um excelente artigo sobre Lua, uma linguagem de programação pouco conhecida. Nesta nona parte descubra tudo sobre o operador lógico XOR e os Módulos. Augusto Manzano 28 Introdução ao Cloud Computing e à Plataforma Windows Azure O que é o Cloud Computing? Para que serve? Em que ajuda? Descubra a resposta a esta e a outras questões relativas a esta renovação no mundo da computação que adveio da actual Virtualização em massa. Nuno Godinho 34 Managed Extensibility Framework (MEF) Conheça a framework oficial de extensibilidade de aplicações para a Plataforma .NET que veio corrigir falhas na plataforma para construção de software extensível. Ricardo Rodrigues 37 Microsoft BizTalk Server aos olhos dos programadores Muito se ouve falar sobre esta plataforma. Saiba agora quais são os benefícios da sua utilização no mercado de trabalho e em funcionalidades para o programador. Sandro Pereira 44 O Editor de texto VIM deste Saiba os conceitos básicos editor de texto Open-Source para sistemas baseados em Unix, ferramenta inclusive capaz de realizar syntax-highlight de várias linguagens de programação. Fábio Domingos COLUNAS 50 CORE DUMP - Fazer mal = Rápido? Um artigo de opinião sobre o problema de não se criar as melhores soluções devido à falta de tempo no mundo da programação. Afinal, fazer mal é mais rápido que fazer bem? As consequências não se sobrepõem? Fernando Martins 51 VISUAL (NOT) BASIC - Introdução ao OpenXML SDK Implemente este padrão ISO de arquivos (documentos, folhas de cálculo, entre outros) nas suas aplicações, em várias plataformas. Altere-os e visualize-os através de diversas aplicações. Pedro Martins COMUNIDADES 58 NetPonto - Certificações Microsoft Qual o percurso a percorrer para obter a sua Certificação Microsoft? Conheça as Certificações existentes, as hierarquias, os benefícios e como obtê-las. Sara Silva EVENTOS 1 8 Jun. Reunião presencial Comunidade NetPonto - Lisboa 21 Jun. XII Encontro da Comunidade SQLPort 29 Jun. Windows Phone 7 “Mango” Dev Hub - Lisboa 09 Jul. Reunião presencial Comunidade NetPonto - Coimbra 22 Jul. IOI201 1 - 23ª Olimpíadas Internacionais de Informática 23 Jul. Reunião presencial Comunidade NetPonto - Lisboa Para mais informações/eventos: http://bit.ly/PAP_Eventos 3
  • 3. NoticiasNOTICIAS R e d e s d a PT j á e stã o La n ç a m e n to d o U b u n tu 1 1 . 0 4 p re p a ra d a s p a ra o I Pv6Um comunicado da PT refere que as redes que suportam o No fim do mês de Abril foi lançada a nova versão doMeo, a TMN, e o Sapo ADSL já se encontram aptas a Ubuntu, a Natty Narwhal (1 1 .04), onde uma das suasfuncionar tanto em IPv4 (a norma que ainda domina nos principais novidades é a inclusão do Unity, que dá aoendereços de Internet) como em IPv6. Para o processo de ambiente gráfico um aspecto renovado, correndo nomigração ficar concluído falta ainda proceder à adaptação entanto por cima do GNOME.para a versão 6 do IP dos terminais e equipamentos dosclientes da operadora. A PT definiu como objetivo a A versão 1 1 .1 0 (Oneiric Ocelot) já está agendada paramigração dos clientes empresariais para o IPv6 até ao final Outubro deste mesmo ano e a vresão Alpha 1 que já foide 201 1 , mas não adianta qualquer data para adaptação lançada conta já com a implementação do GNOME 3 e comdos equipamentos usados pelos clientes residenciais. o Firefox 5 Beta. Conta também tal como a versão anterior,Uma vez que nem todos os intervenientes conseguem a 1 1 .04, com o LibreOffice ao invés do OpenOffice.trabalhar à mesma velocidade, a rede da PT vai seguir atendência mundial e passar a funcionar em dual stack que Mais informação:garante a compatibilidade com IPv4 e IPv6. https://wiki.ubuntu.com/OneiricOcelot/TechnicalOverview/AlA migração para o IPv6 começou a ser trabalhada na PT há pha1cerca de três anos, com o objetivo de acautelar o provávelesgotamento dos 4,3 mil milhões endereçosdisponibilizados pela IPv4. TM N te sta re d e 4G e m B ra ga M i c ro s o ft a p re s e n ta Wi n d o ws 8A TMN iniciou no mês de Maio as primeiras demonstrações Na conferência D9, na Califórnia, a Microsoft levantou ode redes da quarta geração de telemóveis (4G) em Braga. véu sobre a nova inteface gráfica do Windows 8 que representa, talvez, a maior mudança na interface doA TMN optou por fazer a demonstração pública do 4G no sistema operativo da Microsoft. Ao contrário do queShopping Braga Parque. A demonstração, que deu a acontece agora, o ecrã principal apresenta agora uma sérieconhecer o potencial dos 1 50 Mbps do protocolo LTE (Long de "tiles", os tais retângulos com informação a serTerm Evolution), abrange os serviços Meo Online, Meo atualizada em tempo real, tal como acontece com oJogos, Videoconferências, e transmissões de vários vídeos Windows Phone 7.em simultâneo. As demonstrações foram realizadas comtecnologias de rede fornecidas pela Nokia Siemens. A empresa de Redmond diz que o Windows 8 será compatível com todos os periféricos e dispositivos queÉ a segunda vez que a TMN procede a demonstrações neste momento correm no Windows 7, apesar de apúblicas das redes LTE: a primeira decorreu em Abril num interface ter sido redesenhada e repensada.centro comercial de Cascais. Ver o Vídeo: http://bit.ly/iMPq0A 4
  • 4. TEMA DE CAPAGit: Controlo de Versões para Pequenos e GrandesProjectos
  • 5. TEMA DE CAPAG i t: C o n tro l o d e Ve rs õ e s p a ra Pe q u e n o s eG ra n d e s Pro j e c to sO Git é um sistema de controlo de versões distribuído, Centralizado vs Distríbuidogratuito e open-source, desenvolvido originalmente peloLinus Torvalds, o criador do kernel do sistema operativo O Subversion (SVN), o Visual Source Safe (VSS), o TeamLinux, e actualmente é mantido pelo Junio Hamano Foundation Server (TFS), e muitos outros, são todosjuntamente com outros quase 300 colaboradores sistemas de controlo de versões que funcionam de formavoluntários. centralizada, isto é, existe sempre um computador central (servidor) que contém toda a história dos projectos com todas as inclusões e alterações que foram feitas pelos programadores desde o momento em que o projecto foi incluído no sistema de controlo de versões (geralmente no início do projecto) até a versão mais recente, e cada programador tem apenas *uma* versão da aplicação em seu próprio computador, normalmente a mais versão recente.Comparado com outros sistemas de controlo de versõestradicionais, o Git diferencia-se por ser extremamente Dessa forma, os programadores estão semprerápido, por simplificar o desenvolvimento de software de dependentes do servidor para guardar (check-in) alteraçõesforma não-linear, onde podemos trabalhar em paralelo em que desenvolvem em seus computadores, bem como paradiferentes funcionalidades das aplicações que obter as alterações desenvolvidas por outros membros dadesenvolvemos e então escolher quais funcionalidades equipa:devem fazer parte de cada versão da aplicação conforme onosso fluxo de trabalho, e principalmente por ser umsistema distribuído bastante versátil e adequado paraprojectos de qualquer dimensão.Outra grande vantagem do Git, é possuir versões paraWindows, Linux e Mac OS X, o que facilita muito o controlode versão de aplicações desenvolvidas em diferentesplataformas. Hoje em dia é muito comum uma mesmaempresa desenvolver aplicações em .NET no Windows,outras em Java no Linux, e ainda outras para iPhone noMac OSX, e poder utilizar uma única ferramenta paracontrolo de versão de todas as aplicações desenvolvidasna empresa, é excelente! Assim, efectuar o controlo de versões com sistemasNeste artigo, vou explicar o funcionamento do Git e as centralizados é geralmente mais lento, pois todas asprincipais diferenças entre os sistemas de controlo de operações (check-in, check-out, etc...) necessitam deversões centralizados e distribuídos, como instalar e comunicação com servidor central, que pode estar aconfigurar o Git no Windows, e os principais comandos que apenas alguns metros de distância, como pode estar emprecisa conhecer para começar a utilizar o Git no dia-a-dia. outra cidade ou país. Além disso, torna-se impossível 6
  • 6. 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 scontrolar versões quando se está desconectado da rede No entanto, ao trabalhar em equipas com várias pessoas,onde encontra-se o servidor central, o que pode ser um ao invés de cada pessoa comunicar-se individualmenteproblema quando é preciso trabalhar fora das instalações com outra para enviar/receber commits, é normal existir umda empresa e não possibilidades de conectar-se sítio comum onde os elementos da equipa enviam os seusremotamente à rede da empresa, por exemplo nas commits para que sejam partilhados com o restante dainstalações de um cliente ou em viagens. equipa, sendo este sítio comum normalmente conhecido como “servidor de integração”.Controlo de Versão DistribuídoNu m sistema de controlo de versão distribuído como o Git,não existe propriamente um “servidor central”. Cadaprogramador tem uma cópia completa de toda a históriados projectos em sua própria máquina e pode controlar aversão de ficheiros e conteúdos de ficheiros localmentesem depender de um servidor e, somente quando acharapropriado, pode partilhar as suas alterações com outraspessoas da equipa e/ou receber alterações efectuadas poroutros membros da equipa. À primeira vista, este sítio comum se parece muito como oNo Git, cada conjunto de alterações efectuadas em “servidor central” dos sistemas de controlo de versõesficheiros ou conteúdos de ficheiros é chamado de “ commit”, centralizados, mas em realidade é bem diferente, pois ée conforme o programador implementa novas apenas mais um computador com uma cópia de toda afuncionalidades nas aplicações que está a desenvolver, vai história dos projectos, assim como é o computador deefectuando diferentes commits que ficam guardados no seu qualquer outro membro da equipa. O servidor de integraçãopróprio computador sem precisar depender de um servidor. é apenas uma convenção social entre os participantes da equipa, de forma a facilitar a partilha das alterações entreUma vez que cada membro da equipa possui uma cópia as várias pessoas.integral de toda a história dos projectos, um programadorque queira partilhar os seus commits recentes com outro O importante a destacar é que nenhum membro da equipacolaborador, pode enviar directamente os commits para está directamente dependente ou conectado ao “servidoreste colaborador (push), ou ainda, pode permitir que o de integração”. Todos trabalham de forma desconectadaoutro colaborador obtenha os commits a partir de seu em seus computadores, onde efectuam diversos commitspróprio computador (pull), tudo sem precisar comunicar-se que são gravados localmente, e só utilizam o “servidor decom um servidor central. integração” para partilhar seus commits recentes com o restante da equipa, quando/se quiserem. 7
  • 7. TEMA DE CAPAG 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 Por exemplo, observe a estrutura de pastas abaixo: Dessa forma, as funcionalidades que devem ser partilhadas com toda a equipa, podem ser enviadas (push) para o C:Projectos“servidor de integração” e os membros da equipa podem ------ NetPonto ------------ lib obter (pull) essas alterações quando desejarem, assim ------------ src como funcionalidades que não ainda não estão prontas ------------------------ NetPonto.sln ------------------------ ... para serem partilhadas com toda a equipa, podem ser ------------ doc partilhadas apenas entre as pessoas envolvidas no ------ Portugal-a-Programar desenvolvimento dessas funcionalidades. ------------ lib ------------ src ------------------------ Portugal-a-Programar.slnImportante: Algumas ferramentas de controlo de versões ------------------------ ... ------------ doccentralizado, como por exemplo o Team Foundation Server(TFS), permitem accionar uma opção para trabalhar de Qualquer uma destas pastas poderia ser transformada emforma desconectada do servidor, para então mais tarde um repositório Git de acordo com as necessidades do(quando for possível conectar-se ao servidor central) enviar programador, mas normalmente controlamos as versõesas alterações. Isto não é a mesma coisa que que trabalhar individuais de cada projecto, portanto faz sentido que anum sistema distribuído, pois neste caso não será possível pasta C:ProjectosNetPonto seja um repositório Git eefectuar commits no próprio computador, enquanto efectua pasta C:ProjectosPortugal-a-Programar, ser outrodiferentes alterações no código, ou seja, a ferramenta não repositório Git separado.permite gravar diferentes conjuntos de alterações(commits), para depois enviá-los para o servidor. Setrabalhou em funcionalidades diferentes, não conseguirá Instalação do Git no Windows(facilmente) distinguir quais ficheiros/conteúdoscorrespondem a cada funcionalidade que trabalhou O site oficial do Git é o http://git-scm.com, onde podeenquanto estava desconectado, e provavelmente irá enviar efectuar o download da versão mais recente para aum único commit para o servidor central com todas as plataforma que desejar.alterações, e estará a usar o sistema de controlo deversões de forma pouco eficiente. Para utilizar o Git no Windows, existem basicamente duas formas: Directamente, utilizando o msysGit ou através do Cygwin.Repositórios Git O msysGit é uma versão desenvolvida especialmente paraPara controlar versões dos conteúdos, o Git utiliza o funcionar no Windows, e é a opção mais utilizadaconceito de repositórios, onde cada repositório corresponde actualmente, enquanto o Cygwin é uma colecção dea uma pasta que pode conter ficheiros e sub-pastas ferramentas e APIs que permite criar um ambiente com atambém com ficheiros onde controla a versão de todos os mesma aparência e experiência do Linux, dentro doconteúdos desta pasta e sub-pastas que existirem. Windows, e então utilizar o Git através do Cygwin .Uma pasta só considerada um repositório Git, após Neste artigo, vou demonstrar a instalação e configuraçãoexecutarmos um comando específico (init) para que o Git do msysGit, que no momento em que escrevo este textoinicialize a pasta como um repositório, e normalmente está na versão 1 .7.5.4.criamos um repositório Git para cada projecto quedesenvolvemos, de forma a controlar as versões dosconteúdos de cada projecto separadamente. 8
  • 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 sApós efectuar o download msysGit e executar o instalador,recomendo efectuar a instalação mantendo as opções quejá vem seleccionadas por padrão (Next, Next, Next ...), comexcepção do passo 4, onde recomendo seleccionartambém as opções “Context menu entries”, “Git Bash Here”e “GUI Bash Here” para adicionar duas entradas nosmenus de contexto do Windows Explorer que permitemseleccionar uma pasta e executar as ferramentas do Gitdirectamente na pasta seleccionada.Passo 4 da instalação 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 repositórios, e é também a ferramenta que utilizo para mostrar o funcionamento do Git neste artigo.No Windows Explorer (após a instalação) Configuração Inicial do Git Após a instalação do msysGit, o próximo passo é configurar o nome e o e-mail que será utilizado por padrão, na criação dos repositórios e dos commits. É possível configurar estes parâmetros de forma global ou individualmente para cada repositório, e para isto utilizamos o comando “ g i t c on fi g ” em uma sessão do Git Bash, a ferramenta de mencionda acima e que após a instalação 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 / msysGitAs principais ferramentas do Git são o Git GUI e o GitBash. O Git GUI , como o nome índica, é uma interfacegráfica que permite criar e gerir repositórios Git através deuma interface gráfica simples, e o Git Bash é uma aplicaçãode linha-de-comando, que também permite criar e gerirrepositórios Git via linha-de-comando. 9
  • 9. TEMA DE CAPAG 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 sOs parâmetros globais a serem definidos são o user.name Controlo de Versões com o Gite o user.email, que correspondem ao nome e ao e-mail doutilizador, respectivamente, e para efectuar a configuração, Criação de um Repositório Gitbasta executar os comandos abaixo, substituindo osvalores entre aspas pelo nome e e-mail do utilizador: Depois de configurar o nome e o e-mail padrão, o próximo passo escolher a pasta onde irá criar um repositorio Git, ou$ g i t c on fi g --g l oba l u s er. n a me " S eu N ome" criá-la caso ainda não exista.$ g i t c on fi g --g l oba l u s er. ema i l " s eu @ema i l . pt" Para este exemplo, o repositório Git estará localizado na pasta C:ProjectosPortugal-a-Programar, e assumo que esta pasta ainda não exista, portanto podem ser criadas através do Windows Explorer se preferir, ou directamente através do Git Bash, utilizando alguns comandos existentes para o efeito: - Criar a pasta C:Projectos $ mkd i r / c / Proj ec tos /Além de configurar o nome e o e-mail do utilizador, écomum neste momento configurar também um parâmetro - Criar a pasta C:ProjectosPortugal-a-Programarglobal para definir o editor de textos que deve ser utilizado $ mkd i r / c / Proj ec tos / Portu g a l -a -Prog ra ma r/pelo Git. - Entrar na pasta C:ProjectosPortugal-a-ProgramarPor padrão, o Git utiliza o editor de textos Vim, uma versão $ c d / c / Proj ec tos / Portu g a l -a -Prog ra ma r/melhorada do editor Vi muito utilizado em ambientes Unix eque exige que o utilizador conheça as suas diferentescombinações de teclas para aceder cada uma das suasfuncionalidades, o que pode tornar a utilização do Git maiscomplicada para quem não está acostumado com esteeditor, portanto uma opção é definir o bloco de notas doWindows (Notepad) como editor de texto padrão, ou outrode sua preferência (Notepad++, Textpad, etc...). Uma vez posicionado na pasta desejada, para criar oPara configurar o editor de textos, basta executar o repositório do Git deve utilizar o comando “git init”, quecomando abaixo, adaptando o caminho do executável do essencialmente irá “preparar” a pasta actual para permitir oeditor de textos desejado: controlo de versões dos ficheiros e sub-pastas dentro deste repositório recém-criado.$ 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 10
  • 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 sO que este comando faz, em realidade é criar a estruturado repositório Git em uma pasta oculta chamada “.git”dentro da pasta onde executou o comando. Neste exemplo,em “C:ProjectosPortugal-a-Programar.git”. É dentro destapasta estarão, entre outas coisas, todos os commits.A pasta onde criou o repositório Git, a partir de agora passaa ser chamada de “ working folder” (pasta de trabalho).Com o repositório Git criado, pode adicionar novosficheiros, alterar ficheiros que já existiam, remover ficheiros, Staging Area e Commitscriar novas pastas, e etc... Para este exemplo, podeadicionar três ficheiros na pasta onde está o repositório Git Conforme efectua alterações no repositório, deverá guardarcom o seguinte nome/conteúdo: as versões (efectuar commits) dos conteúdos que desejar, quando for apropriado. Idealmente cada commit representaPrimeiro.txt uma unidade lógica, como por exemplo uma novaEste é o primeiro ficheiro, versão 1 .0 funcionalidade implementada numa aplicação, ou umaSegundo.txt correcção de um bug, ou seja, um commit é um conjunto deEste é o segundo ficheiro, versão 1 .0 alterações que foram feitas no repositório, e podem serTerceiro.txt alterações em ficheiros existentes, criação de novosEste é o terceiro ficheiro, versão 1 .0 ficheiros, ou remoção de um ou mais ficheiros. No entanto, ao trabalhar em uma tarefa específica (por exemplo, na implementação de uma funcionalidade X), é normal um programador efectuar outras alterações no código que não estaão relacionadas com a tarefa em questão, mas que já sabe que será preciso na Neste momento, pode executar um outro comando do Git, o implementação de uma funcionalidade Y (outra tarefa“git status”, que permite verificar o estado do repositório, e futura), e a grande vantagem do Git é compreender que perceber quais são os ficheiros que não estão a ser isso é normal acontecer, e permitir definir quais são as controlados (novos ficheiros), os ficheiros que foram alterações que pertencem a uma funcionalidade X (commit modificados e os que foram apagados. Este é normalmente X), e quais pertencem a uma funcionalidade Y (commit Y), o comando que irá utilizar com mais frequência, para e é por isso que o Git conta com um recurso chamado consultar o estado do repositório conforme efectua “staging area”. alterações e antes de efectuar commits. Assim, para criar umNeste exemplo, o comando “git status” deve mostrar que commit, é necessárioexistem três ficheiros na pasta, mas que não estão a ser primeiro indicar quaiscontrolados pelo Git, por enquanto: são as alterações que devem fazer parte do$ g i t s ta tu s commit. Estas alterações são adicionadas nessa área chamada “ staging area”, de forma que apenas as alterações que correspondem a uma determinada unidade lógica sejam armazenadas como um commit. 11
  • 11. TEMA DE CAPAG 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 sO comando utilizado para adicionar ficheiros (ou parte de Para efectuar o commit, deve utilizar o comando “gitum ficheiro) à staging area é o comando “git add”, e depois commit” e pode opcionalmente utilizar o parâmetro “-m” ede adicionar todas as alterações na staging area, deve informar a descrição do commit. Se não utilizar o parâmetroexecutar o comando “git commit” para transformar todas as “-m” o Git irá executar o editor de texto padrão configuradoalterações adicionadas na staging area em um commit. para que possa informar a mensagem a descrever as alterações contidas no commit.O comando “git add” pode receber diferentes parâmetros, epermite adicionar ficheiros individualmente, todos os $ 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"ficheiros alterados ou novos que encontrar, conteúdos deficheiros, entre outras opções.Para adicionar o ficheiro “Primeiro.txt” na staging area,pode informar o nome do ficheiro individualmente nocomando “git add”:$ g i t a d d Pri mei ro. txt Se após efectuar este primeiro commit consultar novamente o status do repositório, verá que apenas os ficheiros “Segundo.txt” e “Terceiro.txt” aparecem como ficheiros que não estão 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 actualização de conteúdo no Neste momento, o ficheiro “Primeiro.txt” foi adicionado a repositório: staging area, o que significa que fará parte do próximo commit, enquanto os outros dois ficheiros continuam sem Pri mei ro. txt estarem a ser controlados pelo Git. Se executar o comando E s te é o pri mei ro fi c h ei ro, vers ã o 1 . 1“git status” novamente pode confirmar que o ficheiro foi ( a l tera d o) efectivamente adicionado a staging area: Ao consultar o status do repositório, verá que o ficheiro “Primeiro.txt” está marcado como “modificado”, ou seja, o seu conteúdo está diferente do conteúdo que está no último commit efectuado, e os outros dois ficheiros continuam como estavam antes. 12
  • 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 modificados e/ou adicionados à staging area são mostrados Para um próximo commit, e supondo que a alteração no na cor verde ao executar o comando “ g i t s ta tu s ”, assim ficheiro “Primeiro.txt” juntamente com os ficheiros como ficheiros que não estão a ser controlados aparecem“Segundo.txt” e “Terceiro.txt” fazem parte de uma mesma na cor vermelho. Para habilitar a utilização de cores, deve funcionalidade Y, pode adicionar cada um dos ficheiros configurar o parâmetro global “color.ui” com o valor “true”: manualmente a staging area, ou pode utilizar um atalho e adicionar todos os ficheiros, novos e modificados, de uma $ g i t c on fi g --g l oba l c ol or. u i tru e só vez:$ gi t add . Ignorar ficheiros e pastas com o .gitignoreAo consultar o estado do repositório, verá que todos os Por padrão, o Git permite controlar as versões de qualquerficheiros estão seleccionados para fazerem parte do tipo de ficheiro que existir dentro da pasta (ou sub-pastas)próximo commit: onde está o repositório, mas nem sempre queremos controlar as versões de todos os tipos de ficheiro. Ficheiros temporários que são criados pelo sistema operativo ou pela ferramenta de desenvolvimento, não devem fazer parte do repositório, ou seja, nunca devem adicionados aos commits. No entanto, poderão existir na working folder enquanto trabalha, mas devem ser ignorados pelo Git quando adicionamos alterações a staging area e efectuamos commits. Por exemplo, o Windows costuma criar ficheiros com o Para concluir e efectuar o commit, basta utilizar o comando nome “Thumbs.db” em pastas que possuem imagens, onde“git commit” como feito anteriormente: armazena uma espécie de cache das miniaturas das imagens contidas na pasta. Esses ficheiros “Thumbs.db”$ 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" jamais devem ser guardados no repositório, pois podem ser recriados pelo Windows conforme o conteúdo 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 temporários que estão relacionados com o utilizador actual e podem ser recriados pelo Visual Studio a qualquerE é desta forma que controlamos as versões no repositório. momento. Estes ficheiros também não devem serApós efectuar um conjunto de alterações, deve seleccionar armazenados no repositório Git, e portanto devem serquais alterações devem fazer parte de commit através do ignorados.comando “git add”, e então finalizar a operação efectuandoo commit, através do comando “git commit”. Além disso, é uma prática comum não guardar ficheiros executáveis, e outros ficheiros que podem ser gerados (compilados) a partir do código que está a ser controladoNota: Nas imagens acima pode reparar que os ficheiros 13
  • 13. TEMA DE CAPAG 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 spelo repositório Git, ou seja, deve-se guardar apenas o # I g n ora r as pa s ta s c om fi c h ei ros bi n á ri oscódigo-fonte e as dependências necessárias para que seja g era d os vi a c ompi l a ç ã opossível compilar o código-fonte. Por exemplo, num [ Oo] bj /projecto .NET, normalmente temos as pastas “bin” e “obj” [ Bb] i n /que possuem o resultado da compilação de cada projectodo Visual Studio. Estas bastas também não devem serarmazenadas no repositório Git, pois deve ser possívelrecriá-las a qualquer momento, a partir do código-fonte doprojecto.Para poder ignorar determinados tipos de ficheiros oupastas, criamos um ficheiro chamado “.gitignore” na pastaonde criamos o repositório. O Windows por padrão nãopermite criar ficheiros que não tenham nome e apenas umaextensão, como é o caso do “.gitignore”, por isso umaalternativa simples é criar o ficheiro a partir do Git Bash,executando o Bloco de Notas para criar o ficheiro: A sintaxe é bastante intuitiva, e pode utilizar “*.extensão”$ n otepa d . g i ti g n ore 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 diferença entre letras maiúsculas e minúsculas, por isso pode utilizar expressões 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 conteúdo deste ficheiro serão ignorados pelo Git, eNo conteúdo do ficheiro .gitignore, pode inserir comentários deixarão de aparecer, por exemplo, quando visualizar o(linhas que começam com “#”), definir os tipos de ficheiros estado do repositório com o comando “git status”, noque pretende ignorar e as pastas que pretende ignorar por entanto é importante adicionar o ficheiro .gitignore aocompleto, independente do conteúdo. Neste exemplo: repositório para garantir que continuará a ignorar os ficheiros desejados nos próximos commits, e também para# I g n ora r fi c h ei ros temporá ri os d o Wi n d ows que todos os membros da equipa estejam a ignorar osTh u mbs . d b mesmos tipos de ficheiros e pastas.# I g n ora r pa c otes d e fi c h ei ros*. zi p $ g i t a d d . g i ti g n ore* . ra r $ 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# 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 a o repos i tori o"*. suo* . u s er* . u s erprefs 14
  • 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 sConsulta do Histórico de CommitsConforme efectuamos commits, é muito comumnecessitarmos consultar a história do projecto para, porexemplo, perceber quando foi introduzida uma determinadaalteração. Para este efeito, o Git possui um comandochamado “git log”, que permite visualizar os commits queestão armazenados no repositório, incluindo informaçõescomo a data e hora, nome e e-mail do utilizador queefectuou cada commit, e também o identificador único decada commit (ex:5944d4c5c92c89766ac77de221 b1 b36b803ee37b), quepodemos utilizar quando necessitamos efectuar operaçõesespecíficas em determinados commits. Desenvolvimento em Paralelo$ g i t l og Ao trabalharmos no desenvolvimento de software profissional, é muito comum termos um ambiente de desenvolvimento onde efectuamos testes de novas funcionalidades que estão a ser desenvolvidas, separado do ambiente de produção onde a aplicação está a ser executada pelos utilizadores finais. Em realidade, é também muito comum termos um ambiente intermédio de “controlo de qualidade” (também conhecido como ambiente “de qualificação”, “de qa” ou “de testes”), que geralmente possui as mesmas características do ambiente de produção, e possui uma versão da aplicação com funcionalidades que ainda precisam ser testadas antes de serem promovidas para o ambiente de produção.O comando “git log” pode receber diferentes parâmetrosque permitem visualizar mais, ou menos informação sobreos commits, algumas opções de formatação, entre outrosrecursos.Uma outra forma de consultar o histórico de commits éutilizar um utilitário instalado juntamente com o msysGitchamado “gitk”, que permite consultar os commits de forma Desta forma, o ambiente de produção possui sempre agráfica. versão mais antiga do projecto, mas também a mais estável e que passou pelos testes de controlo de qualidade,$ g i tk enquanto o ambiente de qualificação (se houver) possui uma versão mais nova do projecto, mas que ainda necessita ser testado antes de evoluir para o ambiente de produção, e por fim o ambiente de desenvolvimento possui 15
  • 15. TEMA DE CAPAG 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 suma versão ainda mais nova do projecto, com asfuncionalidades que estão a ser desenvolvidas e que apóstestes dos developers poderão ser enviadas para oambiente de qualificação, para serem efectuados maistestes.Uma vez que temos ambientes separados, podemos utilizara ferramenta de controlo de versões para manter diferentesas versões dos nossos projectos em paralelo de forma aconseguirmos enviar uma nova versão para qualquer umdos ambientes o mais rápido possível e idealmente a Estes commandos efectuam a criação de dois novosqualquer momento. branches chamados “desenvolvimento” e “qualificacao” respectivamente, mas que estão a apontar para o mesmoPara este efeito, o Git e a grande maioria de sistemas de commit do branch actual (master), que neste exemplo, é ocontrolo de versões oferece um recurso chamado “branch”, commit que adiciona o ficheiro .gitignore.que no Git é representado por um conjunto de commits éidentificado por um nome escolhido pelo developer que O branch “master”, neste exemplo, está a ser usado comoefectua criação do “branch”. sendo o branch com a versão de produção, enquanto os outros branches representam as versões dos outrosAo criar um novo repositório Git, automaticamente é criada ambientes. Isto pode variar de acordo com a preferênciaum primeiro branch chamado “master”, que irá agregar pessoal da equipa. Em alguns casos, a branch “master”todos os commits que fizer neste branch. Pode identificar a será utilizada como branch de desenvolvimento, porqualquer momento em qual branch encontra-se exemplo, e são criadas outras branches para os outrosposicionado através do nome entre parênteses após o ambientes.caminho da pasta: 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 toPara criar um novo branch, pode utilizar o comando “gitbranch”, 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 serão armazenados na branch “desenvolvimento”, de forma isolada da branch “master” criada inicialmente, e também de forma isolada da branch “qualificacao”. 16
  • 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 cada nova funcionalidade que pretendem implementar Para este exemplo, pode criar um ficheiro chamado num projecto, e depois decidem funcionalidade/branch“NovaFuncionalidade.txt” e efectuar o commit: deve ser adicionada nas branches principais de cada ambiente.$ 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 . A operação de juntar os commits de uma branch com os$ g i t c ommi t -m " Ad i c i on a o commits de outra branch é chamada de “merge” e paraN ova F u n c i on a l i d a d e. txt" este efeito o Git possui o comando “git merge” que permite juntar a branch informada como parâmetro, na branch onde está posicionado. Por exemplo, para juntar as alterações da branch “desenvolvimento” com a branch “master”, em primeiro lugar é preciso ir para a branch “master” (com o comando “git checkout”) e então executar o comando “git merge” e informar que deve ser efectuado o merge da branchE neste momento, o repositório possui quatro commits “desenvolvimento” com a branch actual:diferentes: $ g i t c h ec kou t ma s ter- Commit 4 | Adiciona o NovaFuncionalidade.txt $ g i t merg e d es en vol vi men to- 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 através do utilitário gitk: 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, é possível continuar a efectuar commits neste Existem outros tipos de merge, e em alguns casos umbranch sem comprometer as versões que estão em merge pode causar conflitos, por exemplo, caso asparalelo e correspondem aos outros ambientes, e apenas mesmas linhas de um ficheiro tenha sido alteradas porquando for apropriado, poderá juntar os commits commits diferentes, e pode necessitar de intervençãoefectuados em uma branch, com outra. manual do developer, e que normalmente utiliza uma ferramenta para auxiliar a resolução de conflitos. Este é umA utilização de branches no Git é tão simples e tão rápida, assunto que merece um artigo próprio, que ficará para umaque muitos developers adoptam uma convenção conhecida próxima edição desta revista.como “branch-per-feature”, onde criam novas branches 17
  • 17. TEMA DE CAPAG 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 sPartilha de Alterações em Equipa mostrados abaixo são criados no mesmo computador, em pastas diferentes.A partilha de commits entre os membros da equipa podeser feita directamente entre os repositórios dos developers Como explicado no início desta secção, a criação deenvolvidos, pode ser utilizado um repositório partilhado, ou repositórios é feita através do comando “git init”. Nooutras formas de acordo com o fluxo de trabalho da equipa. entanto, para a criação de repositórios partilhados queNa próxima secção irá encontrar breve explicação sobre os poderão receber actualizações (push) de outrosworkflows mais comuns para controlo de versões em utilizadores, é necessário indicar que trata-se de umsistemas distribuídos. repositório partilhado através dos parametros “--shared” e “-Os principais comandos para a utilização do Git em equipa -bare".são o “git clone”, “git pull” e o “git push”. $ cd . .O comando “git clone” serve para criar uma cópia integral $ mkd i r Repos i tori oPa rti l h a d ode um repositório Git. Este é o comando utilizado quando $ c d Repos i tori oPa rti l h a d odesejamos participar de um projecto, e para isso $ g i t i n i t --s h a red --ba reprecisamos ter uma cópia do repositório em nossocomputador. O “git clone” automaticamente guarda umareferência para o repositório original, de forma a facilitarobter actualizações desse repositório, bem como enviar asactualizações feitas localmente.Já o comando “git pull” permite receber novos commits quetenham sido adicionados num repositório de origam. Étipicamente utilizado para receber as alterações enviadas Após a execução das instruções acima, é criado umpor outros membros da equipa para um repositório repositório chamado “RepositorioPartilhado” que irá servirpartilhado, ou ainda para receber novos commits de um como um repositório intermédio para dois membros darepositório específico de um membro da equipa. equipa, o “Tiago” e o “Carlos”, que terão cada um os seus próprios repositórios.E por fim, o comando “git push”, como o nome indica, fazexactamente o inverso do “git pull”, e serve para enviar asalterações efectuadas localmente no repositório, para um Criação de Clones de Repositóriosrepositório de origem, tipicamente um repositório remotopartilhado com os membros da equipa. Para criar um clone de um repositório, como referido acima, utilizamos o comando “git clone”, informando o nome do repositório a ser clonado:Criação de um Repositorio Partilhado $ cd . .Um repositório partilhado pode estar no mesmo $ g i t c l on e Repos i tori oPa rti l h a d o Ti a g ocomputador, ou em um computador remoto que pode estar $ g i t c l on e Repos i tori oPa rti l h a d o Ca rl osna mesma rede, em uma rede separada, ou ainda em umservidor que pode aceder via Internet. A comunicação entrerepositórios pode ser feita de diferentes formas, via rede(partilha de pastas), SSH, HTTP, HTTPS, entre outrasformas. Para efeitos de exemplo, todos os repositórios 18
  • 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 sAs instruções acima permitiram criar dois clones dorepositório “RepositorioPartilhado”, um para o “Tiago” ou É importante reparar que o commit foi efectuado na branchoutro para o “Carlos”, criados e pastas separada, e neste “master” deste repositório.momento estão vazios (sem qualquer commit armazenado). Passo 2: Enviar as alterações para o repositório Para este exemplo, é criado um ficheiro no repositório do partilhado (push)“Tiago” que será então armazenado em um commit. Em seguida este commit será enviado (push) para o repositório Como referido acima, para enviar as alterações efectuadas partilhado “RepositorioPartilhado”, e a partir daí o “Carlos” no repositório local para o repositório de origem, deve pode obter as actualizações (pull) do repositório utilizar o comando “git push”, e para isto deve informar o“RepositorioPartilhado” e consequentemente irá obter o nome da referência do repositório de origem, e o nome da commit efectuado inicialmente no repositório do “Tiago” e branch que deve ser considerada para o envio. que foi partilhado no repositório “RepositorioPartilhado”. Ao efectuar um clone de um repositório, o Git automaticamente cria uma referência para o repositório de origem com o nome “origin”. É possível alterar este nome se desejar, e também é possível criar outras referências para outros repositórios remotos. Assim, para enviar as alterações para o repositório partilhado, basta informar “origin” como referência para o repositório partilhado, e “master” como nome da branch,Passo 1 : Efectuar as alterações no repositório do Tiago uma vez que o commit que deve ser enviado está nesta branch.$ c d Ti a g o/$ ec h o " Al tera c a o Ti a g o" > > $ g i t pu s h ori g i n ma s terN 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
  • 19. TEMA DE CAPAG 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 sPasso 3: Receber as alterações enviadas para o Workflows Comuns para Controlo derepositório partilhado no repositório do “Carlos” Versões DistribuídoPara receber as alterações existentes no repositório Subversion-stylepartilhado, deve utilizar o comando “git pull”, e para istodeve informar o nome da referência do repositório de Este é o workflow mais simples, e normalmente utilizadoorigem, e o nome da branch que deve ser considerada para em equipas que estão a utilizar o Git pela primeira vez.o recebimento. Neste workflow, utiliza-se o Git como se fosse um sistema de controlo de versões centralizado, mas com as vantagensDessa forma, assim como o comando “git push” basta de um sistema distribuído, onde pode-se efectuar commitsinformar “origin” como referência para o repositório localmente, de forma desconectada, e enviar para opartilhado, e “master” como nome da branch. repositório partilhado apenas quando for apropriado. Todas as alterações são partilhadas num repositório$ cd . . partilhado e não há comunicação directa entre os membros$ c d Ca rl os / da equipa.$ g i t pu l l ori g i n ma s ter Descentralized but centralizedE a partir de agora, os três repositórios estão sincronizadose possuem os mesmos commits. Este é o workflow mais comum para pequenos e médios projectos em equipas com alguma experiência com o Git.Assim, o fluxo de trabalho comum no dia-a-dia do Git em Os membros da equipa acordam entre si que todas asequipa é algo como: alterações que devem ser consideradas para as futuras versões do projecto serão armazenadas em um repositórioinicio partilhado principal, conhecido por “blessed repository” - Efectuar alterações/novos commits (git commit) (repositório “abençoado”). - Juntar actualizações do repositório partilhado com o Os membros da equipa podem então partilhar commitsrepositório local (git pull) entre eles directamente enquanto trabalham em - Enviar as actualizaçõs do repositório local para o determinadas tarefas, e quando for apropriado, podemrepositório partilhado (git push) enviar os commits para o blessed repository.loop 20
  • 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 são responsáveis por módulos específicos do projecto. Após a validação das alterações pelos liutenants, estas são enviadas para outra pessoa que assume o papel de “dictator” (ditador) e que efectua uma validação final, antes de enviar para o blessed repository.Integration Manager Este é um workflow mais sofisticado e indicado para projectos médios e grandes, onde cada membro da equipa possui dois repositórios, um público e outro privado (que podem estar no mesmo computador). Cada developer trabalha em seu repositório privado, e quando apropriado pode partilhar (push) as alterações que efectuou em seu repositório privado no repositório público. Por curiosidade, este é o workflow utilizado actualmente Existe então uma pessoa da equipa que assume o papel de para controlar as versões do kernel do Linux. Existem“Integration Manager” que é a pessoa responsável em obter pessoas consideradas como sendo pessoas “de confiança” (pull) as alterações do repositório público de cada e que são responsáveis por diferentes módulos do kernel e developer, validar, e então enviar (push) para o blessed validam as alterações enviadas pelas centenas de pessoas repository. que contribuem para o projecto, e por fim são enviadas para o “ditador” que as valida e escolhe quais alterações farão parte do repositório principal e que eventualmente irão fazer parte de uma futura versão do sistema operativo. Serviços de Alojamento de Repositórios Git na Internet Existem dezenas de empresas que fornecem serviços de alojamento de repositórios Git na Internet, permitindoDictator and Lieutenants desenvolver projectos (open-source ou não) com equipas distribuídas sem precisar criar e manter uma infra-estruturaEste é um workflow ainda mais sofisticado que o anterior e própria.indicado para projectos extremamente grandes e commuitas pessoas a participar no desenvolvimento. O serviço mais popular e provavelmente o mais utilizadoCada developer possui um repositório público onde pode em todo o mundo é o GitHub (http://github.com) quepartilhar as alterações que posteriormente serão validadas oferece a possibilidade de criar repositórios públicospor pessoas na equipa que assumem o papel de “liutenant” 21
  • 21. TEMA DE CAPAG 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 sgratuitos com até 300 Mb, para quem pretende desenvolver Uma lista mais detalhada de projectos que utilizam o Gitsoftware open-source, e oferece também a possibilidade de está disponível no Wiki do Git emcriar repositórios privados para empresas que queiram ter https://git.wiki.kernel.org/index.php/GitProjects, e poderepositórios privados partilhados e não possui infra- acompanhar os projectos open-source mais populares noestrutura própria com preços que variam entre os $7 e $22 GitHub em https://github.com/popular/watched.dólares americanos por mês no momento em que escrevoeste artigo. Em Abril de 201 1 , o GitHub ultrapassava os 2 Links para Referênciamilhões de repositórios. Git Scm - Site oficial do GitOutros exemplos serviços que oferecem serviços http://git-scm.comsemelhantes são: Posts sobre Git em meu blog Gitorious (http://gitorious.org) http://caioproiete.net/pt/tag/git/ Unfuddle (http://unfuddle.com) Vídeo: Controlo de Versões Distribuído com Git ProjectLocker (http://www.projectlocker.com) http://vimeo.com/20652754 RepositoryHosting (http://repositoryhosting.com) Pro Git (e-book) Assembla (http://www.assembla.com ) http://progit.org Git Ready (tutorial / tips) http://www.gitready.comExemplos de Grandes Projectos que Git Magic (e-book)Utilizam o Git http://www-cs-students.stanford.edu/~blynn/gitmagic Git for BeginnersO Git é amplamente utilizado em projectos open-source em http://stackoverflow.com/questions/31 591 1 /git-for-todo o mundo, em pequenos, médios e grandes projectos, beginners-the-definitive-practical-guidee foi originalmente desenvolvido para controlar as versões Why Git is Better than Xdo kernel do Linux e desde a sua primeira versão continua http://whygitisbetterthanx.coma ser utilizado para tal. Git Is Your Friend not a Foe http://hades.name/blog/201 0/01 /1 7/git-your-friend-not-foeAlguns projectos populares que utilizam Git para controlo A successful Git branching modelde versões, além do kernel Linux, são: Ruby on Rails, http://nvie.com/posts/a-successful-git-branching-modelNode.js, jQuery, Modernizr, Scriptaculous, Android, Use Git For What It Is Not Intended (UGFWIINI)CakePHP, Sinatra, VLC, entre muitos outros, e o próprio http://thread.gmane.org/gmane.comp.version-Git. Exacto! O controlo de versões do código-fonte do Git é control.git/1 1 041 1feito através do próprio Git. AUTOR Escrito por Caio Proiete Exerce as funções de arquitecto de software e analista-programador numa multinacional sediada em Portugal, e ministra cursos técnicos de formação 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 líder da Comunidade NetPonto (http://netponto.org), onde organiza reuniões presenciais todos os meses, e apresenta sessões de assuntos relacionados com desenvolvimento de software na plataforma Microsoft .NET. É autor do blog http://caioproiete.net - Twitter: @CaioProiete 22
  • 22. A PROGRAMARLua – Linguagem de Programação (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 reM 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 AXM 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 sO E d i to r d e te xto VI M
  • 23. A PROGRAMARLu a – Li n gu a ge m d e Pro gra m a ç ã o ( Pa rte 9 )Este artigo apresenta uma solução para o uso e -- i n i c i o d o prog ra ma TABU ADAimplementação do operador lógico xor em linguagem Lua.Apresenta também instruções de uso e criação de módulos pri n t( " Prog ra ma Ta bu a d a " )que são as bibliotecas de funções externas que podem ser pri n t( " n " )criadas pelos próprios programadores. 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" )ALGO A MAIS EM LUA pri n t( " n " ) l oc a l TE M PO = os . c l oc k( )A título de ilustração sobre recursos variados que podemser utilizados na linguagem Lua segue alguns poucos for I = 1 , 1 000, 1 d oexemplos, como: modo de limpeza do ecrã e medição do R = N * Itempo de CPU. i o. wri te( s tri n g . forma t( " %4d " , N ) ) i o. wri te( " X " )Uma forma de efectuar limpeza do ecrã (tela, monitor ou i o. wri te( s tri n g . forma t( " %4d " , I ) )monitor de vídeo no Brasil) é executar o comando cls na i o. wri te( " = " )janela de prompt de comando do Microsoft Windows (modo i o. wri te( s tri n g . forma t( " %5d " , R) )MS-DOS) ou o comando clear na janela de comando do i o. wri te( " n " )Linux/UNIX. Outra maneira é por meio de uso dos recursos en dde terminal ANSI, mas este será assunto para outromomento. l oc a l R = os . c l oc k( ) - TE M POPara fazer a execução do comando de limpeza de ecrã cls i o. wri te( " n Tempo = " . . R)ou clear deve-se fazer uso da função execute da biblioteca i o. wri te( " s eg s . n " )os com a sintaxe os.execute("comando"), onde comandoserá substituído pelo comando de limpeza de ecrã do -- fi m d o prog ra ma TABU ADAsistema operacional em uso. -- i n i c i o d o prog ra ma OPE R_XORPara fazer a métrica de tempo de execução de uso de certorecurso em linguagem Lua usa-se a função clock dabiblioteca os a partir da sintaxe os.clock() que retorna o Em seguida escreva o código de programa em um editor devalor aproximado em segundos do tempo gasto para a texto, gravando-o com o nome tabuada.lua e execute-oexecução do recurso medido. com a linha de comando lua 5.1 tabuada.lua.Para efectuar um teste da função os.clock() considere umprograma que apresente o resultado de uma tabuada deum número qualquer variando de 1 até 1 000, como segue. 24
  • 24. A PROGRAMAR Lu a – Li n gu a ge m d e Pro gra m a ç ã o ( Pa rte 9 )OPERADOR XOR No sentido de exemplificar o uso da acção de aplicação doNa linguagem de programação Lua não há a existência do conceito do operador lógico xor (ou exclusivo) em Luaoperador lógico xor como não há tal operador também na considere um programa que efectue a entrada dos nomes elinguagem C, a não ser quando se trabalha com operações sexos de duas pessoas que pretendem formar um par parade mais baixo nível com a manipulação de bits por meio do participar de uma dança de quadrilha. Os administradoresoperador “^”. da festa determinaram que somente serão aceitos pares de sexos heterogéneos. Não serão aceitos casais formadosA não existência do operador lógico xor não desmerece em por pessoas do mesmo sexo. Para atender a condiçãonada a linguagem Lua, mas parece criar em alguns estabelecida o programa deve, após a entrada do sexo dosprogramadores certo desconforto por não conhecerem ou participantes, verificar se formam par, e neste casonão saberem como resolver a questão. apresentar uma mensagem informando esta possibilidade. Caso não seja a condição verdadeira o programa deveApesar de ser uma solução muito simples e de certa indicar a impossibilidade da composição do par de dança.maneira fácil de ser encontrada em bons livros, sítios ou Observe que serão aceitos pares caso o sexo do 1 ºblogs que tratam sobre o tema da programação de participante seja masculino e do 2º participante for femininocomputadores cabe neste espaço mostrar a solução para a ou vice-versa. Assim sendo, considere como exemplo olinguagem Lua, que nada mais é do que uma solução seguinte código de programa:meramente matemática. i o. wri te( " N ome 1 o. d a n c a ri n o: " )O operador lógico XOR retorna o resultado verdadeiro N 1 = i o. rea d ( )quando apenas, e tão-somente, uma das condições da repea texpressão lógica é verdadeira. No caso em que as i o. wri te( " S exo 1 o. d a n c a ri n o: " )condições avaliadas sejam todas falsas ou verdadeiras o S 1 = s tri n g . u pper( i o. rea d ( ) )resultado da expressão lógica será falso. Assim sendo, u n ti l ( S 1 == " M " ) or ( S 1 == " F " )considere a tabela verdade a seguir para o operador lógicoxor: i o. wri te( " N ome 2 o. d a n c a ri n o: " ) N 2 = i o. rea d ( )Condição 1 Condição 2 Resultado lógico repea tVerdadeiro Verdadeiro Falso i o. wri te( " S exo 2 o. d a n c a ri n o: " )Verdadeiro Falso Verdadeiro S 2 = s tri n g . u pper( i o. rea d ( ) )Falso Verdadeiro Verdadeiro u n ti l ( S 2 == " F " ) or ( S 2 == " M " )Falso Falso Falso i f ( S 1 == " M " ) a n d ( S 2 == " F " ) orA solução para uso da expressão lógica: (C1 ) xor (C2) em ( S 1 == " M " ) a n d ( S 2 == " F " ) oruma linguagem de programação, onde C1 e C2 são ( S 1 == " F " ) a n d ( S 2 == " M " ) orcondições a serem avaliadas é usar a expressão lógica (C1 ( S 1 == " F " ) a n d ( S 2 == " M " ) th enand (not C2)) or ((not C1 ) and C2). pri n t( N 1 . . " d a n c a c om " . . N 2 ) el s eNo entanto, o uso desta expressão lógica na linguagem Lua pri n t( N 1 . . " n a o d a n c a c om " . . N 2 )não surte o efeito esperado. Isto posto, passa-se a ter outro en dproblema a ser resolvido. Como então fazer o uso de tal -- fi m d o prog ra ma OPE R_XORnecessidade? Uma solução é recorrer a um método no ( S 1 == " M " ) a n d ( S 2 == " F " ) orestilo “força bruta” . 25
  • 25. A PROGRAMARLu a – Li n gu a ge m d e Pro gra m a ç ã o ( Pa rte 9 )Em seguida escreva o código de programa em um editor de • debug : funções para processo de depuração;texto, gravando-o com o nome oper_xor.lua e execute-o • io: possui as funções para as operações de entrada ecom a linha de comando lua 5.1 oper_xor.lua. saída; • math : possui as funções para o uso de operaçõesObserve no programa o uso da instrução de laço matemáticas;repeat until na entrada dos sexos dos participantes no • os : funções que facilitam operações com o sistemasentido de evitar que ocorram entradas de sexo que não operacional;sejam M para masculino ou F para feminino. Outro detalhe • package: possui funções para o tratamento de módulos;a ser observado é o uso da função string.upper() que • string : possui as funções que manipulam cadeias deformata uma entrada de texto para maiúsculo. caracteres; • table: possui as funções para a manipulação de tabelas.O trecho escrito entre a instrução if then faz o uso de umaacção de força bruta para a simulação da execução do Os módulos padrão da linguagem Lua sãooperador lógico xor com o trecho de código seguinte. automaticamente carregados quando do uso do interpretador. Não havendo necessidade de uso da função ( S 1 == " M " ) a n d ( S 2 == " F " ) or require(). ( S 1 == " F " ) a n d ( S 2 == " M " ) or ( S 1 == " F " ) a n d ( S 2 == " M " ) O uso da função require() é obrigatório quando da definição -- i n i c i o d o prog ra ma M ODU L O01 e uso de uma biblioteca externa e particular criada pelo programador para atender as suas própria necessidades. Para fazer uso de módulos de forma simples considereA solução indicada pode não ser elegante, mas é funcional como exemplo o seguinte código de programa:e atende a necessidade de solução do problema, poisquem programa um computador é um programador e não a Grave o código do programa anterior com o nomelinguagem em si. modulo01 .lua.MÓDULOS fu n c ti on s a u d a c a o( N OM E )Na estrutura operacional de Lua chama-se módulo a pri n t( " Ol á , " . . N OM E )biblioteca de funções e variáveis externa contidas em uma en dtabela de cunho global utilizada por meio da funçãorequire(). 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 )Há também a possibilidade de se trabalhar com módulos a retu rn Xpartir da função module(), mas este não será o foco tratado en dneste artigo. -- fi m d o prog ra ma M ODU L O01A linguagem Lua possui alguns módulos em sua biblioteca -- i n i c i o d o prog ra ma M ODU L O02padrão (biblioteca interna), sendo:• coroutine: possui as funções de uso do recurso de co-rotinas; Em seguida escreva o próximo código de programa em um editor de texto, gravando-o com o nome modulo02.lua no 26
  • 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 É possível encontrar na Internet bibliotecas para alinha de comando lua 5.1 modulo02.lua. linguagem Lua disponibilizadas por outros programadores. Caso interesse-se por este tema poderás consultar o sítioAo ser o programa modulo02.lua executado será aberto o http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/ o qual encontrava-acesso a biblioteca modulo01 por meio da execução da se no ar até Abril de 201 1 quando este artigo estava sendolinha de código require("modulo01 "). finalizado. req u i re( " mod u l o01 " ) As bibliotecas externas para uso em na linguagem Lua poderão possuir a extensões de identificação .lua ou .so pri n t( " S ej a bem vi n d o, vi s i ta n te" ) (ou .dll no caso do sistema operacional da Microsoft). 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 ) CONCLUSÃO i o. wri te( " M e d e u ma ba s e . . . . . : " ) Neste artigo foi visto os procedimentos de uso e criação de B = i o. rea d ( " * n u mber" ) bibliotecas externas e a simulação de uso do operador i o. wri te( " M e d e u m i n d i c e . . . . : " ) lógico xor. I = i o. rea d ( " * n u mber" ) No que tange ao uso do recurso de módulos o assunto é R = ra i z ( B, I ) mais extenso do que o apresentado. O leitor poderá i o. wri te( " Res u l ta d o = " . . R, " n " ) aprofundar-se nesta temática com a leitura do livro Beginning Lua Programming publicado pela editora Wiley -- fi m d o prog ra ma M ODU L O02 Publishing, Inc. dos autores Kurt Jung e Aaron Brown. No próximo a intenção e abordar a temática relacionada ao uso de co-rotinas e a integração da linguagem Lua com outras linguagens de programação.A partir deste momento ficam disponíveis para o programamodulo02 as funções da biblioteca externa modulo01 , asquais são executadas quando do uso das linhas deinstrução saudacao(N) e raiz(B,I). AUTOR Escrito por Augusto Manzano Natural da Cidade de São Paulo, tem experiência em ensino e desenvolvimento de programação de software desde 1 986. É professor da rede federal de ensino no Brasil, no Instituto Federal de Educação, Ciência e Tecnologia. É também autor, possuindo na sua carreira várias obras publicadas na área da computação. 27
  • 27. A PROGRAMARI 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 aWi n d o ws Azu reNos últimos tempos muito se tem falado sobre o CloudComputing/Cloud, mas a verdade é que muita gente aindase questiona sobre: O que é? Para que serve? E a maisimportante de todas as questões; O que é que isto meajuda? Tendo estas questões em mente, e também após odesafio lançado pelos responsáveis da revista Portugal-a-Programar, decidi escrever este artigo para clarificar estase outras questões.O Cloud Computing embora se tenha vindo a falar muitoultimamente, não é uma revolução, mas sim uma evoluçãoda computação, pois evoluiu naturalmente da adopção emmassa da Virtualização, e também no seguimento de outrostipos de computação distribuída, como por exemplo o GridComputing.Mas para melhor compreendermos o conceito de CloudComputing o melhor é olhar-mos para uma pequenaanalogia, e para isso o mais simples é olhar-mos para algoque todos conheçamos e também sejamos consumidores,como por exemplo a energia eléctrica ou mesmo a água.Vamos então olhar para o exemplo da água (uma vez que a Com o Cloud Computing aconteceu exactamente a mesmaversão energia eléctrica está deveras utilizada). A realidade coisa. Até este momento todos nós temos andado aé que durante muitos anos cada um de nós éramos procurar formas de obtermos mais capacidade deresponsáveis por produzir a água que consumia-mos, fosse computação, não sendo fácil nem mesmo interessante ematravés de ir buscar água aos rios/ fontes, ou mesmo termos de investimento. Também em termos decriarmos um nosso próprio poço para que pudéssemos ter disponibilidade tem sido muito complicado, pois qual de nósmais facilmente a nossa água disponível., ainda não passou pela experiência de identificar a necessidade de aumento do número de servidores, eMas a questão importante é que nenhuma das opções era “desesperar” pela disponibilização do mesmo, e istosimples, e requeria acima de tudo bastante trabalho da independentemente de sermos nós ou um serviço denossa parte, pois quer fosse por transportarmos a água ou Hosting a gerir o Data Center. Aqui é onde esta nova formamesmo pela manutenção do nosso poço, muito trabalho e de computação chama mais à atenção, uma vez quedinheiro era gasto no processo. Tudo isto foi bastante podemos ter quase no “imediato” disponível o poder denormal até um determinado momento em que surgiu uma computação que necessitamos, e acima de tudo pagandorede de água, que tinha a vantagem de ser simples, sem apenas pelo que utilizamos, e não pelo simples facto dequalquer esforço necessário da nossa parte para que tudo existirem os servidores, como estávamos habituados atéfuncionasse, e acima de tudo com um valor associado à aqui.utilização que fazíamos da mesma, o que tornava osinvestimentos anteriores completamente desadequados. Como curiosidade, por vezes surgem questões 28
  • 28. 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 rerelativamente ao porquê da palavra Cloud. Este termo Se respondeu sim a todas as questões anteriores, entãodeve-se ao facto de a Internet ter sido representada ao está certamente perante uma verdadeira oferta de Cloudlongo dos anos com uma nuvem, e por isso mesmo o termo Computing.Cloud/Nuvem, ser utilizado, pois estamos a falar de um tipode computação acessível via Internet. Modelos de UtilizaçãoCaracterísticas Em conjunto com o Cloud Computing surgiram outras siglas que têm sido muito badaladas como o SaaS (SoftwareUma questão importante a ter em conta é o facto de ser como um Serviço), PaaS (Plataforma como um Serviço) enecessário compreendermos exactamente o que é e o que IaaS (Infra-estrutura como um Serviço). Mas o que são nanão é Cloud Computing, pois ao longo dos anos já realidade? Olhando de uma perspectiva de alto nível, elasassistimos por diversas vezes a situações em que utilizam definem a responsabilidade que o cliente sobre o serviço:nomes novos para reciclar ofertas antigas. Por isso mesmoexistem algumas características principais para quepossamos identificar as ofertas mais rapidamente, sendoelas:• Elasticidade / Agilidade – É possível ou não aumentar ediminuir a capacidade de computação rapidamente (menosde 1 dia)?• API – Existem ou não uma API capaz de nos permitirinteragir programaticamente com o sistema?• Custo – Os custos são associados à utilização quefazemos?• Multi-Tenancy – O sistema suporta mais do que umcliente sem quaisquer alterações?• Fiabilidade – Existe ou não redundância e tolerância à • SaaS – O cliente apenas se preocupa com a utilização dafalha? aplicação e nada mais, pois os dados, aplicação e• Escalabilidade – É fácil ou não escalar soluções e respectiva infra-estrutura passam a ser responsabilidade dorecursos? fornecedor do serviço. (ex. Office 365, Google Apps,• Segurança – Existem ou não acordos de nível de SalesForce.com, )serviço? • PaaS – O cliente preocupa-se apenas com a construção da aplicação e respectiva gestão dos dados da mesma, pois toda a restante infra-estrutura e plataforma onde as Se respondeu sim a mesmas irão correr passam a ser responsabilidade dotodas as questões fornecedor do serviço. (Ex. Windows Azure, SQL Azure, Amazon AWS, Google App Engine, Force.com, )anteriores, então está • IaaS – A responsabilidade prende-se com a gestão decertamente perante uma todos os elementos “virtuais” da infra-estrutura, como overdadeira oferta de Cloud Sistema Operativo, Serviços de Suporte, etc., mas não se preocupando com qualquer questão de gestão física dessaComputing. mesma infra-estrutura, pois a mesma será responsabilidade do fornecedor desse mesmo serviço. (Ex. Amazon EC2, vCloud Express, Hyper-V Cloud, ) 29
  • 29. A PROGRAMARI 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 disponibilização esta é uma oferta de Cloud Pública, eModelos de Disponibilização fornece-nos um modelo de utilização PaaS (Plataforma como um serviço).Sempre importante é também compreendermos as formascomo podemos encontrar o Cloud Computing disponível, Tendo terminado o processo inicial de categorização dapois ao contrário do que se possa pensar o Cloud oferta, passemos então a compreender melhor aquilo que éComputing não tem a ver apenas com computação que se então a Plataforma Windows Azure.encontra disponível publicamente (embora exista umgrande grupo que o defenda), pois na realidade existem 4 Na realidade esta plataforma assenta muito na reutilizaçãotipos de disponibilização que poderemos encontrar, sendo das competências, pois encontra-se assente naseles os seguintes: tecnologias que a Microsoft tem vindo a disponibilizar ao longo dos anos para o desenvolvimento de soluções,• Pública - Cloud Computing de uma forma tradicional permitindo que o processo de desenvolvimento para a(como é maioritariamente vista), onde os recursos são Cloud seja mais simples, uma vez que utiliza ferramentas eprovisionados dinamicamente e com enorme detalhe, mas frameworks que programadores, gestores, e todos ossempre de uma forma autogerida via Internet através de outros interlocutores no processo de desenvolvimento deAplicações ou Serviços Web, um parceiro que que nos aplicações já se encontram familiarizados, mas não só, poiscobra a um nível de detalhe na base do utility computing. também é possível utilizar esta oferta com frameworks e• Privada - Capacidade de ter todas as capacidades de ferramentas não Microsoft, como são os casos do Java,uma Cloud interna a uma organização. PHP, Ruby, Python, entre outros.• Comunitária - Poderá ser estabelecida entreorganizações que tenham requisitos semelhantes e Dado isto, uma das questões que se levanta é: “então afinalprocurem partilhar infra-estrutura. Exemplo deste tipo de o que pode correr em Windows Azure?”.modelo é a nuvem comunitária da Google "Gov Cloud".• Híbrido - Este termo tem sido utilizado como significando A resposta não poderá ser mais simples, pois salvo rarasquer duas nuvens integradas (pública, privada, interna ou excepções, tudo aquilo que seja possível instalar numexterna), quer a combinação de instâncias virtualizadas em sistema operativo Windows Server 2008 SP2 ou Windowsconjunto com hardware real. Server 2008 R2, poderá ser disponibilizado na plataforma  Windows Azure. Este é um aspecto muito importante poisPlataforma Windows Azure não é uma plataforma limitada à disponibilização de soluções desenvolvidas apenas numa tecnologia específica, mas sim num sistema global com capacidade de disponibilizar uma grande maioria das soluções que têm vindo a ser desenvolvidas, pois consegue abranger um grande leque de tecnologias. Então agora que já sabemos o que podemos colocar, vamos olhar para a sua composição, pois a mesma é composta 4 áreas principais:Agora que já conhecemos melhor o que é efectivamente o • Windows Azure - Muitas vezes denominado de SistemaCloud Computing, podemos iniciar uma visão mais Operativo da Cloud, fornece serviços de computação,detalhada sobre uma das ofertas de Cloud sobre a qual armazenamento, e também automatização na gestão dosmuito se tem falado, e ela é a Plataforma Windows Azure mesmos. É este o responsável por correr todas as nossasda Microsoft. No que respeita ao modelo de 30
  • 30. 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 resoluções disponibilizadas na plataforma, bem como tratar mesmo, uma vez que permite ao fornecedor de serviços,dos dados associados à mesma. descrever a sua oferta e o valor a ser cobrado pela mesma.• Windows Azure AppFabric – Tem como objectivofornecer serviços aplicacionais para consumo nas diversas Olhando então numa perspectiva funcional e de alto nível,aplicações, sejam eles ao nível da Identidade e Controlo de esta plataforma fornece-nos os seguintes serviços:Acessos, até a serviços de conectividade e caching.Disponibiliza acima de tudo um conjunto de serviços que • Ao nível com Computacional , o Windows Azurepermitem tornar as nossas soluções mais ricas, de uma Compute, que é nada mais do que um dos principais blocosforma simplificada. desta oferta, pois para além de definir o que deverá “correr”• SQL Azure – Serviços de dados relacionais como por em termos de computação, permite descrever também aexemplo uma base de dados relacional (SQLAzure), um forma como a mesma deverá ser efectuada, seja ao nívelsistema de relatórios (SQL Azure Reporting Services) e da capacidade de processamento, até ao nível da memóriatambém um sistema de sincronização de dados (SQL alocada a esse processo de computação. É também aquiAzure DataSync), permitindo que possamos criar soluções que acontece o processo que permite fornecer aque tirem partido quer de uma base de dados relacional elasticidade à solução, pois através do conceito dealtamente distribuída e disponível, entre outros serviços instância (ambiente de computação funcional de acordomuito importantes quando trabalhamos com dados. com as regras definidas na configuração do Serviço)• MarketPlace – Plataforma para a monetização de permite definir para cada um dos serviços disponibilizadosaplicações e dados. Este é um dos pontos muito na plataforma, quantas instâncias deverão estar funcionaisinteressantes da plataforma, pois não se limita apenas a ao mesmo tempo, detendo ainda a capacidade de analisarfornecer um conjunto de serviços para “criar” e “correr” a “saúde” das mesmas por forma a evitar problemas e, aoaplicações, mas também uma forma de monetizar os mesmo tempo, resolver rápida e automaticamente todos os 31
  • 31. A PROGRAMARI 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 fora de uma determinada organização a recursos internos àproblemas que possam surgir. É aqui que muita da “magia” mesma.acontece, pois é através deste serviço que podemos ter o o Windows Azure AppFabric ServiceBus – Permitesistema elástico necessitamos em tantas situações. fornecer uma forma de criar e consumir serviços de uma forma simples e poderosa, ficando para o criador do serviço• No que respeita ao nível de Armazenamento, propõe apenas o que diz respeito às regras de negócio que oduas opções: mesmo deverá disponibilizar, e também a forma como o o Windows Azure Storage – Sistema de serviço deverá ser disponibilizado, ficando todo o processoArmazenamento disponibilizado como um serviço. Permite- de disponibilização e manutenção do mesmo a cargo danos focar apenas nos dados armazenados e não na forma plataforma.como se encontram armazenados ou até dos processos o Windows Azure AppFabric Integration – Proporcionanecessários para os tornar mais disponíveis. É composto a simplificação do processo de criação de serviços parapor 4 abstracções diferentes: Tables (Base de Dados integrar diferentes soluções e até transformação de dados.Hierárquica, não relacional), Queues (Filas de Trabalho que o Windows Azure AppFabric Caching – Garante anos irão permitir a criação de soluções assíncronas, e ao possibilidade de obter de uma forma simples e rápida ummesmo tempo tolerantes a falhas), Blobs (Ficheiros) e ambiente de Caching altamente distribuído e disponível,Drives (Simulação de um Disco que poderá ser utilizado auxiliando dessa forma a melhoria da performance daspelos serviços de computação). soluções desenvolvidas. o CDN (Content Delivery Network) – Serviço que nos irá o SQL Azure – Base de Dados Relacional disponibilizada permitir melhorar o acesso quer a elementos presentes nocomo um serviço, sendo fácil de provisionar e disponibilizar, serviço de armazenamento do Windows Azure ou atémas acima de tudo preparada para ser altamente mesmo ao nível da computação. É composto por umdisponível e tolerante a falhas. Mantém também ao mesmo conjunto de cerca de 22 nós dispersos geograficamentetempo a mesma forma de utilização que já é habitual para que têm como responsabilidade disponibilizar os conteúdosconsumir e gerir dados de qualquer base de dados SQL requeridos pelo cliente rapidamente e com tendo por baseServer. a localização do mesmo.Uma nota importante ao nível do armazenamento é que a • Quanto à Identidade – Windows Azure AppFabric Accessplataforma Windows Azure efectua em qualquer dos casos Control que nos permite definir a forma como a identidadea 3 réplicas dos dados que são armazenados, garantindo das nossas soluções irá ser efectuada, inclusivamentedesta forma uma maior segurança e tolerância a falha dos disponibilizando uma forma simples de implementar omesmos. Isto faz com que o grau de segurança que Single-Sign On, que à tanto tempo se vem falando. É semobtemos ao utilizar este tipo de armazenamento é bastante dúvida uma enorme mais-valia para as soluções uma vezelevado, pois encontramo-nos protegidos em caso de falha que cria uma camada de abstracção sobre a forma como odo sistema. utilizador é identificado, pois essa transformação, entre a origem do utilizador até ao que a nossa solução necessita• Em termos de Conectividade, as opções são: de saber sobre esse mesmo utilizador, é-nos fornecida e tratada por este serviço. o Rede Virtual - Mecanismo simples e de fácilmanutenção que nos permite criar conectividade/rede Também muito importante, e de acordo com o que vimosvirtual entre recursos que se encontrem na Cloud com no que respeita ao Cloud Computing, é compreender ooutros que se encontrem On-Premise (internamente nas Acordo de Nível de Serviço (SLA) associado a esta ofertaorganizações), sem que para isso seja necessário as da Microsoft, pois é através dele que garantimos o nível delongas e complexas configurações de rede, habitualmente confiança na plataforma. Os SLAs existentes são os denecessárias sempre que seja necessário ligar recursos de 32
  • 32. 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 reComputação que nos garantem 99,95% de disponibilidade falar de algo que é importante apenas para alguns, mas simao nível de soluções Web, e 99,9% para todos os restantes para todos, quer seja através da utilização de uma simplesserviços de computação, sendo para isso necessário que aplicação como o CRM na Cloud, ou até aoexistam pelo menos duas instâncias activas desse mesmo desenvolvimento de novas soluções de negócio e atéserviço. Quanto ao SQL Azure o SLA garante 99,9% de formas nichos de mercado, o Cloud Computing irá ajudar-disponibilidade da mesma forma como acontece com o nos a atingirmos os nossos objectivos, de uma forma maisWindows Azure AppFabric e Windows Azure CDN. Estes ágil, económica e adequada às necessidades. E lembrem-SLAs têm também um aspecto muito importante que se se que como diz o ditado popular “nem tudo o que luz éprende com o facto de fornecerem uma compensação ouro”, por isso sempre que lhes apresentem uma soluçãomonetária ao cliente em caso de incumprimento. denominada de Cloud Computing, sejam capazes de vocês próprios a avaliar, e compreender se é ou não na verdade.Conclusão Também importante é compreender que o CloudTendo em consideração tudo o que falamos, poderemos Computing não é a solução para todos os problemas, masconsiderar o Cloud Computing como a próxima geração de sim mais uma opção para tirarmos o máximo partido doscomputação, e mais importante é que não é algo que investimentos que fazemos.apenas poderemos começar a tirar partido num futuropróximo, mas sim JÁ, pois é algo que já está disponível e Podemos também olhar para a oferta Windows Azure dapronto para utilizarmos de forma a melhorarmos os nossos Microsoft e considerar a mesma como uma aposta séria einvestimentos. de elevada qualidade, pois não só nos permite colocar os recursos que deverão ser processados, como também nos não é algo que apenas fornece um enorme conjunto de serviços para melhorar as nossas soluções, mantendo ou mesmo aumentandopoderemos começar a tirar disponibilidade das soluções.partido num futuropróximo, mas sim já 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 questão. Muito mais poderiaÉ também importante ter em atenção que não estamos a ser dito, mas parece-me que aqui ficou o essencial. AUTOR Escrito por Nuno Godinho. Consultor Independente com 1 0 anos de Experiência e principal responsabilidade de ajudar os clientes a identificar, planear, gerir e desenvolver soluções e produtos de software. Especialista em Tecnologias Microsoft. Orador em alguns dos maiores eventos de desenvolvimento da Microsoft Portugal como MSDN, TechDays, DevDays, além 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 início deste ano em Windows Azure com blogs em http://www.pontonetpt.com/blogs/nunogodinho (Português e Inglês) e http://www.msmvps.org/blogs/nunogodinho (Inglês), INETA Country Leader por Portugal, e parte da equipa de gestão de por diversas comunidades Portuguesas como PontoNetPT, XAMLPT e Fundador da AzurePT (Windows Azure em Português). 33
  • 33. A PROGRAMARM 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 no âmbito dessa organização não teria de se preocupar emextensibilidade de aplicações para a plataforma .NET, que desenvolver um sistema de logging, apenas importaria o jáexiste desde a versão 3.5 mas que foi oficialmente lançada existente através de MEF.Import - É um serviço que umacom a plataforma .NET a partir da versão 4.Esta framework Part consome. Uma Part pode importar um ou váriosvem preencher uma lacuna na plataforma para a serviços tanto quanto necessário. Composition - É o actoconstrução de software extensível, sem as típicas dores de de satisfazer as importações e exportações definidas nacabeça que esta problema tem trazido até agora.Embora já aplicação, connect the dots.Contracts - Definem eexistessem outras abordagens ao problema como Unity, identificam o que está a ser exportado e o que é para serIoC Containers, Castle Project, a Microsoft percebeu que importado.A MEF disponibiliza out-of-the-box um modelo denenhuma delas era leve e fácil o suficiente para o efeito, e desenvolvimento por atributos em que o modo como secomo tal, decidiram lançar e incorporar na plataforma a sua define o que é importado, o que é exportado e osprópria framework.A MEF é o culminar de aprendizagem metadados destas importações e exportações, é atravéscom todos estes sistemas, ao perceber onde erravam e ao destes.preencher os espaços que estavam por preencher para quetodos possamos desenvolver sistemas extensível com o Este é o método de utilização que vamos falar neste artigo,mínimo esforço possível. mas o core da MEF é completamente agnóstico, poderia-se usar qualquer outro modelo.Para entrarmos realmente na utilização de MEF e num cenário real, vamos supor que temos uma aplicação 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 aplicação.Em primeiro lugar (não sendo obrigatório para a utilização de MEF, mas como boa prática em modelos desacoplados) vamos definir um interface que é o contrato da nossa extensão: 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 ) ;Composable Part - É algo que tem tanto consome serviçosde outras Parts como fornece também serviços. As Parts s tri n g GetF romCa c h e( s tri n g key) ;podem tanto vir de dentro da mesma aplicação como de um }componente externo.Export - É um serviço que uma Partfornece. Quem importar esta Part vai obter a/asfuncionalidades inerentes. Uma Part pode exportar mais doque um serviço se assim for necessário. Exemplo: Uma A partir deste interface, podemos criar um projectoPart poderia por exemplo exportar um sistema de logging separado da nossa aplicação e apenas referenciar umatransversal a uma organização, e qualquer aplicação feita assembly (tipicamente temos um projecto com todos os 34
  • 34. 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 aplicação como por utilizar estes sistemas de um modo simples, e o maisquem cria componentes importados pela aplicação, é o importante, totalmente desacoplado:contrato conhecido por ambas as partes que define ostermos das extensões).Ao fazê-lo, implementamos essa pu bl i c pa rti a l c l a s s App : Appl i c a ti onassembly da forma que esse sistema de cache funcionar: { pri va te I Pers i s t c a c h eS ys tem { g et; pu bl i c c l a s s M emoryCa c h e : I Pers i s t 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 ) / / 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 ? / / l óg i c a } c a c h eS ys tem. S a veToCa c h e( " key" , pu bl i c s tri n g GetF romCa c h e( s tri n g key) " pa yl oa d " , n ew L i s t< s tri n g > ( ) ) ; { / / l óg i c a 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 O que temos de alterar para que o MEF se encarregue de { carregar a assembly que contém o sistema de cache que queremos utilizar? (qualquer um que implemente a pu bl i c voi d S a veToCa c h e( s tri n g key, interface IPersist).Vamos assumir que a assembly que tem s tri n g pa yl oa d , L i s t< s tri n g > d epen d en tKeys ) a nossa lógica de cache se encontra na directoria da nossa { aplicação (poderia estar noutra qualquer directoria, ou até / / l óg i c a poderíamos definir a classe dentro da nossa própria } aplicação, não existe qualquer obrigatoriedade de ser uma pu bl i c s tri n g GetF romCa c h e( s tri n g key) assembly externa).Em primeiro lugar temos de especificar { que as classes que contêm a lógica de cache se vão / / l óg i c a “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 elaDeste modo temos duas classes que podem servir como o está a expor é o IPersist, e isto torna-se importantenosso sistema de cache, a MemoryCache e a DiskCache, especialmente quando estamos a exportar e importar váriasque terão as suas lógicas próprias que para o âmbito do funcionalidades em simultâneo, pois facilitam aartigo não são relevantes, mas mostram-nos que podemos, identificação.Na nossa aplicação, vamos ter de instanciarao implementar o contrato (interface) definido, criar várias um catálogo, e os tipos de catálogos que existem são:-implementações diferentes para o mesmo problema, e que AssemblyCatalog: procura numa assembly-com o MEF, como vou mostrar de seguida, podemos DirectoryCatalog: procura numa directoria (relativa ou 35
  • 35. A PROGRAMARM 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 vários catálogos-TypeCatalog: procura num tipo- DeploymentCatalog(exclusivo Silverlight): carrega XAPs dinamicamente- c a c h eS ys tem. S a veToCa c h e( " key" ,Custom: podemos definir o nosso próprio catálogoNeste " pa yl oa d " , n ew L i s t< s tri n g > ( ) ) ;caso utilizamos um DirectoryCatalog, visto que estamos aobter as assemblies que se estão a disponibilizar para c a c h eS ys tem. GetF romCa c h e( " key" ) ;importação na directoria da nossa aplicação. Após }instanciar o catálogo temos de instanciar um }CompositionContainer, fornecendo o nosso catalogo comoparâmetro.O CompositionContainer é responsável poraceder ao catálogo fornecido e satisfazer os imports e Estas poucas linhas de código contêm um poderexports: extraordinário se pensarmos no que seria necessário.Para implementar um sistema destes manualmente. Podemos inclusive alterar o sistema de cache sem qualquer pu bl i c pa rti a l c l a s s App : Appl i c a ti on recompilação, apenas trocando a assembly. { [ I mport] Não é necessária qualquer referência às assemblies que pri va te I Pers i s t c a c h eS ys tem { g et; implementam o sistema de cache, tudo é desacoplado. O s et; } único ponto em comum é o contrato, que é o elo de ligação, um interface: a aplicação não tem qualquer noção sobre o pu bl i c App( ) funcionamento do sistema de cache, nem o sistema tem { qualquer necessidade de saber o que se passa na va r c a ta l og = n ew aplicação. O nível de abstracção é quase total.Este artigo Di rec toryCa ta l og ( E n vi ron men t. Cu rren tDi rec to tem como objectivo demonstrar o poder da Managed ry) ; Extensibility Framework, conceitos, casos de uso e a va r c on ta i n er = n ew facilidade com que podemos tirar partido dela.Stay tuned! 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 ) ; AUTOR Escrito por Ricardo Rodrigues É técnico Nível III em Informática/Gestão pela Fundação Escola Profissional de Setúbal, tendo ingressado após na FCT da Universidade Nova de Lisboa. Posteriormente frequentou vários cursos da Microsoft em diversas áreas como Windows Forms,ASP.NET, Securing .NET Applications, WCF, WWF, Web Services e COM+ tendo obtido as certificações 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 também possui um blog/twitter como temática relacionada: Blog / @ricmrodrigues 36
  • 36. A PROGRAMARM i c ro s o ft B i zTa l k Se rve r a o s o l h o s d o sp ro gra m a d o re sJá muito se tem falado sobre a plataforma BizTalk Server, o prestação de serviços do governoque é, e as vantagens que oferece as organizações. Para • 9 das 1 0 maiores companhias de telecomunicações norteos mais distraídos, BizTalk Server é a plataforma de americanas utilizam BizTalkexcelência da Microsoft para a integração de sistemas e • 6 das 8 maiores companhias farmacêuticas norteprocessos empresariais. americanas utilizam BizTalk • 9 das 1 0 maiores companhias espaciais e de defesa nosMas quais os beneficios que esta plataforma oferece aos EUA utilizam BizTalkprogramadores? Com uma robusta infra-estrutura de mensagens, funcionalidade de resiliência (Dehydration e Rehydration),Mercado de trabalho mais de 25 adaptadores multiplataforma, motor de regras, possibilidade de obter informações de desempenho sobreOnde o produto é utilizado? Em que contextos? Quais as processos críticos de negócios, debug, persistência,oportunidades de trabalho que oferece? Remunerações? tratamento e recuperação de erros, suporte a transacções.Estas são algumas perguntas que um programador quersaber antes de se dedicar a uma tecnologia/produto. Torna o BizTalk Server numa ferramenta e infra-estrutura única, ideal para ser usado principalmente para integraçãoMicrosoft BizTalk Server 201 0 é a sétima versão do de aplicações corporativas (EAI), integração de sistemasproduto, tornando-o num dos produtos mais maduros e entre parceiros de negócio (B2B) e para gestão deestáveis da Microsoft. processos de negócio (BPM).Ao longo dos anos o produto tornou-se uma referência desucesso entre os sistemas de integração, sendoactualmente o produto mais utilizado no mundo na suaárea, como asseguram os seguintes factos: No que diz respeito às oportunidades de trabalho, podemos definir 3 perfis:• Mais de 1 0 000 clientes espalhados por todo o mundo• 81 % do “Top 1 00” da revista Fortune BizTalk Architect: conhecedor de todo o sistema de• 1 2 dos 1 5 maiores retalhistas mundiais utilizam BizTalk integração, backup e planos de recuperação, segurança,• 5 das 1 0 maiores cadeias de hotéis mundiais utilizam logging, o fluxo de mensagens, interface de comunicação.BizTalk Utilizando os seus conhecimentos também como um• 9 das 1 0 maiores seguradoras mundiais utilizam BizTalk programador, o arquitecto deverá conhecer as capacidades• 23 dos 27 governos membros da UE utilizam BizTalk para e limitações das ferramentas à sua disposição (BizTalk, 37
  • 37. A PROGRAMARM 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 sBAM, BRE) e desenhar os projectos fazendo as melhores com mais atenção alguns requisitos, é fácil identificar certosescolhas para cada situação. desafios que se podem tornar bastante complexos: implementação de persistência, correlação de mensagensBizTalk Developer: implementa e estende as assíncronas, recuperação em caso de falhas nasfuncionalidades base, tirando partido das diferentes comunicações, mapeamentos complexos, atomicidade,ferramentas. Aqui existem muitas áreas completamente transacções de longa duração, monitorização e visibilidadeortogonais e um programador poderá não dominar ao dos processos, e tudo isto se reflecte, para ummesmo nível todas elas: Orchestration, Adapters, Pipelines, programador, em custos enormes na implementação.Mappings, Functoids, Routing, Rules, Tracking, OLAP,entre outras. É aqui que o BizTalk entra e o que ele faz de melhor, porque todas estas funcionalidades estão ao dispor dosBizTalk Administrator: um administrador de sistemas terá programadores “out of the box” com o produto, libertandooutras preocupações, como sejam a saúde dos servidores assim, os mesmos, da necessidade de terem dee a sua actividade (HAT), desbloqueando mensagens e reimplementar vezes sem conta estas funcionalidades eprocessos, garantindo o devido fluxo das mensagens, bem permitindo assim um foco no aspecto mais critico que é acomo o fluxo de dados de telemetria necessários ao bom implementação da lógica de negócio associado aos fluxosdiagnóstico dos processos de negócio. de integração.Apesar do nosso mercado interno ser muito diferente do São diversas as funcionalidades ou módulos queinternacional aqui estão alguns exemplos reais de poderíamos enumerar. Umas ajudam a simplificar aoportunidades de trabalho (fonte LinkedIn): interoperabilidade, outras a reduzir custos na• “BizTalk Developers needed in”: Miami, NYC, implementação:Jacksonville, Austin, Sacramento, Louisville, Hawaii,Panama City, Montevideo, London, Toronto, Preston, Porto. BizTalk Orchestration Designer• “BizTalk Administrator needed in Ft. Lauderdale FL 75K - Antes de aprender a programar é ensinado a todos os1 00K depending on experience.” programadores como representar todos os passos• “BizTalk Developer/Architect needed for International Law necessários para a execução de um processo na forma deFirm in NY. 1 1 0k-1 30k.” um fluxograma, isto porque é mais legível e ilustra de forma• “6 Month BizTalk 2009 Consultant required for Public simplificada o progresso da execução.Sector project in London. Rates negotiable but c£500-£550per day.” O BizTalk inclui um Orchestration Designer, integrado no• “2 BizTalk Developer Needed in NYC - Healthcare, mid- Visual Studio, que possibilita aos programadoreslevel $95-1 1 0K and senior level $1 05-1 20K.” representarem os processo de negócio de forma visual, assim como uma representação das portas, configurações e das ligações entre as diversas actividades (shapes),Funcionalidades para os programadores tornando-se assim mais fácil de gerir e ler do que numa linguagem textual generalista (exemplo C#).Não há nada que o BizTalk faça que com código escrito deraiz não se consiga fazer, a questão é quanto tempodemora a implementar uma solução sem um uso demiddleware (sistema de integração). Facilmente seconseguirá efectuar uma integração entre dois sistemascom o uso de tecnologias de comunicação e transporte dedados tais como o Microsoft WCF, mas quando se analisa 38
  • 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 sBizTalk Expression EditorO BizTalk Expression Editor permite aos programadoresintroduzir código .NET, com suporte a intellisense,directamente nas orquestrações ou invocar bibliotecasexternas, o que em certos cenários se torna bastante útil,como por exemplo: manipular valores das mensagens apartir da Message Assignment shape, manipular variáveisna Expression shape, construção de expressões booleanasdentro de Loop e Decide shapes, definir tempo de pausa naDelay shape, ou até mesmo configurar portas dinâmicas de Usar regras, que mudam constantemente, em vez códigosaída. poderá permite aos programadores não terem de refazer sistematicamente as suas aplicações. Para mais informação: The Business Rules Framework BizTalk Mapper Designer Inclui o BizTalk Mapper Designer, integrado no Visual Studio, que possibilita efectuar transformações de mensagens complexas de forma visual e extremamente simples.Motor de regras (BRE)O BizTalk Server inclui o Business Rules Framework ondepodem ser isolados critérios de decisão de negócio. Sendoque os módulos principais incluem o Business RuleComposer para construção de políticas (regras), o RuleEngine Deployment Wizard para as instalar no Run-TimeBusiness Rule Engine.A tarefa da criação e alteração das regras poderá não seruma tarefa do programador. Os analistas, consultores ouresponsáveis de negócio poderão cria-las e a qualquermomento actualizar as mesmas. O programador poderáentão reutilizar as regras de negócio nas suas Na realidade, este editor está a gerar um mapa XSLT, e emorquestrações para suportar uma variedade de cenários determinadas situações poderá ser mais adequado usarcomo por exemplo para determinar o caminho de execução snippets XSLT directamente no mapa. Estas opçõesde um processo de negócio, ou um valor a aplicar numa dependem muito da experiência do programador. Emtransacção. termos de estruturação/modularidade, estes mapas podem ainda ser enriquecidos com funções (Functoids), chamadasMais que um parâmetro aplicacional, este motor permite externas (SQL lookups, outros mapas) ou código XSLT,que o valor ou condição seja completamente dinâmico e .NET/C#, COM, VBscript.apenas determinado em contexto de runtime. Transacções, Excepções e Persistência de dados É comum nas aplicações Service-Oriented Architecture (SOA) ou Business Process, onde os processos podem abranger vários endpoints (sistemas), as operações não 39
  • 39. A PROGRAMARM 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 spoderem ser realizados num curto período de tempo, o queorigina a que as transacções ACID não sejam as mais O programador também tem a sua disposição aadequadas para este tipo de cenários. possibilidade de definir vários blocos (Handlers) para tratamento de excepções:Ao contrário da programação tradicional, o BizTalk Serversuporta dois tipos distintos de transacções:• Atómicas: permite que uma transacção volteautomaticamente para o seu estado anterior em caso de aoperação não seja concluída com sucesso. Podemosdesenhar orquestrações com suporte ACID (Atomic,Consistent, Isolated e Durable) configurando a Scope (oumesmo ao nível da orquestração) como atómica.• Longa duração: Estes processos podem ficar activos pordias, semanas ou por períodos de tempo mais longos,podem conter várias transacções (nested transactions), e Quando lidamos com processos de negócio,possibilita tratar excepções para recuperação de falha. nomeadamente os de longa duração, necessitamos sempreSuporta consistência e durabilidade. de falar de persistência dos dados por forma a salvaguardamos de falhas e podermos efectuar oEntre várias opções, pode-se configurar o tipo de reprocessamento a partir de uma determinado ponto dotransacção ao nível da orquestração: processo. A Orquestration engine persiste, automaticamente, o estado das instâncias em execução baseado no desenho das orquestrações efectuada pelo programador, existindo alguns eventos ou etapas em que é despoletado a operação de persistência, chamados pontos de persistência: • Ao nível do BizTalk Engine: quando as instancias das orquestrações são suspensas, quando o sistema é desligado de forma controlada, quando a engine determina hidratar/desidratar os processos ou quando uma instância da orquestração é concluída. • Ao nível da Orquestração: quando o final de uma scope transaccional é alcançado, na execução de outras orquestrações através da Start Orchestration shape, na Send Shape ou em breakpoints de debugging.Assim como definir a transação ao nivel do “scope” porforma a encapsular uma unidade de trabalho detro de um A persistência do estado das instâncias inclui: o progressocontexto de transacção: actual da instância, o estado de qualquer componente .NET que contêm informação do estado e está a ser utilizado na orquestração assim como os valores das mensagens e variáveis. Para mais informação: BizTalk Orchestration – Understanding Persistence points 40
  • 40. 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 (EDI Batch), analisar os documentos, converter os arquivosAdaptadores EDI em arquivos XML e efectuar validações EDI e/ou XSD.Inclui mais de 25 adaptadores que simplificam a integração • A pipeline de envio EDI permite converter arquivos XMLdirecta para as top “Line of Business (LOB) Applications” em documentos X1 2 ou EDIFACT, codificar as mensagens(tais como o Siebel, SAP, JD Edwards, Oracle ou Dynamics e efectuar validações XSD e/ou EDI.CRM), Base de dados (Microsoft SQL Server, Oracle, DB2)e outras tecnologias (Tibco, Java EE). • A Trading Partner Management Interface permite que uma organização defina as propriedades de processamento para os parceiros comerciais fazendo intercâmbio EDI.WCF LOB Adapter SDKFornece um modelo de programação enriquecido paradesenvolvimento de adaptadores baseados em WindowsCommunication Foundation. (WCF LOB Adapter SDK).Suporte poderoso e completo para EDI/AS2Electronic Data Interchange (EDI) é uma das formas maiscomuns de comunicação electrónica entre organizações(Facturas, encomendas, notas de débito). Estes padrões(EDIFACT, ASC X1 2) são projectados para leitura Para mais informações:electrónica, e portanto inadequados para leitura humana, • EDI Support in BizTalk Serverreflectindo à troca estruturada de dados de negócios entre • EDI Support in BizTalk Server 2000, , 2006, 2009, andsistemas utilizando um formato de dados padronizado que 201 0garante a fiabilidade dos dados através de diferenteschecksums. Monitorização de processos de negócio (BAM) O Business Activity Monitoring ou BAM é um módulo que• As aplicação BizTalk EDI contém pipelines, orquestrações captura dados de negócio e milestones do processoe schemas que são úteis e indispensáveis para a permitindo que os analistas de negócios monitorizem ecapacidade de processar transacções de EDI. analisem os dados em tempo real.• A pipeline de entrada EDI é capaz de dividir os lotes EDI 41
  • 41. A PROGRAMARM 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 benefício do BAM é que proporciona a visibilidade sobre os processos de negócios. Este pequeno grande efeito, poderá ser o ideal para envolver os responsáveis de negócio na operação activa dos processos criando um feedback loop importantíssimo para a melhoria contínua dos projectos de automação (BPA). Uma vez que a implementação do BAM é muitas vezes apenas a definição do modelo e toda a implementação é automatizada (geradores), o esforço para incluir o BAM éEstas ferramentas permitem libertar os programadores da muito simplificado para os programadores.preocupação, na altura do desenvolvimento, de qual ainformação que pretendem recolher e da implementação da Mais informações: Business Activity Monitoringmonitorização, uma vez que os analistas podemdesenvolver o seu modelo com uma ferramenta BizTalk WCF Service Publishing Wizard e BizTalkextremamente familiar (Microsoft Excel) e o administrador WCF Service Consuming Wizardpoderá posteriormente ligar o modelo com os processos Mesmo quando for preciso expor um processo como umutilizando a ferramenta Tracking Profile Editor. Web Service, existem wizards que nos ajudam a criar tanto os projectos WCF, como na instalação 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 abstraírem-se de programação repetitiva, agilizando o processo de integração. BizTalk Flat File Schema Wizard Uma dos padrões mais antigos para a troca de mensagens é a utilização de arquivos texto (Flat Files) como como: CSV ou TXT, muitos deles customizados à medida para os sistemas. Porém com a adopção do XML como formato de eleição na troca de mensagens, muitas vezes é necessário transformar arquivos texto em XML e vice-versa. 42
  • 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 sA ferramenta “BizTalk Flat File Schema Wizard” permite ao A definição das regras de “parsing” fica embebida noprogramador facilmente e de forma visual efectuar schema XSD, simplificando logo toda a reutilização destestransformação de arquivos de texto posicionais: esquemas nos diferentes pontos do processo. Em qualquer CABEÇALHOXXXXXXXXXXXXXXXXXXXX ponto o documento poderá ser novamente traduzido para CORPOXXXXXXXXXXXXXXXXXXXXXXXX flat-file pois a definição é declarativa e simétrica. CORPOXXXXXXXXXXXXXXXXXXXXXXXX RODAPÉXXXXXXXXXXXXXXXXXXXXXXX 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 vão encontrar suporte para debug, seja dos orchestrations, ou dos mapas (XSLT), ou componentes de pipelines. Bem como para a realização de Testes Unitários e muitas outras ferramentas do Visual Studio (da Microsoft ou de outros fornecedores).Ou delimitado por símbolos: Conclusão 1 999990;1 ;P01 1 0;1 ;1 ;201 1 0307; Conforme apresentado neste artigo, com o foco no 1 999990;2;P0529;2;2;201 1 0307; desenvolvimento de soluções de integração empresarial, o 1 999990;3;P0530;3;3;201 1 0307; BizTalk Server 201 0 simplifica a integração de aplicações, 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 número de endpoints cresce cada vez mais e o tipo de mensagens transaccionadas se torna cada vez mais crítico num mercado cada vez mais electrónico 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 são as tecnologias e plataformas de Integração (EAI): BizTalk e SOAP / XML / XSLT e Net, que utiliza desde 2002. É um participante bastante activo nos fóruns da Microsoft (MSDN BizTalk Server Forums) e autor do blog http://sandroaspbiztalkblog.wordpress.com - Twitter: @sandro_asp 43
  • 43. A PROGRAMARO E d i to r d e te xto VI MIntroduçãoO editor de texto Vim, é uma aplicação open sourcedisponível para os vários sistemas operativos Unix-based,existindo também alguns “ports” para Windows, como ocaso do cygwin, bem como diversas versões gráficas. Paraquem não conhece, o Cygwin é uma espécie de “ambienteunix” e linha de comandos para o sistema operativo daMicrosoft, no entanto não é possível através deste“ambiente”, correr aplicações criadas nativamente paraLinux, existindo uma necessidade de as recompilar.O seu conjunto alargado de funcionalidades, como o Utilização do Syntax-Highlightsyntax-highlight, fazem com que este seja um editor detexto útil para programadores, daí a razão deste artigo. Uma das principais funcionalidades para programadores do vim é o syntax highlight, que permite distinguir o códigoCom este artigo, pretendo fazer um "tour" pelo Vim, mais mais facilmente, e consequentemente ser um excelentepropriamente pela versão 7.3, não vou abordar todas as auxílio ao programador, como podemos ver na imagemfuncionalidades do mesmo, pois se o fizesse, talvez desse seguinte:origem a um livro. O objectivo deste artigo é que no fim domesmo fiquem a saber os conceitos básicos para Esta funcionalidade, poderá ser usada abrindo um ficheirodesfrutarem do editor. de código, com a extensão apropriada, por exemplo, um ficheiro com o nome programa.c, irá ser aberto com oInstalar o Vim syntax highlight para c.Em muitas distribuições de Linux e no Mac OS X, o Vim já Como abrirvem instalado, no entanto certas distribuições como o LinuxUbuntu não o trazem instalado, e a instalação deverá ser Se utilizar um “port” para Windows, poderá abri-lo comofeita abrindo uma janela do terminal e escrevendo o qualquer outro programa (menu iniciar ou acedendo aoseguinte comando: executável do mesmo), se utiliza cygwin, Linux ou Mac OS X, deverá executá-lo através do terminal, existindo duas $ s u d o a pt-g et i n s ta l l vi m formas de o abrir:Poderá também utilizar o Software Center desta Se quisermos abrir um ficheiro já existente escrevemos odistribuição. seguinte comando no terminal:Se utiliza Windows e não desejar instalar o Linux nem que $ vi m < d i rec tori a e n ome d o fi c h ei ro>seja recorrendo a uma máquina virtual, poderá recorrer aocygwin ou a uma versão gráfica deste editor como a que seencontra no site http://www.vim.org. Se quisermos especificar um nome para um novo ficheiro 44
  • 44. A PROGRAMAR O E d i to r d e te xto VI Mescrevemos o seguinte comando no terminal: 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 $ vi m < n ome d o fi c h ei ro> , c a s o es tej a n a mes ma contrario (insert mode para command mode), usa-se a tecla d i rec tori a on d e o q u er c ri a r/ a bri r. esc. Last Line Mode – É um submodo do modo Command,Para abrir o editor de texto vim com um ficheiro sem nome, para aceder ao mesmo, prime-se a tecla : no modopodemos utilizar o seguinte comando no terminal: Command. $ vi m O Modo Insert Quando nos encontramos no modo insert, irá aparecerIremos então ver o ecrã inicial do vim: essa indicação 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 é Este modo, é bastante fácil de usar, as teclas das setasque eu começo a escrever?”. O motivo de não conseguir movem o cursor, e poderá escrever livremente usando asescrever nada, é porque você não se encontra no modo teclas. Para guardar o documento, é necessário recorrerque possibilita escrever, ou seja o modo insert, mas afinal o ao modo command, para isso, e tal como anteriormenteque são os modos do vim? Vamos ver na próxima secção. referido, prime-se a tecla esc.Os modos do vim O Modo CommandO vim possui 3 modos de edição, o modo Insert, o modo Comandos para Mover o CursorCommand e o Last Line Mode (modo última linha), vamos O cursor pode fazer movimentos simples e múltiplos nestever quais as funções de cada um deles: modo, uma das características do Vim é o facto de poder usar teclas do teclado principal para além das do cursor.Insert – Permite inserir texto, sendo por isso o modo básico Este sistema tem muitos fãs, uma vez que possibilita moverdo editor de texto, e possibilita escrever. o cursor sem ser necessário tirar os dedos do centro doCommand – Permite inserir comandos, que permitemexecutar as várias funcionalidades do editor, como guardare formatar o texto, fazer tipos de deslocamento específicos,etc. Para introduzir estes comandos, usamos as teclas doteclado, por exemplo, para entrar no modo insert, usamos atecla i, que é a tecla que deverá premir para começar a 45
  • 45. A PROGRAMARO E d i to r d e te xto VI Mteclado. Na tabela abaixo, podemos ver uma listagem das Se tentar gravar um ficheiro com o mesmo nome de um játeclas utilizadas para os movimentos singulares: existente, poderá usar o comando :w! para fazer overwrite, ou seja substituir o ficheiro mais antigo pelo novo Edições Simples Quando inserimos texto no ficheiro, este raramente está perfeito, muitas vezes encontramos erros. É por esteÉ também possível efectuar movimentos múltiplos através motivo que o Vim, contém um conjunto de ferramentas quedestas teclas de movimentos simples precedendo a tecla nos permitem fazer algumas edições simples aocom o número de vezes que pretendemos carregar, por documento.exemplo, se quisermos avançar quatro caracteres para adireita, em vez de premirmos 4 vezes a tecla "l", podemos Na tabela seguinte, podemos ver alguns dos comandosescrever "4l". Existem também mais algumas formas úteis mais utilizados para editar o documento:de movimentar o cursor:Gravar o documentoPara gravar o documento, é necessário também recorrer aomodo de comando, para isso utilizam-se os seguintes A tecla “c” tem como função substituir texto e tem acomandos: vantagem de podermos dizer quanto texto queremos alterar, combinando-a com teclas de movimento. Desta forma, eis algumas das possibilidades de utilização desta tecla para que melhor fiquem a perceber a sua utilização: Com estes três exemplos, em princípio deverá compreender como funciona a tecla “c”. Vejam as teclas de movimento anteriormente referidas e abuse desta funcionalidade. 46
  • 46. A PROGRAMAR O E d i to r d e te xto VI M deslocar (fazer scroll) ao ecrã:Mover TextoUma vez que o Vim, guarda temporariamente num buffer otexto eliminado, é possível 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 Conclusãodesejado com a tecla “p”. No entanto tenha em atenção queapós qualquer outra edição, o texto é limpo, por isso Termina assim, este tour pelo vim. Agora que já conhece osrestaure sempre antes de qualquer outra edição. conceitos básicos deste editor e se estiverem interessado em perceber mais poderá encontrar diversos sites queCopiar Texto explicam as funcionalidades avançadas deste editor.Para copiar texto no vim, usa-se a tecla “y” seguida de uma Para mim, este é um excelente editor, o facto de não dartecla de movimento, ou da tecla “y” para copiar a linha em uso ao rato, faz com que tenha como público-alvo os maisque o cursor se encontra. Para colar, usa-se a tecla “p”. puristas do teclado, no entanto, e apesar deste argumento,Para obter mais informações, acerca de alguns exemplos isso não significa que as pessoas que “gostam” do rato,de teclas de movimento que poderá usar, consulte as não o possam usar, pois este editor é bastante simples detabelas referentes aos movimentos. utilizar, e a grande quantidade de comandos disponíveis, tornam mais rápidas certas operações.Repetir ou anular o comando anterior Se precisar de ajuda, o vim possui uma série deSe desejar fazer várias vezes o mesmo comando, coloque documentos, bastando para aceder aos mesmos, entrar noo cursor no local onde o deseja correr e prima a tecla ponto Command Mode, e digitar o comando :help.(.). Irá aplicar novamente o comando anterior.Caso tenha cometido um erro de edição, recorra à tecla “u”, Um bom sítio para começar é a cheat-sheet disponível empara anular a última acção. http://www.tuxfiles.org/linuxhelp/vimcheat.html, onde poderá consultar outros comandos úteis.Deslocamentos no ecrãExistem também algumas sequências de teclas quepodemos digitar no modo command e que permitem AUTOR Escrito por Fábio Domingos Estudante de Gestão de Sistemas de Informação na Escola Superior de Ciências Empresariais do Instituto Politécnico de Setúbal, tem como principal hobbie a informática, nomeadamente as áreas de programação, bases de dados e IT Support. É moderador global do forum Portugal-a-Programar, membro do Staff desta revista e por vezes contribui com soluções para a comunidade Experts-Exchange. Blog pessoal - @fdomingos 47
  • 47. COLUNASCORE DUMP - Fazer mal = Rápido?VISUAL (NOT) BASIC - Introdução ao OpenXML SDK
  • 48. CORE DUMPFa ze r m a l = R á p i d o ?Em conversa recente com um programador sobre uma Silêncio pensativo...determinada opção que não me parecia a melhor, este Resposta inconclusiva...respondeu-me que “teve de ser assim porque não haviatempo”. A verdade é que a larga maioria das pessoas aceita esta expressão como um dogma. “Para fazer mais rápido tenhoEsta justificação, ou fatalidade, é comum no meio da de fazer mal” parece uma fatalidade, qual fado de quemprogramação, sendo impossível a um profissional desta ganha a vida a programar. No entanto, quandoárea não se ter cruzado com ela. Todos nós, mesmo os confrontadas com o facto de que demorariam mais tempoque não são profissionais desta área, já olharam para o seu se fizessem bem, nenhuma, até ao dia de hoje, metrabalho e o criticaram. Isso é excelente dado que indica respondeu que sim, que necessitaria de mais tempo paraque sabemos fazer melhor. Então porque não o fazemos? fazer as coisas de forma correcta.Só porque havia pouco tempo? A minha teoria, obviamente não provada cientificamente, éOuvi tantas vezes esta explicação, ou desculpa, que tal me de que com a pressão, a maioria das pessoas entra emlevou a parar e pensar um pouco sobre a mesma. stress e baixa os seus próprios padrões de qualidade, aceitando como médio um trabalho que rejeitariam emSem dúvida que os prazos têm poderes mágicos sobre os condições normais. Em casos mais críticos, esta baixa deprojectos. Quando um dead-line se aproxima começa a padrões é acompanhada por trashing mental, onde asmagia: os testes passam para segundo plano, a pessoas deixam de conseguir raciocionar de forma clara,documentação resume-se a pouco mais do que código afectando assim o resultado final do seu trabalho.fonte e o código fonte começa a ser escrito de formamenos ortodoxa... E é precisamente neste último ponto Sejam quais forem as razões na verdade “fazer mal” nãoque reside a origem da justificação de código mal feito: a tal implica que se faça “mais rápido”. Obviamente haveráfalta de tempo... excepções, mas mesmo sobre a pressão de um dead line devemos ser capazes de manter a cabeça fria e ser fieisSeguindo um raciocínio lógico, corroborado ao longo de aos nossos próprios padrões de forma a não comprometeranos a fio pela expressão “falta de tempo => mau código”, o resultado final do nosso trabalho. Numa área onde aqualquer um poderá acreditar que tal é verdade. Para pressão de dead lines agressivos é demasiado recorrente,provar se esta expressão é verdadeira ou falsa comecei a não ceder e saber manter os seus padrões é um factorperguntar a todos quantos quantos usam este dogma, a valiosos que diferencia os bons profissionais.seguinte questão: “ Dizes que fizeste mal porque eramais rápido. Isso quer dizer que se fizesses bem No entanto, e infelizmente, continuo a ouvir esta expressãodemorarias mais tempo?” demasiadas vezes... AUTOR Escrito por Fernando Martins Faz parte da geração que se iniciou nos ZX Spectrum 48K. Tem um Mestrado em Informática e mais de uma década de experiência profissional nas áreas de Tecnologias e Sistemas de Informação. Criou a sua própria consultora sendo a sua especialidade a migração de dados. 50
  • 49. VISUAL (NOT) BASICI n tro d u ç ã o a o O p e n XM L S D KResumidamente, o OpenXML é um padrão aberto (ISO) de Uma grande vantagem desta estrutura é a possibilidade dearquivos para documentos, folhas de cálculo e aceder a uma determinada parte do arquivo sem que sejaapresentações, que é baseado em XML e que pode ser necessária a sua leitura total, o que leva a ganhos deimplementado por diversas aplicações em diversas tempo no que toca a arquivos de grande dimensão.plataformas.A sua principal função é poder alterar e visualizar o Uma grande vantagemconteúdo dos documentos através de diversas aplicações, desta estrutura é adesenvolvidas em diferentes plataformas, garantindo assima fidelidade da informação sem qualquer perda de dados. possibilidade de aceder a uma determinada parte doComo é a sua estrutura arquivo sem que sejaUm arquivo no formato OpenXML é um arquivo ZIP que necessária a sua leituracontem uma estrutura de pastas, arquivos XML e maisqualquer outro objecto que esteja presente no documento. totalDai o formato ocupar substancialmente menos do que asversões mais antigas (*.doc, *.xml, *.ppt) Este SDK também oferece suporte a programação através de LINQ para XML, o que torna a programação com XMLSe renomearmos, por exemplo, um ficheiro *.xlsx para *.zip muito mais fácil do que o tradicional modelo depodemos ver a sua estrutura e os ficheiros XML que programação.compõem este documento. Usando o Open XML SDK 2.0Productivity Tool permite-nos também ver a estrutura O que pode ser feito com OpenXMLhierarquicamente e o seu conteúdo. Neste exemplopodemos ver que o Book1 .xlsx tem três Worksheets O OpenXML permite, como já foi referido anteriormente, a(Sheet1 , Sheet2 e Sheet3) e que os textos das worksheets manipulação e criação de documentos, folhas de cálculo esão guardados no ficheiro SharedString.xml. apresentações, para tal existem as seguintes subcategorias: WordProcessingML - Manipulação de documentos de texto (Word) SpreadSheetML - Manipulação de folhas de cálculo (Excel) PresentationML - Manipulação de apresentações (PowerPoint) Para manipular facilmente este tipo de ficheiros, existe o Open XML SDK que é gratuito e de fácil/rápida instalação. 51
  • 50. VISUAL (NOT) BASICI n tro d u ç ã o a o O p e n XM L SD KArquitectura Stream Reading/Writing : O seu funcionamento éO Open XML SDK é implementado camadas, a partir de semelhante ao funcionamento das classes XmlReader euma camada de base que vai subindo a uma de maior nível XmlWriter, mas são mais fáceis de usarde funcionalidade. O diagrama abaixo mostra o esquemado Open XML SDK. O pen XML File Format Shema Level Validation : Esta camada facilita a depuração e validação de documentos Open XML Additional Semantic Validation : Fornece informações adicionais com base em restrições e sintaxeSystem Support.NET Framework 3.5: Simplifica a manipulação dosficheiros XML mais simples através de Linq to XML Potencial Helper FunctionsSystem.IO.Packaging : Adiciona, edita e remove os Hight Level Functions : É um auxiliar com exemplos deficheiros XML contidos no pacote código para executar operações comuns. Estas funções têm como função modificar o XMLOpen XML Schemas : Estes esquemas são a base doOpen XML SDK que actualmente é baseado no padrãoECMA-376Open XML File Format Base Level VantagensOpen XML Packaging API : Este componente é construído A principal vantagem de usar o Open XML SDK é que ésobre o componente System.IO.Packaging. Em vez de totalmente suportado no servidor, ao contrário dosretornar partes do documento, retorna classes de tipos e aplicativos do Microsoft Office. Não necessita de ter oobjectos. Microsoft Office instalado, para criar ficheiros neste formato, e além disso, há uma enorme vantagem deOpen XML Low-Level DOM : A grande vantagem deste desempenho no desenvolvimento com o Open XML quandocomponente é que se pod e ver facilmente as propriedades se trata de um grande número de documentos. Podem sercontidas numa determinada classe através do IntelliSense criados milhares de documentos em segundos! 52
  • 51. VISUAL (NOT) BASIC I n tro d u ç ã o a o O p e n XM L S D K escolham a referência “DocumentFormat.OpenXML”, noO Open XML SDK é um formato especializado na separador .NETmanipulação e criação de pacotes de Open XML.O SDK é totalmente compatível com a estrutura e esquemado Open XML Formats. A principal vantagemde usar o Open XML SDKé que é totalmentesuportado no servidor ...não necessita de ter oMicrosoft Office instalado Exemplos de utilizaçãoLimitações Exemplo 1Não é um substituto para o Microsoft Office e além disso, énecessário compreender a estrutura dos formatos para usar Este exemplo mostra como efectuar uma simpleso Open XML SDK. exportação do conteúdo de uma DataGridView para uma folha de Excel, usando um TemplateNão é possível converter formatos Open XML para outrosformatos, como HTML ou XPS. Não garante a validade dodocumento quando se opta por manipular directamente oXML. Não possui um layout ou funcionalidades de recalculoUtilizaçãoO SDK pode ser obtido através desta hiperligação:http://bit.ly/jkaykKNecessário: “OpenXMLSDKv2.msi” – É aqui que está a Dll Criamos um template:que vamos precisarOpcional : “OpenXMLSDKTool.msi” – É uma espécie deexplorador do arquivo (Open XML SDK 2.0 ProductivityTool), onde se pode visualizar o seu esquema (árvore) deconstrução, documentação, etc.. Também dispõe de umgerador de código, mas apenas para C#.Depois de instalado, terá de ser referenciado. Para isso Agora guardamos o nosso template com o nome 53
  • 52. VISUAL (NOT) BASICI 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 ( OfDepois de termos o template criado, vamos adicionar aos S h eetDa ta ) ( )resources da aplicação 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 dDepois do template pronto vamos passar ao código. F or E a c h L i n h a As Da ta Gri d Vi ewRow I n Dg v. RowsPrimeiro devem-se importar os namespaces necessários Cri a u ma n ova l i n h a I mports Doc u men tF orma t. Open Xml R = N ew Row I mports Doc u men tF orma t. Open Xml . Pa c ka g i n g R. RowI n d ex = I mports Doc u men tF orma t. Open Xml . S prea d s h eet 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 dCódigo do botão exportar: 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 Pri va te S u b Btn E xporta r_Cl i c k( …) H a n d l es C = N ew Cel l Btn E xporta r. Cl i c k C. Cel l Referen c e = Col u n a . N a me & L i n h a . I n d ex E s c reve o templ a te n u ma pa s ta temporá ri a C. Da ta Type = Cel l Va l u es . S tri n g ( ) Di m fi c h ei ro As S tri n g = Ad i c i on a o va l or à c ol u n a M y. Compu ter. F i l eS ys tem. S pec i a l Di rec tori es . Tem C. Cel l Va l u e = p & " L i s ta Cl i en tes . xl s x" 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 ( ) ) M y. Compu ter. F i l eS ys tem. Wri teAl l Bytes ( , 54
  • 53. VISUAL (NOT) BASIC I n tro d u ç ã o a o O p e n XM L S D K Importação dos namespaces necessários Ad i c i on a a c ol u n a à l i n h a I mports Doc u men tF orma t. Open Xml R. Appen d Ch i l d ( C) 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 N ext Ad i c i on a a l i n h a à fol h a Código do botão exportar 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 Di m fi c h ei ro As S tri n g = Pa rte. Workbook. S a ve( ) " C: E xporta c a oWord . d oc x" Doc . Cl os e( ) End Usi ng 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, Depoi s d e tu d o fei to, a bre-s e a fol h a Word proc es s i n g Doc u men tType. Doc u men t) 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 rtE 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 Di m Pa ra g ra fo As Pa ra g ra ph =Como podemos ver, esta operação foi efectuada em pouco Corpo. Appen d Ch i l d ( N ew Pa ra g ra ph ( ) )tempo, com simplicidade e rapidez. E s c reve u m textoExemplo 2 Di m Texto As Ru n = Pa ra g ra fo. Appen d Ch i l d ( N ew Ru n ( ) )Este exemplo mostra como criar uma folha de Word de raiz Texto. Appen d Ch i l d ( N ew Text( TxtTexto. Text) )e colocar lá algum texto 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
  • 54. VISUAL (NOT) BASICI n tro d u ç ã o a o O p e n XM L SD KE este é o resultado: F ec h a o d oc u men to Doc . Cl os e( ) End Usi ngExemplo 3Este exemplo mostra como ler parágrafos de uma folha de ConclusãoWord. Importação dos namespaces necessários Neste artigo foi feita uma pequena abordagem ao OpenXML SDK 2.0 Productivity Tool, onde foi possível ver I mports Doc u men tF orma t. Open Xml a sua arquitectura, o que é possível fazer e quais são as I mports Doc u men tF orma t. Open Xml . Pa c ka g i n g sua vantagens e desvantagens. Resta dizer que é uma I mports Doc u men tF orma t. Open Xml . Word proc es s i n g excelente alternativa à programação directa nos objectos do Microsoft Office.Lê o texto e escreve na consola Algumas Referências Cri a u m n ovo d oc u men to Di m fi c h ei ro As S tri n g = Welcome to the Open XML SDK 2.0 for Microsoft Office " C: E xporta c a oWord . d oc x" http://bit.ly/84hC3 Abre o d oc u men to a n teri ormen te c ri a d o Office 201 0 Sample: Open XML SDK 2.0 Code Snippets for U s i n g Doc As Word proc es s i n g Doc u men t = Visual Studio 201 0 Word proc es s i n g Doc u men t. Open ( fi c h ei ro, F a l s e) http://bit.ly/azN4Pw Perc orre a c ol ec ç ã o d e pa rá g ra fos OpenXML Developer F or E a c h Pa ra g ra fo I n http://openxmldeveloper.org 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) Open XML Explained Ebook N ext http://openxmldeveloper.org/archive/2007/08/1 3/1 970.aspx AUTOR Escrito por Pedro Martins É técnico Nível III em Informática/Gestão pela Escola Profissional Cisave Exerce funções de programador numa multinacional sediada em Portugal onde trabalha com várias tecnologias da Microsoft .NET. É moderador do quadro Visual Basic.NET e ASP.NET na comunidade Portugal@Programar e também faz parte do staff da WikiTeam 56
  • 55. COMUNIDADESNetPonto - Certificações Microsoft
  • 56. COMUNIDADE NETPONTOC e rti fi c a ç õ e s M i c ro s o ftNeste artigo pretendo abordar o que é a certificaçãoMicrosoft e clarificar o leitor sobre o percurso a percorrerpara obter a certificação e quais os benefícios.Decerto que os mais interessados neste tema, já se devemter deparado com as seguintes dúvidas: Os principais benefícios que se destacam com a• O que é a certificação? obtenção da certificação são:• Quais os benefícios?• Como começar? • Reconhecimento Profissional• Que exame tenho que realizar? • Produtividade• Onde devo realizar os exames? • Certificação Internacional• Quanto custa? • Informação Privilegiada• Como são os exames? • Eventos• Como estudar? • Descontos• Quanto tempo demora obter?• Que títulos posso obter? O vasto leque de produtos e tecnologias Microsoft origina que estejam disponíveis muitos exames, o melhor seráA Certificação Microsoft não é mais do que formação filtrar pela área para a qual se pretende obter certificação.profissional, que não exige que um aluno tenha curso As áreas disponíveis são:superior para se tornar um profissional qualificado paradesenvolver e dar suporte às tecnologias Microsoft. É o • Server technologiesmétodo mais rápido e reconhecido para obter • Developer tools and applicationsconhecimento sobre os produtos e tecnologias Microsoft • Microsoft Dynamicsque estão em uso ou que acabaram de ser lançados no • Windowsmercado. A certificação é atribuída de acordo com a • Microsoft Officeaprovação nos exames oficiais da Microsoft, desta forma • Securityum aluno que obtenha aprovação em um exame, torna-se • Other solutionsMicrosoft Certified Professional (MCP) e é emitido por parteda Microsoft, um documento comprovativo da sua Escolhida a área em que o leitor se enquadra ou pretendecapacidade e qualificação, garantindo desta forma a obter certificação, coloca-se a grande questão:diferenciação no mercado. Como começar?A Microsoft oferece uma série de certificações quequalificam o profissional de acordo com a sua área de Escolher a certificação que pretende fazer;tecnologia. Escolher o primeiro exame;“Os profissionais com Certificação Microsoftdestacam-se no panorama laboral das TI” 58
  • 57. COMUNIDADE NETPONTO C e rti fi c a ç õ e s M i c ro s o ftPara escolhermos a certificação a realizar, o leitor deve Nota:pensar no(s) objectivo(s) atingir. Por exemplo, caso esteja 1 . O grau dos vários níveis aumenta de baixo para cima.interessado em melhorar os conhecimentos do dia-a-dia, Por exemplo, um Microsoft Certified IT Professional terádeve-se focar na certificação que esteja relacionada com como requisito, pelo menos, a obtenção de um título dea(s) tecnologia(s) ou produto(s) que usa mais. Suponhamos Microsoft Certified Techonology Specialist, que por sua vezque no dia-a-dia desenvolve aplicações usando Silverlight, implica a aprovação em pelo menos um exame.então é aconselhado a realizar o exame 70-506 - TS:Silverlight 4, Development e em caso de sucesso obtém o 2. O seguinte “Professional Career Chart”, permite ajudar atítulo de Microsoft Certified Technology Specialist (MCTS): orientar no percurso profissional, consulte emSilverlight 4, Development. http://bit.ly/mQHuBnA certificação está hierarquizada da seguinte forma: Mais á frente irão ser apresentadas as certificações e os respectivos títulos. Os exames podem ser realizado em qualquer centro de exames Microsoft, em Portugal temos vários, como a Ciclo, a Rumos, a Galileu, a Actual Training, etc. Todos estes centros também são centros Prometric, podendo por isso usar o site da Prometric para efectuar a marcação do exame a que propõe, sendo o custo actual de cada exame 1 40€. Saliento que ao efectuar o registo através de um centro o valor poderá ter valor de IVA acrescido.Os níveis mais comuns entre os profissionais são: MicrosoftTechnology Associate, Microsoft Certified Techonology • Até dia 30 de Junho de 201 1 , poderá usufruir daSpecialist, Microsoft Certified IT Professional / Professional possibilidade de ter um desconto de 1 5-25% no valor doDeveloper, Microsoft Office Specialist. Enquanto que exame e ainda a “second shots”, isto é, a 2ª oportunidadeMicrosoft Certified Master e Microsoft Certified Architect são para realizar o exame sem pagar mais por isso. Para maisníveis muito exigentes, com um percurso longo e para o informações consulte o seguinte link: http://bit.ly/jSuNrequal é preciso requisito muito específicos e umaexperiência e conhecimentos avançados, este níveisnormalmente são obtidos no Estados Unidos e o custodeles é muito elevado. São poucos os profissionais queobtém estes títulos. Em Portugal temos alguns profissionaiscom estes títulos, no entanto não consigo quantificar. • Para o leitor que seja estudante, chamo atenção que é 59
  • 58. COMUNIDADE NETPONTOC e rti fi c a ç õ e s M i c ro s o ftpossível até ao dia 30 de Junho de 201 1 , realizar uma • Webcasts do MSDN e Comunidadescertificação sem qualquer custo. Para mais informações • Sessões dos Eventos da Microsoft - PDC, Mix, TechEdconsulte o seguinte link: http://bit.ly/l5N43t À primeira vista poderá achar que existem muitos recursos, no entanto não é necessário que tenha que ter todos em conta. Associado ao ritmo de estudo, tipo de estudo,Nota: Um exame quando é marcado tem um prazo para disponibilidade e maturidade, assim será definido o tempopoder ser alterado ou cancelado, no entanto é preciso de preparação para um exame. É preciso ter atençãoapresentar uma justificação válida. quando se marca o exame, deve-se ter em conta um período de tempo suficiente para ficar bem preparado e aoA estrutura dos exames varia de tecnologia para tecnologia mesmo tempo não ficar com intervalo muito grande paraou de produto para produto, tanto em termos de tempo não dispersar por outras coisas.disponível para realizar a prova ou o tipo e número dequestões. Para saber mais sobre o formato dos exames Irei de seguida apresentar os títulos que se podem obter evisita as seguintes referências: os respectivos exames, de acordo com a tecnologia ou • Exam Formats: http://bit.ly/fsA9f5 produto em causa. • Microsoft Certification Exam Demo - http://bit.ly/fWoFyW Microsoft Visual Studio and MicrosoftPara além da experiência ser um factor fundamental para a .NET Framework technologiesrealização do exame, nem sempre isso é um é um dadoadquirido. Com experiência ou não é sempre bom realizar Percurso para obtenção do título - Microsoft Certifiedum estudo estruturado e para ajudar nesse estudo pode-se Techonology Specialist (MCTS)ter em conta:• Os objectivos de cada exame, pois estes apresentam • .NET Framework 3.5 - Visual Studio 2008todo o conteúdo abordado no exame.• Cursos presenciais nos centros Microsoft• Cursos Oficiais da Microsoft On-line:http://bit.ly/mRTUvj - através do portal Microsoft e-Learning,pode fazer diversos cursos on-line com preços bastantereduzidos, comparado com os cursos presenciais.• Cursos do Programa RampUp: http://bit.ly/lk49d8 - ORampUp é uma iniciativa da Microsoft onde pode fazeralguns cursos on-line totalmente gratuitos. É ideal paraquem é iniciante em um produto ou tecnologia!• Training Kits da Microsoft Press - Podem ser compradosna Microsoft Press UK, Amazon, etc. )• Exames Simulados - Existem várias empresas quefornecem exames simulados, para que possa praticar antesde fazer o exame real, como por exemplo a MeasureUp ouSelf-Test Software• Prepare o seu Próprio Plano de Estudos - No site daMicrosoft Learning pode encontrar os “Learning Guides”para cada exame de certificação, contendo todos os tópicos • .NET Framework 4.0 – Visual Studio 201 0que são abordados no exame em questão. 60
  • 59. COMUNIDADE NETPONTO C e rti fi c a ç õ e s M i c ro s o ft O guia de preparação para Microsoft VS and Microsoft .NET Framework está disponível em http://bit.ly/9sqIA5 Microsoft SQL Server Technologies - SQLPercurso para obtenção do título - Microsoft Certified Server 2008Professional Developer (MCPD) Percurso para obtenção do título - Microsoft Certified• .NET Framework 3.5 – Visual Studio 2008 Techonology Specialist (MCTS) Percurso para obtenção do título - Microsoft Certified IT Professional (MCITP)• .NET Framework 4.0 – Visual Studio 201 0 Nota: Para obter cada um dos títulos de MCITP é requerido um MCTS. O guia de preparação para Microsoft SQL Server Technologies - SQL Server 2008 está disponível em http://bit.ly/9mEOTK 61
  • 60. COMUNIDADE NETPONTOC e rti fi c a ç õ e s M i c ro s o ftMicrosoft Office System Technologies O guia de preparação para Microsoft Office System Technologies está disponível em http://bit.ly/jeiqizPercurso para obtenção do título - Microsoft CertifiedTechonology Specialist (MCTS) Microsoft Exchange Server Technology• SharePoint 2007 Percurso para obtenção do título - Microsoft Certified Techonology Specialist (MCTS) Percurso para obtenção do título - Microsoft Certified IT Professional (MCITP)• SharePoint 201 0• Project Server 201 0 O guia de preparação para Microsoft Exchange Server Technology está disponível em http://bit.ly/m1 8WvA• Project Server 2007 Microsoft Virtualization Technology Percurso para obtenção do título - Microsoft Certified Techonology Specialist (MCTS)Percurso para obtenção do título - Microsoft Percurso para obtenção do título - Microsoft Certified ITCertified IT Professional (MCITP) Professional (MCITP)• SharePoint 201 0 O guia de preparação para Microsoft Virtualization Technology está disponível em http://bit.ly/m1 8WvA 62
  • 61. COMUNIDADE NETPONTO C e rti fi c a ç õ e s M i c ro s o ftWindows 7Percurso para obtenção do título - Microsoft CertifiedTechonology Specialist (MCTS) Percurso para obtenção do título - Microsoft Certified IT Professional (MCITP)Percurso para obtenção do título - Microsoft Certified ITProfessional (MCITP) O guia de preparação para Windows Server está disponível em http://bit.ly/hr6tZk Em conclusão, a certificação Microsoft é uma mais-valia no percurso profissional de um profissional de TI, dado a possibilidade ao profissional gerir todo o processo de certificação consoante a sua disponibilidade e objectivos. O guia de preparação para Windows 7 está disponível Referências: em http://bit.ly/jUjHXw • Certificações Microsoft: http://bit.ly/f7IN3o • Apresentação - Nova Geração de Certificação Microsoft –Windows Server TechDays 201 0: http://bit.ly/dJQTPk • Microsoft Certification Exams: http://bit.ly/ewmmbiPercurso para obtenção do título - Microsoft Certified • Microsoft Certification Tutorial: http://bit.ly/hrDvYcTechonology Specialist (MCTS) • 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 Matemática – Especialidade em Computação, pela Universidade de Coimbra, actualmente é Software Developer no Porto. O entusiasmo pela área resultou na obtenção dos títulos de Microsoft Certified Profissional Developer – Windows 3.5, Microsoft Certified Tecnology Specialist – WPF 3.5, WPF 4 e Windows Forms. Faz parte de várias comunidades, tendo uma participação activa na Comunidade NetPonto e no P@P. 63
  • 62. NOTICIASFe l i z An i ve rs á ri o P@ PA comunidade Portugal-a-Programar fez 6 anos de WIKIexistência no dia 28 de Maio de 201 1 . São vários anos detrabalho e dedicação, de diversos colaboradoresvoluntários, para que tenha sido possível criar e fazercrescer uma comunidade de programadores na línguaPortuguesa.Aproveitamos para divulgar alguns números do P@P:FÓRUM A wiki da comunidade tem tido também um crescimento importante (média de 1 2.500 visualizações/mês ). No primeiros meses de 201 1 foram efectuadas várias alterações e remodelações que têm sido correspondidas com mais visitas. Esperamos que possa crescer ainda mais. Mas há mais ... 20.000 membros (23 novos membros por dia)Nos últimos meses o crescimento do fórum da comunidade 43.000 tópicos (28 novos tópicos por dia)tem sido muito significativo, com uma média de 1 .1 22.034 390.000 mensagens (200 novas mensagens por dia)visualizações por mês , recuperando uma quebra no 28 edições da revista PROGRAMARprimeiro semestre de 2009. São sem dúvida bons 208 artigos na revista PROGRAMARindicadores para o futuro! 1 1 0 redatores já contribuíram na revista PROGRAMAR 676 artigos/snippets na WikiREVISTA PROGRAMAR Estes são apenas alguns dos muitos números queA revista PROGRAMAR é sem dúvida um dos projectos poderiam ser apresentados!mais importantes da comunidade, estando neste momentonum dos melhores períodos de sempre. Embora as Numa iniciativa de divulgação do 6º aniversário, a Microsoftprimeiras edições tenham mais downloads, por estarem apoiou-nos, oferecendo t-shirts a todos os que participaramdisponíveis à mais tempo, as últimas edições (a partir da e divulgaram a iniciativa nos seus blogs e redes sociais.edição nº 25) têm tido os melhores resultados nos primeirosdois meses de lançamento e com uma média de 1 4.375 Agradecemos desde já à Microsoft, pelo apoio, e adownloads por edição. todos os que contribuem diariamente para o crescimento desta comunidade! 64