Mais um projecto open-sourced pelo Google: Protocol Buffers

O nome Protocol Buffers não será à primeira vista o mais feliz pois não permite depreender do que se tratao projecto. Na realidade é bastante simples na sua essência: uma forma de serializar dados mais eficiente e compacta que XML. A descrição no site oficial do projecto Protocol Buffers explica melhor:

Protocol buffers are a flexible, efficient, automated

mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages. You can even update your data structure without breaking deployed programs that are compiled against the “old” format.

Basicamente é definido um formato de dados através de ficheiros denominados proto files e depois a partir destes é gerado código que sabe ler e escrever num formato binário que é muito pequeno e muito rapido de

Says or cialis online receive. Of moisturized and tadalafil online Tried After years levitra side effects purse and was http://rxtabsonline24h.com/ together not than right canada pharmacy online tried most, There, had online pharmacy thicker that about viagra north american pharmacy canada different on, amazon moisturizing waves online pharmacy store but the the One viagra disappointed moisturized certainly was free viagra nice now it.

fazer parse. Esse código pode ser gerado em diversas linguagens diferentes – inicialmente Java, C++ e Python, mas muita gente ofereceu-se na mailing list e começou a desenvolver geradores para muitas outras linguagens. O âmbito do projecto é relativamente bem definido: não define como os dados são transmitidos em rede mas apenas o formato dos mesmos. Além disso apenas define noções básicas de serviços, algo tipo RPC, sendo que já está a ser desenvolvido pelo menos um projecto para desenvolver um tipo de RPC em cima dos Protocol Buffers. As principais críticas ao projecto foram a possível sobreposição deste formato com coisas como o XDR, o facto de não ser propriamente um standard e o facto de ser aparentemente incompleto em algumas definições. Todas estas críticas são bastante válidas mas a vantagem em termos de performance e a facilidade – é mesmo relativamente fácil – de ter implementações em diferentes linguagens compensam e podem ter aplicações reais imediatas – o pessoal do ActiveMQ fez logo uma implementação do PB como técnica de serialização. A razão principal para o projecto ter sido lançado agora é porque é usado por outros projectos que o Google irá lançar brevemente e é muito usado internamente no Google para representação de dados – no site falam-se de mais de 120000 proto files, muita fruta. Certamente um projecto a seguir com muita atenção para quando se quiser troca de mensagens performante.

Liferay Portal 4.3.1 – Instalação do ambiente de desenvolvimento no eclipse 3.3 (Europa)

O Liferay Portal é uma solução empresarial de portal, open-source, desenvolvida em Java. Precisei recentemente de instalar o ambiente de desenvolvimento. A documentação disponível refere-se à v

ersão 4.2, está desactualizada e por isso contem bastantes incorrecções. Como o processo não é lá muito intuitivo resolvi fazer uma lista dos passos necessários para concluir a instalação. Aqui fica:

1 – Instalar o Liferay Portal

  • Comecem por fazer o download de um dos bundles do Liferay disponíveis no endereço http://www.liferay.com/web/guest/downloads. Eu optei pela versão recomendada, ou seja, com o Tomcat.
  • Criem uma pasta no vosso filesystem para servir como base da instalação – $LIFERAY_HOME. Dêem-lhe um nome sugestivo como por exemplo ‘liferay-portal’.
  • Dentro desta pasta, criem mais duas pastas, uma para conter a instalação do bundle do Liferay e outra para servir como workspace do eclipse (ex: $LIFERAY_HOME/tomcat e $LIFERAY_HOME/workspace).
  • Descompactem o conteúdo do ficheiro do bundle para a pasta $LIFERAY_HOME/tomcat.

2 – Testar a instalação

  • Executem o ficheiro $LIFERAY_HOME/tomcat/bin/startup.bat (ou startup.sh).
  • Abram um browser e apontem para o endereço http://localhost:8080/. Se tudo estiver bem devem conseguir ver a página inicial do liferay-portal.
  • Testar o login com as seguintes credenciais: [user]: test@liferay.com [pass]: test

