Rupeal
RSSLinkedInTwitterFacebook

Arquivo para a categoria ‘Tips’

Novos ramos

Este post foca-se na estrutura do nosso repositório de controlo de versões e como este responde às necessidades de uma aplicação web.

Os exemplos dados são para o Subversion – que é o que nós usamos- mas a lógica do repositório pode ser usada noutros sistemas de controlo de versões.

O Problema

A aplicação está “live” e a ser usada por milhares de utilizadores.

Estás a desenvolver a próxima “killer feature”, mas precisas de continuamente aplicar correções à aplicação.

Como aplicar pequenas correções quando o código está em pleno desevolvimento, logo não estável?

Pior a aplicação deixou de responder, tens utilizadores pendurados, o repositório está num estado inconsistente, o que fazer?

PÂNICO!MEDO! Ir para agricultor?

Os mais aventureiros dirão, “editar o código live no servidor com o Vim”. Certo, mas não é solução para tudo. Precisamos de uma solução melhor.

Mas primeiro uma breve descrição dos ambientes que o nosso repositório tem de suportar.

Três Ambientes

No nosso caso temos três ambientes, onde desenvolvemos, testamos e corremos a nossa aplicação.

Desenvolvimento

Onde o desenvolvimento da aplicação é feito.

Staging

Onde testamos novas funcionalidades. O ambiente de Staging é o mais semelhante possível ao ambiente de produção, de modo a minimizar surpresas indesejadas aquando da passagem a produção.

Produção

Aquele que os nossos utilizadores vêm e usam. A versão mais estavél do nosso código.

Novos Ramos

Depois da aplicação estar em produção, ter apenas um ramo no controlo de versões rapidamentamente se torna um problema(acreditem em nós, já passamos por isso).

A nossa solução foi estruturar o repositório de modo a que este espelhasse os ambientes descritos anteriormente. Assim temos:

  • trunk – ramo de desenvolvimento.
  • branches/releases/live – ambiente de produção, a versão “live” da aplicação.
  • branches/releases/edge – ambiente de staging, onde novas features são testadas
  • branches/fixes – onde correções mais complexas são efectuadas.
  • tags/fixes – marcar o inicio e o fim das correções mais complexas.
  • tags/releases – marcar as transições das releases da nossa aplicação, normalmente equivalem a um sprint.

Esta estrutura permite-nos alterar o código de produção ou staging sem seream afectados por novas features em desenvolvimento, pois estão em ramos separados.

Exemplos

Seguem-se alguns exemplos mais concretos.

Pequenas correções

Para aplicar pequenas correções podemos faze-lo directamente no branch de produção e depois junta-las ao ramo de desenvolvimento e staging.

Para tal basta anotar qual a revisão gerada com a correção e efectuar o merge.

svn merge -r37:38 svn://repository/branches/live
svn commit -m "Merge r38 fix bug 3134"

Sempre que possível devemos utilizaesta alternativa, ao invés de …

Ainda mais dificil

Em correções mais demoradas, onde são necessárias varias revisões e/ou vários developers criamos uma sandbox.

Primeiro criamos o branch para a correção.

svn copy -m "create bugfix branch" \\
    svn://repository/branches/current \\
    svn://repository/branches/fixes/3345-BUG

Depois criamos uma tag para marcar o principio da correção no branch

svn copy -m "bugfix start" \\
    svn://repository/branches/3345-BUG \\
    svn://repository/tags/3345-PRE

Fazemos checkout do novo branch.

svn co svn://repository/branches/BUG-3345

Neste momento podemos fazer as correções e aplicar os commits que forem necessários sem qualquer precupação de poluir o branch principal.

Quando terminada a correção, precisamos de aplica-la nos outros branches.

Criamos uma tag a marcar o fim da correção

svn copy -m "bugfix end" \\
    svn://repository/branches/3345-BUG \\
    svn://repository/tags/3345-POST

Agora utilizamos as duas tags para aplicar a correção aos branches desejados

3345-BUG$ cd..
project$  cd current
current$  svn merge svn://repository/tags/3345-PRE \\
          svn://repository/tags/3345-POST

Depois de testada a correção é só fazer commit, e todos na equipa terão acesso a esta.

# be sure to test everything
current$  svn commit -m "Merge bug fix  3345"

Esta opção é mais complicado, no entanto oferece maior flexibilidade.

Resumindo e concluindo

Ter uma aplicação web “live” cria um “conflito” entre o desenvolvimento de novas features e correções que precisam de ser aplicadas imediatamente.

O repositório de código já não pode ter apenas um ramo.

É necessário definir uma estrutura para o repositório e um conjunto de regras a serem aplicadas por toda a equipa.

Arrumar o repositório utilizando os mecanismos disponibilizados pelo controlo de versões como:

  • criação de ramos,
  • criação de tags/marcas
  • facilidade em fazer merges

Aplicando estes principios conseguimos ter desenvolvimento activo e aplicar correções quase instântaneas ao ambiente “live”, mantendo a aplicação o melhor e mais estável possível.

E vocês como “arrumam” o vosso código?

Bruno Coelho on November 27th, 2009

Tips, Web Development

4
 

Internet Marketing

A RUPEAL lançou recentemente o Invoic€xpress, um software de facturação online, baseado no modelo SaaS.

Agora, um dos maiores desafios que o Invoic€xpress atravessa é o de se dar a conhecer aos seus consumidores.

  • Onde está o consumidor?
  • Como atingir o público-alvo?
  • Como manter a comunicação com o utilizador?
  • E como fazê-lo com orçamentos limitados?

