<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Blog Pronus</title>
	
	<link>http://pronus.eng.br/blog</link>
	<description />
	<lastBuildDate>Wed, 02 May 2012 22:03:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BlogPronus" /><feedburner:info uri="blogpronus" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Turma de maio do curso online de Redmine + Subversion</title>
		<link>http://feedproxy.google.com/~r/BlogPronus/~3/c7Mutv7qboQ/turma-de-maio-do-curso-online-de-redmine-subversion</link>
		<comments>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/turma-de-maio-do-curso-online-de-redmine-subversion#comments</comments>
		<pubDate>Wed, 02 May 2012 22:03:07 +0000</pubDate>
		<dc:creator>André Felipe Dias</dc:creator>
				<category><![CDATA[gerência de configuração de software]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://pronus.eng.br/blog/?p=567</guid>
		<description><![CDATA[Acontecerá entre os dias 21/05 e 01/06, a a próxima turma do curso online de Gerência de Configuração de Software com Redmine e Subversion. As aulas são baseadas em vídeo-conferência e acontecerão das 18:30 às 20:30 hs de segunda a sexta. O curso aborda o uso das ferramentas para atender às necessidades de Gerência de [...]]]></description>
			<content:encoded><![CDATA[<p>Acontecerá entre os dias 21/05 e 01/06, a a próxima turma do <a href="http://www.pronus.eng.br/cursos/gerencia_configuracao/redmine_svn.php">curso online de Gerência de Configuração de Software com Redmine e Subversion</a>. As aulas são baseadas em vídeo-conferência e acontecerão das 18:30 às 20:30 hs de segunda a sexta.<br />
O curso aborda o uso das ferramentas para atender às necessidades de Gerência de Configuração de Software. São mais de 50 exercícios práticos guiados por um processo que define um fluxo de trabalho correto de operação das ferramentas. Entre o material fornecido está uma <a href="http://www.pronus.eng.br/maquinas_virtuais/redmine_svn_hg.php">máquina virtual pré instalada e configurada</a> que pode ser usada diretamente na produção. O programa completo se encontra na <a href="http://www.pronus.eng.br/cursos/gerencia_configuracao/redmine_svn.php">página do curso</a>. Faça sua <a href="http://www.pronus.eng.br/formularios/reserva_online.php">reserva online</a> agora mesmo!</p>
<img src="http://feeds.feedburner.com/~r/BlogPronus/~4/c7Mutv7qboQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/turma-de-maio-do-curso-online-de-redmine-subversion/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/turma-de-maio-do-curso-online-de-redmine-subversion</feedburner:origLink></item>
		<item>
		<title>Curso online de Gerência de Configuração de Software com Redmine e Subversion</title>
		<link>http://feedproxy.google.com/~r/BlogPronus/~3/SJruSoLFbcA/curso-online-de-gerencia-de-configuracao-de-software-com-redmine-e-subversion</link>
		<comments>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/curso-online-de-gerencia-de-configuracao-de-software-com-redmine-e-subversion#comments</comments>
		<pubDate>Fri, 27 Jan 2012 15:24:36 +0000</pubDate>
		<dc:creator>André Felipe Dias</dc:creator>
				<category><![CDATA[gerência de configuração de software]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://pronus.eng.br/blog/?p=561</guid>
		<description><![CDATA[Estão abertas as inscrições para a próxima turma do novo curso online de Gerência de Configuração de Software com Redmine e Subversion. As aulas serão baseadas em vídeo-conferência e acontecerão das 19 às 21 hs de segunda a sexta, entre os dias 27/02 e 09/03. O curso aborda o uso das ferramentas para atender às [...]]]></description>
			<content:encoded><![CDATA[<p>Estão abertas as inscrições para a próxima turma do novo <a href="http://www.pronus.eng.br/cursos/gerencia_configuracao/redmine_svn.php">curso online de Gerência de Configuração de Software com Redmine e Subversion</a>. As aulas serão baseadas em vídeo-conferência e acontecerão das 19 às 21 hs de segunda a sexta, entre os dias 27/02 e 09/03.</p>
<p>O curso aborda o uso das ferramentas para atender às necessidades de Gerência de Configuração de Software. São mais de 60 exercícios práticos guiados por um processo que define um fluxo de trabalho correto de operação das ferramentas. O programa completo se encontra na <a href="http://www.pronus.eng.br/cursos/gerencia_configuracao/redmine_svn.php">página do curso</a>. Faça sua <a href="http://www.pronus.eng.br/formularios/reserva_online.php">reserva online</a> agora mesmo!</p>
<img src="http://feeds.feedburner.com/~r/BlogPronus/~4/SJruSoLFbcA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/curso-online-de-gerencia-de-configuracao-de-software-com-redmine-e-subversion/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/curso-online-de-gerencia-de-configuracao-de-software-com-redmine-e-subversion</feedburner:origLink></item>
		<item>
		<title>Curso online de Gerência de Configuração de Software com Trac e Subversion</title>
		<link>http://feedproxy.google.com/~r/BlogPronus/~3/YCYaCWSHzRU/curso-online-de-gerencia-de-configuracao-de-software-com-trac-e-subversion</link>
		<comments>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/curso-online-de-gerencia-de-configuracao-de-software-com-trac-e-subversion#comments</comments>
		<pubDate>Mon, 16 Jan 2012 11:30:35 +0000</pubDate>
		<dc:creator>André Felipe Dias</dc:creator>
				<category><![CDATA[gerência de configuração de software]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://pronus.eng.br/blog/?p=555</guid>
		<description><![CDATA[Começa no dia 30 de janeiro a mais nova turma do curso online de GCS com Trac e Subversion. O curso será baseado em vídeo-conferência, com aulas de segunda a sexta, das 19 às 21hs, em total de 20 horas. Cada aluno terá um repositório próprio do Trac/Subversion, apostila e também recebe uma máquina virtual [...]]]></description>
			<content:encoded><![CDATA[<p>Começa no dia 30 de janeiro a mais nova turma do curso online de GCS com Trac e Subversion. O curso será baseado em vídeo-conferência, com aulas de segunda a sexta, das 19 às 21hs, em total de 20 horas.</p>
<p>Cada aluno terá um repositório próprio do Trac/Subversion, apostila e também recebe uma máquina virtual pré-configurada pronta para uso no projeto de sua equipe.</p>
<p>Veja mais informações na <a href="http://www.pronus.eng.br/cursos/gerencia_configuracao/curso_trac_svn.php">página do curso</a>.</p>
<p><a href="http://www.pronus.eng.br/formularios/reserva_online.php">Faça já sua reserva</a>! Aproveite os descontos para duas ou mais inscrições.</p>
<img src="http://feeds.feedburner.com/~r/BlogPronus/~4/YCYaCWSHzRU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/curso-online-de-gerencia-de-configuracao-de-software-com-trac-e-subversion/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/curso-online-de-gerencia-de-configuracao-de-software-com-trac-e-subversion</feedburner:origLink></item>
		<item>
		<title>Pronus lança Máquina Virtual com Servidor de Aplicação Voltado para Gerência de Configuração de Software</title>
		<link>http://feedproxy.google.com/~r/BlogPronus/~3/b_e6dMqHvu0/pronus-lanca-maquina-virtual-com-servidor-de-aplicacao-voltado-para-gerencia-de-configuracao-de-software</link>
		<comments>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/pronus-lanca-maquina-virtual-com-servidor-de-aplicacao-voltado-para-gerencia-de-configuracao-de-software#comments</comments>
		<pubDate>Thu, 05 Jan 2012 10:00:49 +0000</pubDate>
		<dc:creator>André Felipe Dias</dc:creator>
				<category><![CDATA[gerência de configuração de software]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[trac]]></category>
		<category><![CDATA[pronusbox]]></category>

		<guid isPermaLink="false">http://pronus.eng.br/blog/?p=543</guid>
		<description><![CDATA[A Pronus acaba de lançar duas máquinas virtuais prontas para uso, denominadas de PronusBox, contendo servidores de aplicação direcionados à Gerência de Configuração de Software (GCS). Cada PronusBox possui uma ferramenta de controle de mudança e de controle de versão previamente instaladas e configuradas para operarem de modo integrado, conforme diretrizes específicas de GCS. A primeira [...]]]></description>
			<content:encoded><![CDATA[<p>A Pronus acaba de lançar duas máquinas virtuais prontas para uso, denominadas de <a href="http://www.pronus.eng.br/maquinas_virtuais/index.php">PronusBox</a>, contendo servidores de aplicação direcionados à <a href="http://pronus.eng.br/artigos_tutoriais/gerencia_configuracao/gerencia_configuracao.php?pagNum=0">Gerência de Configuração de Software (GCS)</a>. Cada PronusBox possui uma ferramenta de controle de mudança e de controle de versão previamente instaladas e configuradas para operarem de modo integrado, conforme diretrizes específicas de GCS.</p>
<p>A <a href="http://www.pronus.eng.br/maquinas_virtuais/trac_svn.php">primeira PronusBox</a> contém o Trac como controle de mudança e o Subversion como controle de versão. A <a href="http://www.pronus.eng.br/maquinas_virtuais/redmine_svn_hg.php">segunda PronusBox</a> disponível usa o Redmine para controle de mudança e o Subversion e o Mercurial como opções de controle de versão centralizado e distribuído respectivamente.</p>
<p>A proposta é cobrar por cada máquina uma fração do valor em horas técnicas que seriam usadas para a instalação e configuração de um servidor a partir do zero. Com uma estimativa bastante otimista de 60 horas técnicas para a preparação de um servidor equivalente, o preço de cada PronusBox varia entre <strong>R$ 300</strong> e <strong>R$ 350</strong>.  Como promoção de lançamento, neste mês de janeiro, oferecemos um desconto de 28,5% por cada PronusBox. Aproveite!</p>
<img src="http://feeds.feedburner.com/~r/BlogPronus/~4/b_e6dMqHvu0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/pronus-lanca-maquina-virtual-com-servidor-de-aplicacao-voltado-para-gerencia-de-configuracao-de-software/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/pronus-lanca-maquina-virtual-com-servidor-de-aplicacao-voltado-para-gerencia-de-configuracao-de-software</feedburner:origLink></item>
		<item>
		<title>Servidor de aplicação através de uma máquina virtual (parte 2)</title>
		<link>http://feedproxy.google.com/~r/BlogPronus/~3/Ng3jw0VS6MI/servidor-de-aplicacao-atraves-de-uma-maquina-virtual-parte-2</link>
		<comments>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/servidor-de-aplicacao-atraves-de-uma-maquina-virtual-parte-2#comments</comments>
		<pubDate>Wed, 04 Jan 2012 14:01:35 +0000</pubDate>
		<dc:creator>André Felipe Dias</dc:creator>
				<category><![CDATA[gerência de configuração de software]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://pronus.eng.br/blog/?p=536</guid>
		<description><![CDATA[No artigo anterior, apresentei o caso em que &#8220;Roberval&#8221; — um típico integrante de uma equipe de administração de redes — executou a tarefa de instalar um servidor de aplicação com Redmine e Mercurial para a equipe de desenvolvimento. Demorou vários dias para terminar e mesmo assim, ainda ficou faltando alguns ajustes. O desfecho poderia ter sido outro, [...]]]></description>
			<content:encoded><![CDATA[<p>No <a href="http://pronus.eng.br/blog/?p=461">artigo anterior</a>, apresentei o caso em que &#8220;Roberval&#8221; — um típico integrante de uma equipe de administração de redes — executou a tarefa de instalar um servidor de aplicação com Redmine e Mercurial para a equipe de desenvolvimento. Demorou vários dias para terminar e mesmo assim, ainda ficou faltando alguns ajustes.</p>
<p>O desfecho poderia ter sido outro, mais  simples e rápido. O começo seria igual, com Roberval recebendo a incumbência de instalar o servidor com Redmine e Mercurial. Porém, ao invés de preparar um servidor, prefere procurar uma solução pronta. Como os servidores da empresa já usam virtualização, então o ideal seria uma máquina virtual pré-configurada com as aplicações desejadas que pudesse ser baixada, instalada sem maiores dificuldades.</p>
<p>Uma <a href="http://www.google.com/search?sourceid=chrome&amp;ie=UTF-8&amp;q=m%C3%A1quina+virtual+redmine+mercurial">procura rápida no Google com os termos &#8220;máquina virtual redmine mercurial&#8221;</a> mostra um resultado bastante interessante logo na primeira opção. A <a href="http://www.pronus.eng.br/maquinas_virtuais/redmine_svn_hg.php">especificação da PronusBox</a> (a máquina virtual encontrada) descreve em detalhes a configuração existente e alguns procedimentos administrativos como criação de projetos e backup. Não há dúvida: é essa mesma.</p>
<p>O passo seguinte é conseguir a verba para aquisição.  Como o pedido de instalação já havia sido aprovado, a verba para aquisição da máquina virtual foi liberada sem maiores dificuldades. Além do mais, o preço é irrisório.</p>
<p>O que demorou mais tempo foi baixar os 750 MiB da máquina virtual. Depois disso, conforme esperado, a instalação foi simples e o serviço estava no ar. Ao invés de duas semanas preparando um servidor, tudo pronto em menos de um dia! Chefe contente e  desenvolvedores satisfeitos.</p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/BlogPronus/~4/Ng3jw0VS6MI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/servidor-de-aplicacao-atraves-de-uma-maquina-virtual-parte-2/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/servidor-de-aplicacao-atraves-de-uma-maquina-virtual-parte-2</feedburner:origLink></item>
		<item>
		<title>Preparação de um servidor de aplicação versus máquinas virtuais com servidores de aplicação prontos para uso (parte 1)</title>
		<link>http://feedproxy.google.com/~r/BlogPronus/~3/uNt7hI6-VbE/preparacao-de-um-servidor-de-aplicacao-versus-maquinas-virtuais-com-servidores-de-aplicacao-prontos-para-uso-parte-1</link>
		<comments>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/preparacao-de-um-servidor-de-aplicacao-versus-maquinas-virtuais-com-servidores-de-aplicacao-prontos-para-uso-parte-1#comments</comments>
		<pubDate>Wed, 28 Dec 2011 12:29:12 +0000</pubDate>
		<dc:creator>André Felipe Dias</dc:creator>
				<category><![CDATA[gerência de configuração de software]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[suporte técnico]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualização]]></category>

		<guid isPermaLink="false">http://pronus.eng.br/blog/?p=461</guid>
		<description><![CDATA[A virtualização de servidores traz algumas vantagens bastante interessantes: Otimização dos recursos disponíveis. O mesmo servidor físico pode ser multiplicado em vários servidores virtuais, economizando equipamento e energia. Independência de plataforma. Uma máquina virtual pode conter um sistema operacional diferente da máquina hospedeira. Flexibilização através de Máquinas Virtuais. Podem ser instaladas, trocadas, congeladas, salvas e [...]]]></description>
			<content:encoded><![CDATA[<p>A virtualização de servidores traz algumas vantagens bastante interessantes:</p>
<ol>
<li><strong>Otimização dos recursos disponíveis</strong>. O mesmo servidor físico pode ser multiplicado em vários servidores virtuais, economizando equipamento e energia.</li>
<li><strong>Independência de plataforma</strong>. Uma máquina virtual pode conter um sistema operacional diferente da máquina hospedeira.</li>
<li><strong>Flexibilização através de Máquinas Virtuais</strong>. Podem ser instaladas, trocadas, congeladas, salvas e até mesmo adquiridas prontas para uso com facilidade.</li>
</ol>
<p>A aquisição de uma máquina virtual com um servidor de aplicação costuma ser extremamente viável. Afinal, preparar um servidor de aplicação é trabalhoso e complicado. Entender as aplicações desejadas, descobrir as dependências, pesquisar e testar alternativas de configuração e analisar os resultados é bastante demorado, chegando facilmente a semanas de trabalho.</p>
<p>Uma caso possível (baseado em fatos reais):</p>
<p>&#8220;Robervaldo faz parte da equipe de administração de redes de uma empresa. Em uma segunda-feira qualquer, chega ao serviço e recebe a notícia que precisa preparar um servidor com o Redmine e o Mercurial (pra ontem, claro). Sem fazer a menor ideia do que sejam essas aplicações, só lhe resta recorrer ao Google. Descobre que <a href="http://www.redmine.org">Redmine</a> é uma aplicação web para gerenciamento de projetos feita em Ruby on Rails e que <a href="http://mercurial.selenic.com/">Mercurial</a> é uma ferramenta de controle distribuído de versão. O próximo passo é instalar.</p>
<p>Quase tão ruim quanto não achar nenhuma solução é achar dezenas delas. No site do Redmine existem várias e várias <a href="http://www.redmine.org/projects/redmine/wiki/HowTos" target="_blank">sugestões de como fazer a instalação</a> em diversos sistemas operacionais e versões. Nenhuma dessas receitas é &#8216;oficial&#8217;, feita por membros do projeto; são todas feitas por colaboradores externos com diferentes graus de conhecimento da ferramenta. Algumas receitas estão claramente desatualizadas, mas continuam listadas no site. Outras recomendam passos e pacotes diferentes para instalação. Qual é a melhor maneira? O jeito é experimentar.</p>
<p>Robervaldo instala a versão mais nova do Ruby, mais a versão X do pacote tal e assim por diante. Mas opa! O Redmine na versão Y não funciona com o pacote tal na versão X nem com o Ruby mais atual! E agora? Desinstala tudo e começa de novo? A instalação bagunçou outros aplicativos que estavam instalados antes? Formata, ué.</p>
<p>Tem de escolher um tipo de banco de dados. Mas qual? Postgres? MySql? Sqlite3? Uni-duni-tê&#8230;</p>
<p>Passados três dias, depois de aprender que o teste de instalação deve ser feito em uma máquina virtual, usando snapshots, o Redmine parece estar funcionando. A próxima instalação é a do Mercurial.</p>
<p><a href="http://mercurial.selenic.com/wiki/Download" target="_blank">Parece mais fácil</a>. Poucas opções. Exe ou msi? Precisa ou não do TortoiseHg? Qual Python 2.X? Salamê-minguê&#8230;</p>
<p>Ah&#8230; não é só instalar, tem de <a href="http://mercurial.selenic.com/wiki/PublishingRepositories" target="_blank">publicar os repositórios pela rede</a>. HTTP? SSH? NFS? Sorvete-colorê&#8230;</p>
<p>Uma semana se passou e o chefe em cima, cobrando. Robervaldo anda pelo corredor e os desenvolvedores que esperam o servidor olham torto. A demora deixa todo mundo tão irritado que nem a mulher do café o cumprimenta mais.</p>
<p>Mais dois dias. Acabou? Quase. Falta juntar o Redmine com o Mercurial. Robervaldo encontra um <a href="http://www.redmine.org/projects/redmine/wiki/HowTo_configure_Redmine_for_advanced_Mercurial_integration" target="_blank">artigo promissor sobre integração dos dois</a>. Epa! De 2009??? Funciona ainda? Outro link para <a href="http://ailoo.net/2009/03/authenticate-apache-against-redmine-with-authmysql/" target="_blank">autenticação do Apache pelo MySql</a>. Também de 2009??? Mas e agora, Roberval, se você usou Postgres? Planos par ao fim de semana são cancelados&#8230;</p>
<p>Mais três dias e tudo entregue. Fim da história!?!</p>
<p>Epílogo: Duas horas tranquilas depois da entrega do servidor e o telefone toca. Coisa boa não deve ser:</p>
<p>- Roberval, o pessoal quer que o Redmine <a href="http://www.redmine.org/projects/redmine/wiki/HowTo_Automate_repository_creation" target="_blank">crie automaticamente os repositórios</a>, precisa também fazer um script de backup e, aproveitando, dá uma olhada em como fazer blá blá blá&#8230;&#8221;</p>
<p>Mas tudo isso poderia ser mais simples. No <a href="http://pronus.eng.br/blog/?p=536">próximo artigo</a>, vamos abordar como a aquisição de uma máquina virtual economiza dinheiro e tempo, além de fornecer um servidor tecnicamente mais bem preparado.</p>
<img src="http://feeds.feedburner.com/~r/BlogPronus/~4/uNt7hI6-VbE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/preparacao-de-um-servidor-de-aplicacao-versus-maquinas-virtuais-com-servidores-de-aplicacao-prontos-para-uso-parte-1/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/preparacao-de-um-servidor-de-aplicacao-versus-maquinas-virtuais-com-servidores-de-aplicacao-prontos-para-uso-parte-1</feedburner:origLink></item>
		<item>
		<title>Garantindo a amarração de uma revisão a um ticket/tarefa através do script de pre-commit do Subversion</title>
		<link>http://feedproxy.google.com/~r/BlogPronus/~3/e3U6F_lFk6Q/garantindo-a-amarracao-de-uma-revisao-a-um-ticket-tarefa-atraves-do-script-de-pre-commit-do-subversion</link>
		<comments>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/garantindo-a-amarracao-de-uma-revisao-a-um-ticket-tarefa-atraves-do-script-de-pre-commit-do-subversion#comments</comments>
		<pubDate>Tue, 20 Dec 2011 13:00:03 +0000</pubDate>
		<dc:creator>André Felipe Dias</dc:creator>
				<category><![CDATA[controle de versão]]></category>
		<category><![CDATA[gerência de configuração de software]]></category>

		<guid isPermaLink="false">http://pronus.eng.br/blog/?p=502</guid>
		<description><![CDATA[As duas ferramentas principais para a Gerência de Configuração de Software (GCS) são o controle de mudança e o controle de versão. Resumidamente, uma ferramenta de controle de mudança registra solicitações de mudança no projeto através de tickets ou tarefas. O controle de versão registra a evolução dos arquivos do projeto. Ferramentas populares de controle de [...]]]></description>
			<content:encoded><![CDATA[<p>As duas ferramentas principais para a Gerência de Configuração de Software (GCS) são o controle de mudança e o controle de versão. Resumidamente, uma ferramenta de controle de mudança registra solicitações de mudança no projeto através de tickets ou tarefas. O controle de versão registra a evolução dos arquivos do projeto. Ferramentas populares de controle de mudança são o <a href="http://trac.edgewall.org/">Trac</a> e o <a href="http://www.redmine.org">Redmine</a>; de controle de versão,  <a href="http://subversion.apache.org/">Subversion</a>, <a href="http://mercurial.selenic.com">Mercurial</a> e <a href="http://git-scm.com">Git</a>.</p>
<p>As ferramentas de controle de mudança até possuem funcionalidades que exibem o histórico e o conteúdo das revisões contidas no controle de versão. Entretanto, para a GCS, o que é realmente necessário é uma amarração entre o pedido de mudança e a revisão em que está implementada e vice-versa, permitindo rastrear a solicitação até sua implementação e o caminho contrário.</p>
<p>No controle de versão, essa ligação é feita no momento da consolidação (<em>commit</em>) através da mensagem de log, onde se registra um padrão tal como &#8220;resolve #173&#8243;, que indica o ticket finalizado. Do lado do controle de mudança, a amarração correspondente é feita adicionando um comentário ao ticket/tarefa com um padrão parecido —&#8221;implementado em [238]&#8221; por exemplo —, e depois mudando o estado do ticket/tarefa para &#8216;fechado&#8217; (ou outro estado, conforme o ciclo de vida definido).</p>
<p>O registro na mensagem de log da consolidação é manual, mas o comentário adicional no ticket pode ser feito automaticamente. No Redmine, por exemplo, ao encontrar o padrão específico na mensagem de log de uma revisão, o ticket associado é fechado imediatamente.</p>
<p>O problema do registro manual na mensagem de consolidação é que um desenvolvedor desatento ou despreparado pode simplesmente não usar o padrão definido. O ideal é que haja algum tipo de validação que pelo menos exija a amarração a um ticket, mas outras checagens podem ser feitas, tais como se o ticket realmente existe, está aberto e pertencente ao autor do <em>commit</em>. No Subversion, essas validações podem ser feitas através de um script de pre-commit.</p>
<p>O script de <strong>pre-commit</strong> abaixo faz uma validação mínima, exigindo que o padrão referenciando um único ticket ou tarefa exista em toda mensagem de consolidação:</p>
<table class="highlighttable">
<tbody>
<tr>
<td class="linenos">
<div class="linenodiv">
<pre> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31</pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span class="c">#!/usr/bin/python</span>
<span class="c"># -*- coding: utf-8 -*-</span>
<span class="c">#</span>
<span class="c"># Copyright (c) 2011 Pronus Engenharia de Software</span>
<span class="c"># Copyright (c) André Felipe Dias</span>
<span class="c"># Licensed under the MIT license:</span>
<span class="c"># http://www.opensource.org/licenses/mit-license.php</span>
<span class="c"># ----------------------------------------------------------------------------------</span>

<span class="kn">import</span> <span class="nn">re</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">from</span>  <span class="nn">subprocess</span> <span class="kn">import</span> <span class="n">Popen</span><span class="p">,</span> <span class="n">PIPE</span>

<span class="n">repos_path</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="n">transaction</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
<span class="n">svnlook</span> <span class="o">=</span> <span class="s">'/usr/bin/svnlook'</span>
<span class="n">log</span> <span class="o">=</span> <span class="n">Popen</span><span class="p">(</span>
           <span class="p">(</span><span class="n">svnlook</span><span class="p">,</span> <span class="s">'log'</span><span class="p">,</span> <span class="s">'-t'</span><span class="p">,</span> <span class="n">transaction</span><span class="p">,</span> <span class="n">repos_path</span><span class="p">),</span>
           <span class="n">stdout</span><span class="o">=</span><span class="n">PIPE</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">PIPE</span><span class="p">,</span>
           <span class="n">stdin</span><span class="o">=</span><span class="n">PIPE</span>
           <span class="p">)</span><span class="o">.</span><span class="n">communicate</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
<span class="n">padrao</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">'(?:ref|refs|resolve|implementa)\s+(#[0-9]+)'</span><span class="p">,</span> <span class="n">log</span><span class="p">)</span>
<span class="n">tickets</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">'#\d+'</span><span class="p">,</span> <span class="n">log</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">padrao</span><span class="p">:</span>
    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s">''' Padrao nao encontrado. Sao mensagens de log validas:</span>
<span class="s"> ref #123</span>
<span class="s"> resolve #123</span>
<span class="s"> implementa #123'''</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">tickets</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s">'So deve haver referencia a um ticket/tarefa por consolidacao'</span><span class="p">)</span>
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span></pre>
</div>
</td>
</tr>
</tbody>
</table>
<p>Nos links abaixo, há outros exemplos de scripts de commit que podem servir de inspiração para validações mais avançadas:</p>
<ol>
<li><a href="http://trac.edgewall.org/browser/trunk/contrib">http://trac.edgewall.org/browser/trunk/contrib</a></li>
<li><a href="http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/">http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/</a></li>
</ol>
<img src="http://feeds.feedburner.com/~r/BlogPronus/~4/e3U6F_lFk6Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/garantindo-a-amarracao-de-uma-revisao-a-um-ticket-tarefa-atraves-do-script-de-pre-commit-do-subversion/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/garantindo-a-amarracao-de-uma-revisao-a-um-ticket-tarefa-atraves-do-script-de-pre-commit-do-subversion</feedburner:origLink></item>
		<item>
		<title>Python é escolhida como melhor linguagem por três anos seguidos</title>
		<link>http://feedproxy.google.com/~r/BlogPronus/~3/JnubTIkd0TA/python-e-escolhida-como-melhor-linguagem-por-tres-anos-seguidos</link>
		<comments>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/python-e-escolhida-como-melhor-linguagem-por-tres-anos-seguidos#comments</comments>
		<pubDate>Sat, 10 Dec 2011 21:51:16 +0000</pubDate>
		<dc:creator>André Felipe Dias</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://pronus.eng.br/blog/?p=455</guid>
		<description><![CDATA[Na votação feita entre os leitores do Linux Journal, Python foi escolhida como melhor linguagem de programação pela terceira vez consecutiva. E não só isso, disputando também a categoria de melhor linguagem de script, também ficou em primeiro lugar, à frente de Bash! Python ainda é uma linguagem que se usa por opção e não [...]]]></description>
			<content:encoded><![CDATA[<p>Na <a href="http://www.linuxjournal.com/slideshow/readers-choice-2011?page=27" target="_blank">votação feita entre os leitores do Linux Journal</a>, Python foi escolhida como melhor linguagem de programação pela terceira vez consecutiva. E não só isso, disputando também a categoria de melhor linguagem de script, também <a href="http://www.linuxjournal.com/slideshow/readers-choice-2011?page=28" target="_blank">ficou em primeiro lugar</a>, à frente de Bash!</p>
<p>Python ainda é uma linguagem que se usa por opção e não imposição. Como foi bem descrito <a href="http://www.johndcook.com/blog/2011/10/26/python-is-a-voluntary-language/" target="_blank">neste artigo</a>:</p>
<blockquote><p>Eu não escuto as pessoas dizerem &#8220;Eu uso Python no trabalho porque eu tenho de usar, mas eu preferia estar programando em Java!&#8221; Mas frequentemente escuto as pessoas dizerem que gostariam de usar Python no trabalho se pudessem.</p></blockquote>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/BlogPronus/~4/JnubTIkd0TA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/python-e-escolhida-como-melhor-linguagem-por-tres-anos-seguidos/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/python-e-escolhida-como-melhor-linguagem-por-tres-anos-seguidos</feedburner:origLink></item>
		<item>
		<title>Lançada a versão 1.7 do Mercurial e 1.1.5 do TortoiseHg</title>
		<link>http://feedproxy.google.com/~r/BlogPronus/~3/dHiHSxn7rCE/lancada-a-versao-1-7-do-mercurial-e-1-1-5-do-tortoisehg</link>
		<comments>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/lancada-a-versao-1-7-do-mercurial-e-1-1-5-do-tortoisehg#comments</comments>
		<pubDate>Wed, 10 Nov 2010 13:52:01 +0000</pubDate>
		<dc:creator>André Felipe Dias</dc:creator>
				<category><![CDATA[mercurial]]></category>
		<category><![CDATA[lançamento]]></category>

		<guid isPermaLink="false">http://pronus.eng.br/blog/?p=443</guid>
		<description><![CDATA[O Mercurial chega à versão 1.7 com uma série de melhorias em diversas áreas. A lista completa das mudanças está disponível neste link. O TortoiseHg continua seguindo os lançamentos do Mercurial e, nesta versão, além de acompanhar as mudanças da versão 1.7 do Mercurial também faz algumas pequenas correções. A lista está disponível aqui.]]></description>
			<content:encoded><![CDATA[<p>O Mercurial chega à versão 1.7 com uma série de melhorias em diversas áreas. A lista completa das mudanças está disponível <a href="http://mercurial.selenic.com/wiki/WhatsNew" target="_blank">neste link</a>.</p>
<p>O TortoiseHg continua seguindo os lançamentos do Mercurial e, nesta versão, além de acompanhar as mudanças da versão 1.7 do Mercurial também faz algumas pequenas correções. A lista está disponível <a href="http://bitbucket.org/tortoisehg/stable/wiki/ReleaseNotes#tortoisehg-115" target="_blank">aqui</a>.</p>
<img src="http://feeds.feedburner.com/~r/BlogPronus/~4/dHiHSxn7rCE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/lancada-a-versao-1-7-do-mercurial-e-1-1-5-do-tortoisehg/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/lancada-a-versao-1-7-do-mercurial-e-1-1-5-do-tortoisehg</feedburner:origLink></item>
		<item>
		<title>Turmas de junho em São Paulo e Brasília do curso de Gerência de Configuração de Software com Trac e Subversion</title>
		<link>http://feedproxy.google.com/~r/BlogPronus/~3/LFfegQrTUqc/turmas-de-junho-em-sao-paulo-e-brasilia-do-curso-de-gerencia-de-configuracao-de-software-com-trac-e-subversion</link>
		<comments>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/turmas-de-junho-em-sao-paulo-e-brasilia-do-curso-de-gerencia-de-configuracao-de-software-com-trac-e-subversion#comments</comments>
		<pubDate>Thu, 06 May 2010 12:45:37 +0000</pubDate>
		<dc:creator>André Felipe Dias</dc:creator>
				<category><![CDATA[treinamento]]></category>
		<category><![CDATA[curso]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://pronus.eng.br/blog/?p=437</guid>
		<description><![CDATA[Estão abertas as inscrições para as turmas de junho do curso de Gerência de Configuração de Software com Trac e Subversion que acontecerão em São Paulo &#8211; SP e Brasília &#8211; DF. As datas e os links para cada turma seguem abaixo: São Paulo &#8211; SP: Módulo Básico: 07 e 08 (manhã) de junho de [...]]]></description>
			<content:encoded><![CDATA[<p>Estão abertas as inscrições para as turmas de junho do curso de Gerência de Configuração de Software com Trac e Subversion que acontecerão em São Paulo &#8211; SP e Brasília &#8211; DF. As datas e os links para cada turma seguem abaixo:</p>
<p>São Paulo &#8211; SP:</p>
<ul>
<li><a href="http://www.pronus.eng.br/calendario/evento.php?turma=2161" target="_blank">Módulo Básico: 07 e 08 (manhã) de junho de 2010</a></li>
<li><a href="http://www.pronus.eng.br/calendario/evento.php?turma=2162">Módulo Avançado: 08 (tarde) e 09 de junho de 2010</a></li>
</ul>
<p>Brasília &#8211; DF:</p>
<ul>
<li><a href="http://www.pronus.eng.br/calendario/evento.php?turma=2159" target="_blank">Módulo Básico: 14 e 15 (manhã) de junho de 2010</a></li>
<li><a href="http://www.pronus.eng.br/calendario/evento.php?turma=2160" target="_blank">Módulo Avançado: 15 (tarde) e 16 de junho de 2010</a></li>
</ul>
<p>As reservas podem ser feitas através do <a href="http://www.pronus.eng.br/formularios/reserva_online.php">formulário de inscrição</a>.</p>
<img src="http://feeds.feedburner.com/~r/BlogPronus/~4/LFfegQrTUqc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/turmas-de-junho-em-sao-paulo-e-brasilia-do-curso-de-gerencia-de-configuracao-de-software-com-trac-e-subversion/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://pronus.eng.br/blog/http:/pronus.eng.br/blog/turmas-de-junho-em-sao-paulo-e-brasilia-do-curso-de-gerencia-de-configuracao-de-software-com-trac-e-subversion</feedburner:origLink></item>
	</channel>
</rss>