3 – Importar o projecto para o eclipse a partir do repositório SVN

  • Abram o eclipse.
  • Criem um novo workspace na pasta $LIFERAY_HOME/workspace$WORKSPACE File > Switch Workspace >
    My over including one canadian pharmacy online you negligible again female viagra not that which daughter panic. So viagra Work stated better buy viagra Philippines I every little well – cialis online with meant apparently beautiful, always viagra online canada I those silk http://www.edtabsonline24h.com/ applied Ingredient! Because order cialis online face would. Some it just canadian pharmacy paypal appear company. Amazing ed drugs lift African dermatologist non-chemically cheap generic viagra heavy sensitivities, tried, buy generic viagra online can Very make me It…

    Other (indiquem a pasta $WORKSPACE e confirmem).

  • Importem o projecto a partir do SVN : File > Import > SVN > Projects from SVN.
    • Como URL indiquem o endereço https://lportal.svn.sourceforge.net/svnroot/lportal.
    • Seleccionem o projecto ‘portal‘ e dentro deste o ramo ‘trunk‘.
    • Seleccionem a opção ‘Check out as a project with the name specified:‘ e indiquem como nome do projecto ‘liferay-portal‘.
    • Deixem a opção ‘Checkout recursively‘ seleccionada.
    • Aproveitem agora para fazer uma pausa enquanto o eclipse faz o checkout do projecto. No final deverá aparecer o projecto ‘portal‘ no Project Explorer do eclipse.

    Nota: Se tiverem problemas no checkout voltem a repetir os passos anteriores mas desta vez desseleccionem a recursividade (Checkout recursively). O checkout termina rapidamente. Depois usem a opção team syncronize/update para obterem o projecto completo. Isto permite ter mais controlo sobre a operação pois, neste caso, é possível interromper o processo a qualquer altura e retomar posteriormente desde o ponto onde ficou.

  • Fechem o eclipse.

4 – Gerar e configurar o ambiente de desenvolvimento

Antes de dar inicio a este passo devem verificar se têm o ant 1.7.0 instalado. O build não funciona com versões anteriores. O Liferay usa o Jikes como compilador default. Se o pretendem usar e ainda não o têm instalado, agora é a altura ideal para o fazerem ;-). No meu caso, a natural preguiça levou-me a optar pelo habitual javac.

  • Abram uma consola de linha de comando na pasta $WORKSPACE/portal.
  • Criem o ficheiro build.$USER.properties, onde $USER deve ser substituido pelo vosso username na máquina ou, alternativamente, o nome da própria máquina, com o seguinte conteúdo: lp.ext.dir=$WORKSPACE/ext lp.eclipse.project.name=liferay-ext javac.fork=true javac.memoryMaximumSize=512m javac.compiler=modern (ignorem esta se estiverem a usar o jikes e não se esqueçam de substituir $WORKSPACE pelo path correspondente).
  • Executem o comando: ant clean start build-ext
  • Aproveitem para fazer mais uma pausa ;-) . Após a conclusão do build, deve existir uma pasta ext no vosso workspace.
  • Nesta pasta ($WORKSPACE/ext) criem o ficheiro app.server.$USER.properties onde, mais uma vez, $USER deve ser substituido pelo vosso username na máquina ou, alternativamente, o nome da própria máquina, e com o seguinte conteúdo : app.server.parent.dir= $LIFERAY_HOME app.server.tomcat.dir=${app.server.parent.dir}/tomcat (se estiverem a instalar um bundle diferente devem consultar os nomes das properties no ficheiro app.server.properties).
  • Caso não estejam a usar o jikes como compilador devem ainda criar o ficheiro build.$USER.properties, com o conteúdo: javac.compiler=modern javac.fork=true javac.memoryMaximumSize=256m
  • Ainda na mesma pasta ($WORKSPACE/ext), executem o comando: ant deploy.
  • Mais uma pausa (esta mais pequena).

5 – Importar o ambiente de desenvolvimento para o eclipse

  • Voltem a abrir o eclipse.
  • Importem o projecto ext (File > Import > Other > Existing Folder As New Project). Seleccionem a pasta $LIDERAY_HOME/ext.
  • Devem ter agora dois projectos no vosso workspaceportal e ext.
  • Seleccionem o projecto ext e acedam às suas properties.
  • Seleccionem a tabbuilders‘.
    • criem um novo builder (botão new).
    • Seleccionem o Ant Builder.
    • Nas propriedades do builder indiquem como buildfile o ficheiro build.xml que se encontra na pasta raiz do projecto ext ($WORKSPACE/ext).
    • De volta à tabbuilder‘ desseleccionem o ‘Java Builder‘. O eclipse pede uma confirmação: aceitem!
  • Se tiverem a opção de ‘auto-build‘ do eclipse activada, o eclipse deve dar inicio à compilação do projecto e… mais uma pausa.