O primeiro passo é sem dúvida identificar o nosso público de forma a optimizar os nossos esforços de comunicação e promoção. O segundo passo é a identificação dos meios de comunicação disponíveis  e a escolha dos que mais se adequam ao orçamento e público alvo.

Assim sendo, os consumidores do Invoic€xpress são individuais e pequenas e médias empresas de serviços que utilizam serviços na internet, no seu dia a dia. Os nossos esforços de comunicação estão por isso direccionados para a web, existindo várias ferramentas e métodos para o fazer, com diferentes objectivos e capacidades de penetração.

Estes são alguns dos métodos que temos utilizado ou iremos utilizar na promoção do Invoic€xpress.

Search Engine Optimization

O objectivo do SEO é optimizar os conteúdos do site, visíveis e invisíveis, de forma a que estes sejam indexados nos motores de busca pelos termos que os nossos potenciais utilizadores irão pesquisar.
software-de-facturacao-online-pesquisa-do-google-2
É bom ser encontrado sempre que alguém pesquisa por Invoic€xpress, mas o que é realmente importante é ser encontrado quando se alguém procura por “software de facturação” ou “enviar facturas” ou outro termo que designe o nosso produto e as suas funções.

Vantagens:

  • É um método que possibilita ao consumidor encontrar um produto quando está à procura dele.
  • Com algum cuidado e atenção aos pormenores, pode-se melhorar significativamente a posição de um site nos motores de busca, sem grandes investimento económico.

Desvantagens:

  • Pode demorar muito tempo até se atingir resultados.

Paid Search

Uma forma de complementar os esforços de SEO é com uma campanha de Pay per Click. Enquanto a campanha de SEO não gera os resultados automaticamente, é possível colocar anúncios patrocinados em posições de maior exposição e mais relevantes para o utilizador.
adwords
Criar uma campanha de AdWords é bastante simples e o Google disponibiliza várias ferramentas que ajudam na criação e gestão das campanhas como o Google Insight for Search, Keyword tool, Website Optimizer, entre outras.

Vantagem:

  • É muito fácil de criar uma campanha, e todos os custos podem ser controlados por nós.

Desvantagens:

  • O sucesso da campanha depende de um ajuste constante da mesma. Pode-se tornar demasiado exigente.

Email Marketing

Lançar campanhas por email não é difícil, mas campanhas eficazes e que se traduzam numa convertion rate significativa são bastante mais difíceis. A atenção que um utilizador dispensa a campanhas de email é reduzida, por isso utilizamos esta ferramenta para uma comunicação mais directa com os clientes do Invoic€xpress.

Existem aplicações web que possibilitam criar e enviar campanhas por email facilmente e em que a gestão da campanha e das pessoas inscritas é bastante simples, caso do Campaign Monitor ou do Mailchimp.

Vantagens:

  • É possível lançar uma campanha de Email Marketing a preços reduzidos.
  • As ferramentas existentes hoje fazem com que as campanhas sejam fáceis de criar e manter.

Desvantagens:

  • Pouca capacidade de penetração, devido ao abuso e envio de mensagem não solicitadas.

Social Media

Com a proliferação de redes sociais, estas começam a ser um ponto importante na estratégia de Marketing de um produto,  pela estreita ligação que possibilitam com o utilizador e pela facilidade na gestão de imagem e nome da marca.
Uma conta no Twitter ou a página do produto no Facebook são ferramentas úteis para comunicar com clientes, permitindo uma aproximação muito grande entre os clientes e as pessoas por trás do produto.
No entanto estas ferramentas quando descuradas podem ter um efeito negativo, desacreditando o produto.

Vantagem:

  • Fácil de utilizar.

Desvantagem:

  • Grupo de utilizadores muito específico/restrito, pode não se enquadrar no público alvo do serviço.

Affiliate Programs

Outro método é o de implementar um sistema de partilha de lucros com os clientes, em que por cada novo cliente angariado o lucro é partilhado com o angariador. Este mecanismo permite aumentar o número de pessoas a publicitar o produto, chegando a consumidores difíceis de aceder de outra forma.

Vantagem:

  • Canal de distribuição alargado e potencialmente viral.

Desvantagens:

  • Custo de desenvolvimento para suportar este sistema de partilha de lucros.
  • Má utilização do nome do produto por terceiros pode danificar a imagem do produto irremediavelmente.

Conclusões

O leque de ferramentas para promoção de um produto ou serviço é bastante grande. A dificuldade passa por encontrar os métodos mais adequados para o produto específico e encontrar o equilíbrio entre recursos investidos e o retorno de investimento obtido.

Não deixem de comentar com as vossas opiniões e/ou sugestões!

Rui Alves on August 28th, 2009

Business, Experiences, Tips

0
 

Como melhorar o aspecto do Gmail

Para dar uma cara lavada ao email do Gmail no firefox (não conheço ninguém que não tenha pelo menos uma conta) aqui vai uma sugestão:

instalar o addon Stylish daqui:

https://addons.mozilla.org/pt-PT/firefox/addon/2108?id=2108

Depois instalar o addon greasemonkey:

https://addons.mozilla.org/en-US/firefox/addon/748

e por fim instalar o script que altera a apresentação do Gmail (criada  por Globex Designs ) :

http://userstyles.org/styles/5867

Aqui fazer “Load into Stylish”

e pronto!

O Gmail fica com uma cara lavada.

Para uma descrição mais completa podem consultar este endereço (que foi onde li sobre isto):

http://www.pplware.com/2008/07/07/gmail-de-cara-lavada/

Administrator on July 28th, 2008

Tips

0