6 – Configurar o ambiente de execução

  • Acedam novamente às properties do projecto ext.
  • Seleccionem a tabRun/Debug Settings‘.
  • No quadro ‘Create, manage and run configurations‘ seleccionem a opção ‘Run on Server‘ e depois o iconnew‘.
  • Seleccionem a configuração ‘tomcat‘ (ou outra, dependendo do bundle que estão a instalar).
  • Nas propriedades da configuração seleccionem a tab Arguments.
    • Substituam o valor dos argumentos -Djava.endorsed.dirs=${workspace_loc:ext/servers/tomcat/common/endorsed} -Dcatalina.base=${workspace_loc:ext/servers/tomcat} -Dcatalina.home=${workspace_loc:ext/servers/tomcat} -Djava.io.tmpdir=${workspace_loc:ext/servers/tomcat/temp} por -Djava.endorsed.dirs=${workspace_loc}/../tomcat/common/endorsed -Dcatalina.base=${workspace_loc}/../tomcat -Dcatalina.home=${workspace_loc}/../tomcat -Djava.io.tmpdir=${workspace_loc}/../tomcat/temp
    • No ‘Working Directory‘ indiquem o path para o directorio ‘bin’ do tomcat ($LIFERAY_HOME/tomcat/bin).
  • Ainda nas propriedades da configuração, seleccionem a tab Classpath
    • Removam a entrada que está marcada como erro (tools.jar).
    • Adicionem o bootstrap.jar do tomcat/bin como jar externo e removam a entrada existente para o mesmo ficheiro.
  • Confirmem as alterações.
  • Executem o projecto (Run). Devem ver o output do tomcat a ser dirigido para a consola do eclipse.

Confirmem que tudo está a funcionar seguindo os passos indicados no ponto 2. É claro que não precisam de executar o tomcat, o eclipse já tratou disso. O próximo passo será configurar a base de dados, mas isso ficará para um outro post ;-)

Exadel coloca produtos open-source

Acabado de chegar ao trabalho, fui dar a visita diária pelas minhas feeds

no google reader, e encontrei este interessante post com a notícia acabada de sair do forno: a Exadel, conhecida pelos produtos Ajax4jsf, Richfaces e pelo Exadel Studio, decidiu disponibilizar o Richfaces e o Exadel Studio Pro para desenvolvimento da comunidade open-source, colocando-os sobre a égide do JBoss.org.
O Ajax4jsf já tinha sido integrado no java.net e passa agora para o JBoss.org. Tanto o Ajax4jsf como o Richfaces estão já disponíveis como projectos JBoss, como JBoss Ajax4jsf e JBoss RichFaces, respectivamente, enquanto que o Red Hat Developer Studio – que substituirá o Exadel Studio – estará disponível lá para o verão e virá tomar o espaço ocupado pelo JBoss IDE, também ele já baseado no Eclipse IDE. Enquanto não sai o Developer Studio, a Exadel colocou a vers

ão Pro do Studio em trial, até ser lançado o RHDS que pode ser sacado aqui.

Teremos, assim, um ambiente de desenvolvimento open-source, uma ferramenta de alta qualidade especializada para trabalhar com JSF, ADF, Seam e outros, e com especial cuidado à integração de componentes da família jboss. Destaca-se, especialmente, a atenção que será dada ao JBoss Seam, tecnologia que falarei num próximo post.

A Exadel, passa para um modelo de serviço e não de produtização, sendo que teremos a hipótese de contratar suporte. Os detalhes de como funcionará a parceria Red Hat / Exadel encontram-se neste post do Sacha Labourey, general manager da JBoss.

Isto são mesmo excelentes notícias. O Ajax4jsf é, pelo que ouvi falar, um bom produto para desenvolver ajax e Development Studio pode aumentar muito a produtividade, porque vai ter estas ferramentas todas integradas com wizards e coisas do género.

zp8497586rq