terça-feira, 5 de junho de 2007

Evolution e rdesktop

Na empresa onde trabalho utilizamos o Microsoft Exchange Server e todas as suas funcionalidades colaborativas. Apesar de não ser um fã da Microsoft, devo reconhecer que esta ferramenta (em conjunto com o Outlook) é realmente muito boa. O problema é que na área em que trabalho utilizamos Linux, porque várias ferramentas que utilizamos simplesmente dariam muito trabalho para rodar no Windows (além do que, gostamos mesmo de Linux). Surgiu aí um problema: como usar o Outlook?

Primeira idéia: VMware. A gente separa um pedaço do disco, instala o Windows lá e o executa dentro do VMware. O leitor mais astuto logo se espanta - "Gastar espaço em disco, memória e processamento mantendo o Windows rodando dentro do Linux, só por causa do Outlook? Fala sério!". Pois é ... muito esforço pra pouco retorno ... idéia facilmente descartada.

Segunda idéia: Evolution. Esta é uma aplicação que faz quase tudo que o Outlook faz (integra e-mail, lista de contatos, calendários, ...), e consegue conversar com o Exchange. Perfeito ... até o dia em que tivemos que visualizar as agendas de outros usuários ... simplesmente não conseguimos fazer isto funcionar. Mas como esta não é uma funcionalidade crucial, não iríamos desistir do Evolution só por causa disso. Mais fácil conectar numa máquina Windows e rodar o Outlook pra ver as agendas dos demais quando necessário - desde que eu não tenha que levantar da minha cadeira pra isso. E como fazer isso?

Primeira alternativa: VNC. Basta rodar um servidor de VNC numa máquina Windows pouco utilizada (temos uma aqui), e nos conectarmos através dela. Problema: para cada usuário, teríamos ter que ter um servidor rodando (e para tal, mais de uma sessão rodando ao mesmo tempo rodando no Windows). Não havia forma de fazermos isso.

Segunda alternativa: rdesktop. Este é um cliente open source que fala Remote Desktop Protocol (RDP) - o mesmo protocolo usado pelo Desktop Remoto que temos no Windows. O único problema, é que podemos ter somente um usuário logado na máquina (se alguém estiver logado na máquina, e alguém quiser utilizá-lo remotamente, o usuário é "chutado", sem chances de defesa) ... mas, como precisamos disso ocasionalmente e a máquina que iremos utilizar é pouco usada, resolvemos adotar a combinação Evolution / rdesktop. Não é perfeito, mas funciona - além disso, temos a esperança que um dia esse problema do Evolution será resolvido. Mas caso alguém tenha uma solução melhor para este problema, não se acanhe ... coloque aqui para nós.

De qualquer maneira, fica aqui a dica de duas ferramentas muito interessantes para minimizar os problemas da distância entre os mundos Linux e Windows - Evolution e rdesktop.


Powered by ScribeFire.

terça-feira, 8 de maio de 2007

MyFaces e Tiles

Estou iniciando o desenvolvimento de uma aplicação utilizando MyFaces. Esta escolha se deu porque gosto do esquema do Java Server Faces (JSF), e após ter trabalhado com a implementação JSF da Sun, resolvi dar uma chance ao MyFaces, pois parece ter algumas soluções interessantes para alguns problemas que enfrentei com o anterior. Em conjunto, estou utilizando diversas componentes providas pelo Tomahawk, que extendem as funcionalidades das componentes básicas do JSF, além de oferecer diversas outras componentes.

JSF é muito bom, mas não resolve todos os problemas. Um destes problemas é a questão de gerenciamento de layouts - em JSF, se você quiser que todas as páginas de sua aplicação obedeçam a um mesmo layout, você tem que replicá-lo em todas as suas páginas; imagina se depois você quiser mudar esse layout, o problema que não vai ser alterar todas as páginas. Para resolver este problema, integramos ao JSF o Tiles. Este é um framework inicialmente desenvolvido dentro do Struts, mas que agora foi separado deste, que simplifica o desenvolvimento de interfaces de aplicações web. Ele se baseia no padrão Composite View, permitindo que se definam fragmentos de página (menu, header, footer, etc ...), que podem ser agrupados em um layout, que pode ser aplicado às suas páginas. O conceito é bastante interessante, e para quem quiser mais detalhes, sugiro que leia o tutorial do Tiles.

Vou aqui explicar como estou realizando esta integração. A primeira coisa que fiz foi definir a estrutura do meu layout, que é composto por:

  • Header
  • Menu
  • Conteúdo
Basicamente, o header e o menu são sempre o mesmo. A única coisa que varia é o conteúdo a ser exibido. Com isto, defini uma página ( layout.jsp ) onde defini o posicionamento destas componentes de layout, e a utilizei em uma definition no arquivo de configuração do Tiles:


<definition name="layout" template="/layout.jsp" >
<put-attribute name="header" value="/header.jsp" />
<put-attribute name="menu" value="/menu.jsp" />
<put-attribute name="content" value="/blank.jsp" />
</definition>


Note que para cada componente do layout há uma página associada. Estes valores podem ser alterados em tempo de execução, e irei utilizar esta funcionalidade para exibir diferentes conteúdos da minha aplicação (alterando a página a ser exibida pela componente content. Abaixo, mostro o código de layout.jsp, onde posiciono um elemento embaixo do outro:


<tiles:importAttribute scope="request" />

<f:subview id="header">
<tiles:insertAttribute name="header" flush="false"/>
</f:subview>
<f:subview id="menu">
<tiles:insertAttribute name="menu" flush="false"/>
</f:subview>
<f:subview id="content">
<tiles:insertAttribute name="content" flush="false"/>
/<f:subview>


Um problema desta forma de integração que adotei é que, para cada página (conteúdo) que desejo exibir, preciso criar dois arquivos jsp: um para definir o conteúdo, e outro para inserir este conteúdo dentro do layout. Abaixo, um exemplo da página que insere o conteúdo dentro do layout. Note-se que isto é feito utilizando a definition que criamos anteriomente, e sobrescrevendo-se a propriedade content:


<f:view>
<tiles:insertDefinition name="layout" flush="false" >
<tiles:putAttribute name="content" value="/pageContent.jsp" />
</tiles:insertDefinition>
</f:view>


Certamente esta não é a melhor solução, mas foi a primeira que veio à minha cabeça. No futuro, pretendo gastar um pouco de neurônios pensando em uma forma de gerar apenas um arquivo jsp por página a ser exibida.


Para configurar o Tiles para ser utilizado pelo JSF, basta você acrescentar o seguinte código em seu arquivo web.xml (além dos jar's do Tiles):


<servlet>
<servlet-name>tiles</servlet-name>
<servlet-class>org.apache.tiles.servlet.TilesServlet</servlet-class>
<init-param>
<param-name>org.apache.tiles.DEFINITIONS_CONFIG</param-name>
<param-value>/WEB-INF/tiles-defs.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>


Nesta solução, o que eu gostaria de alcançar era:

  • facilidade de gerenciamento de layout
  • manter o controle de navegação do JSF
  • facilidade de integração
Tirando o overhead de gerar um arquivo a mais por página gerada, acho que a solução é boa. E tem funcionado bem para os meus propósitos. Se você tiver alguma sugestão, dica, crítica, não esqueça de deixar seu comentário.





Powered by ScribeFire.

quarta-feira, 17 de janeiro de 2007

Exemplos de código

Para aqueles que estão aprendendo uma nova linguagem, ou como utilizar uma nova API, exemplos de código ajudam bastante. Uma excelente fonte de códigos são os softwares abertos, desenvolvidos nas mais diferentes linguagens.

Mas quando você está interessado em algo específico, como por exemplo, como utilizar a API do JMS, fica difícil procurar exemplos nos códigos abertos, a não ser que se utilize um mecanismo de busca, como o Koders, e o Google Code Search. Outra opção são os livros, e os tutoriais disponíveis na rede. Mas um serviço interessante oferece diversos códigos de exemplo, para linguagem Java, C#, ASP.Net, JavasScript, PHP, SQL, etc, etc, etc ... este serviço está disponível no endereço www.java2s.com.

Parece ser bem organizado, mas não consegui descobrir que mantém o site, tampouco quão atualizado ele é ... de qualquer forma, pode ser uma fonte interessante, especialmente para quem está iniciando o aprendizado.

powered by performancing firefox

quinta-feira, 11 de janeiro de 2007

Monitoramento de memória do JBoss

Recentemente ao testar uma funcionalidade que havia implementado no JBoss, tive um problema de falta de memória. Problema normal, fácil de resolver ... mas isto me chamou a atenção para que eu monitorasse o consumo de memória do JBoss.



Há algum tempo, ao começar a usar o ActiveMQ, tive a necessidade de monitorar os objetos dessa aplicação, e graças a isto conheci o JConsole. Minha primeira idéia foi usar o JConsole para monitorar o JBoss, e realmente funcionou. Para tanto segui os conselhos descritos por Steve Brownlee em seu blog (fusioncube). Segue o link para o post em questão:



Fusioncube » Blog Archive » JVM Memory Monitoring







powered by performancing firefox

quarta-feira, 2 de agosto de 2006

[JSF] - DataTables, CommandLink's e CommandButton's

Aqueles que já tiveram o prazer de tentar fazer uma componente commandLink ou commandButtons funcionar dentro de uma componente ''dataTable'' utilizando o escopo request para o managed bean que armazena os dados exibidos pelo dataTable, sabem que não dá. O jeito é mudar o escopo do managed bean para session.

O problema com esta "solução" é que os dados perduram. Exemplificando: imagine que você está implementando um caso de uso que mostra uma lista de entidades que obedecem às restrições impostas por filtros de busca cujos valores são determinados pelo usuário. O comportamento esperado é que, ao acessar a página, não se mostre nenhum valor, e após o usuário ordenar a busca, os elementos sejam obtidos e exibidos. Simples assim. Com a "solução" acima, isto ocorre na primeira vez que o usuário acessa esta página. Porém, dentro da mesma sessão, nas próximas vezes que o usuário acessar a página, ele irá automaticamente visualizar os dados da última busca que ele realizou.

Um pouco de pesquisa, na tentativa de manter o escopo como request, me levou à seguinte descrição de bug (que no final mostrou não ser um bug) - javaserverfaces:issue 69.

Conforme entendi, o problema é que no momento do processamento da fase Apply request values, o managed bean com os dados utilizados pela dataTable ainda não foi inicializado (ele somente será na fase Render response). Desta forma, a decodificação desta componente não funcionará como esperado, e tampouco a decodificação das componentes filhas (incluindo os commandLink's e commandButton's). Por isso, nenhum método de ação associado a estes elementos será executado.

Chegamos então à seguinte conclusão: nossa aplicação só funciona se usarmos escopo session. Mas isto é necessário somente para os dados a serem exibidos pelo dataTable. Com isto, sugiro a seguinte solução:

  1. Crie um managed bean (requestBean) em escopo request para gerenciar os dados não associados ao dataTable, e para gerenciar as ações da sua página
  2. Crie um managed bean (sessionBean) em escopo session somente para armazenar os dados exibidos pelo dataTable
  3. Você deve atribuir um valor vazio para os dados do sessionBean no construtor do requestBean, e com o resultado da busca, sempre que o método que realiza a busca em requestBean for executado

Surge aí outro problema. Como alterar os dados de sessionBean a partir do requestBean? Basta usar o seguinte código dentro do requestBean:


FacesContext context = FacesContext.getCurrentInstance();
context.getApplication().
createValueBinding("#{SessionBean.data}").setValue( context, newData );


Você pode reparar que o EL #{SessionBean.data} é igual ao EL que você usa no seu JSP associado ao atributo value da sua componente dataTable (h:dataTable).

É uma solução trabalhosa. Muito melhor seria se o JSF funcionasse de forma um pouco mais intuitiva. Mas nada é perfeito ...

segunda-feira, 17 de julho de 2006

JBoss WrappedConnection

No JBoss, quando obtemos uma conexão de banco de dados de um Datasource, obtemos um objeto da classe org.jboss.resource.adapter.jdbc.WrappedConnection, que é uma classe que implementa a interface java.sql.Connection.

No entanto, ao utilizar algumas operações específicas da implementação do JDBC da Oracle, me deparei com a seguinte exceção:

java.lang.ClassCastException: org.jboss.resource.adapter.jdbc.WrappedConnection

Pelo que pude entender isto ocorre porque estas operações específicas esperam um objeto conexão do tipo oracle.jdbc.driver.OracleConnection. No entanto, a conexão devolvida pelo Datasource é deste tipo, uma vez que estou usando um banco de dados Oracle (pois é leitor, não iria tentar usar o JDBC da Oracle com outro banco). O que o JBoss faz é encapsular este objeto dentro do objeto WrappedConnection. Desta forma, é possível obter o objeto OracleConnection e utilizar as funcionalidades desejadas do JDBC da Oracle. Para tanto, escrevi o seguinte código:

public class ConnectionUtilities {
   
    /**
     *
     */
    private static final String WRAPPED_CONNECTION_NAME =
        "org.jboss.resource.adapter.jdbc.WrappedConnection";

    /**
     *
     */
    private static final String GET_UNDERLYING_CONNECTION_METHOD =
        "getUnderlyingConnection";

    /**
     * Se a aplicação estiver rodando dentro do JBoss retorna a conexão encapsulada dentro
     * da conexão obtida pelo JBoss. Caso contrário, retorna a própria conexão dada
     *
     * @param conn A conexão com o banco de dados
     * 
     * @return
     */
    public static Connection getUnderlyingConnection(Connection conn) {
        // Variaveis auxiliares
        Connection underlyingConn = conn;
        ClassLoader cl = null;
        Class wrappedConnectionClass = null;
        Method getUnderlyingConnectionMethod = null;
       
        try {
 
            cl = Thread.currentThread().getContextClassLoader();
            wrappedConnectionClass =  cl.loadClass( WRAPPED_CONNECTION_NAME );
            getUnderlyingConnectionMethod = wrappedConnectionClass.getMethod(
                    GET_UNDERLYING_CONNECTION_METHOD, (Class[]) null );
           
            if( wrappedConnectionClass.isAssignableFrom( conn.getClass() ) ) {
                underlyingConn =
                    (Connection) getUnderlyingConnectionMethod.invoke( conn,
                            (Object[]) null );
            }
        } catch (Exception e) {           
        }
       
        return underlyingConn;
    }

}

Note-se que se este código for utilizado fora do ambiente JBoss ele retorna a própria conexão dada como parâmetro. Desta forma consigo utilizar o mesmo código no ambiente de testes que configurei no Eclipse, e no ambiente de produção com o JBoss.

quinta-feira, 27 de abril de 2006

Código de alta qualidade

Na minha vida como desenvolvedor já tive a oportunidade de trabalhar com vários outros desenvolvedores, utilizando diferentes linguagens, diferentes ferramentas, diferentes arquiteturas ... no entanto, uma coisa que é comum em todas estas experiências, diz respeito com integração de códigos.

Modelar um software, e dividir a implementação entre vários desenvolvedores é bastante comum. Na teoria, agiliza o desenvolvimento. Cada um implementa sua parte, realiza seus testes, acha tudo perfeito, e quando vai integrar, tudo começa a dar errado. E daí quando você tem que mexer no código que outra pessoa fez, daí é que tudo vai pro espaço.

Para minimizar estes problemas, é bom adotar algumas práticas de programação e desenvolvimento. Definir bons testes de unidade antes de iniciar a implementação, utilizar códigos de programação, etc ... Tendo em vista este problema, um bom artigo é o post "Producing and maintaining high-quality code", do blog Ozone. O autor lista 10 dicas sobre como escrever bons códigos, e em decorrência, gerar bons softwares.

Uma das dicas interessantes é a de número 3 - Talk to your cardboard friend, que eu conhecia como "Técnica do ursinho". Esta técnica aprendi através de um professor, que relatou que um outro professor que lecionava na universidade em que ele fez doutorado tinha um ursinho de pelúcia que ele levava nas aulas de laboratório. Toda vez que um aluno tinha uma dúvida, ele tinha que explicar o problema pro ursinho. Com isso, boa parte dos alunos conseguiam enxergar o problema, só explicando o mesmo pro ursinho.

Voltando ao artigo, é bastante interessante, e pode ser bastante útil. O autor inclusive sugere ferramentas que podem facilitar a vida dos desenvolvedores. E você, tem mais alguma dica para compartilhar? Dê seus comentários.

quarta-feira, 19 de abril de 2006

AjaxXLS

Meus posts estão ficando cada vez mais repetitivos. Na verdade ando sem muito tempo para colocar coisas interessantes aqui, apesar de estar estudando bastante coisa no momento. Mas só pra alimentar o desejo incontrolável de meu público fiel por um novo post, vou falar sobre a última da galera do ajaxLaunch.

A nova aplicação é o AjaxXLS. Diferente das outras ferramentas lançadas por esse grupo, esta funciona apenas como um visualizador, o que devo confessar me deixou um pouco desapontado. O que ele faz é abrir planilhas no formato xls, e promete manter as fórmulas, backgrounds e bordas dos arquivos. No entanto, no primeiro arquivo que fui abrir, com fórmulas, cores de linhas alternadas e formatação de fontes diversas, o resultado foi horrível. Ele apenas conseguiu mostar parte da primeira linha. Tentei depois com um arquivo sem fórmulas, e o resultado foi melhor.

Das três ferramentas que avaliei deste grupo, esta é com certeza a de menor qualidade. Com certeza eles devem prover melhorias, e espero façam com que a qualidade desta ferramenta se equipare à das demais.

quarta-feira, 5 de abril de 2006

AjaxSketch

No meu último post falei aqui sobre o AjaxWrite. O mesmo grupo que lançou esta ferramenta lançou o AjaxSketch, uma ferramenta para criar diagramas, fluxogramas, desenhos a mão livre. Tudo baseado em ajax, rodando em browsers Firefox 1.5 ou mais novos.

A ferramenta é bastante simples, e não tem o apelo de um processador de texto. Mas é interessante. Ele utiliza o formato SVG, permitindo que os arquivos gerados por esta ferramenta sejam visualizados diretamente por ferramentas como Microsoft Visio, Adobe Illustrator, Macromedia Freehand, entre outros.

Se você um dia quiser criar um diagrama básico, e tiver somente um browser à mão, lembre-se desta ferramenta.

sexta-feira, 24 de março de 2006

AjaxWrite

Imagine poder utilizar um software, como o Word por exemplo, através do seu browser, em qualquer lugar. Imagine agora que você não pagasse nada por isso. Parece bom, não? Pois é, eu também acho. E parece que Michael Robertson também. Ele acaba de lançar ajaxWrite, um processador de texto que abre e grava arquivos no formato word, com as funcionalidades básicas do famos editor de textos da Microsoft.

Um teste rápido mostrou que ele entende bem o formato. Abri uns arquivos com imagens, textos com formatações diversas, e ele mostrou o conteúdo de forma razoável. Com exceção de quebras de linhas e outras frescuras, a exibição foi idêntica ao que eu veria no Word. Fiquei bastante impressionado.

O mais interessante, é que pelo que ele diz no post de anúncio do ajaxWrite em seu site, a idéia é que este seja somente o começo. A cada semana eles irão lançar um novo programa sofisticado (só não diz quais programas serão).

Detalhe: AjaxWrite só funciona por enquanto em browsers Firefox1.5 ou superior. Ahn, e vale lembrar: para usar, não é necessário se registrar, não precisa instalar nada, não precisa nem dar seu endereço de mail. Quase perfeito!!

sexta-feira, 17 de março de 2006

JavaWhat

É sempre importante conhecer boas fontes de referência quando trabalhamos com tecnologia. Um grande problema é que geralmente você não consegue encontrar tudo num lugar só. Para aqueles com interesse em Java, isto pode mudar. Acaba de surgir um novo portal - JavaWhat. Este portal tem como objetivo servir como um diretório de recursos Java baseado em categorias públicas, onde os usuários cadastrados podem sugeriar novas categorias e adicionar suas própiras páginas web para uso futuro, e compartilhar com outras pessoas também.

Note-se no entanto que este não é um sistema wiki. O portal não oferece funcionalidades de criação de artigos, etc e tal. O usuário apenas insere links para outras páginas da web. Como o sistema é novo, ainda não há muita coisa, mas provavelmente será uma boa fonte de consulta no futuro. Vale a pena dar uma olhada, e contribuir com os artigos que você acha poderão ser úteis para outras pessoas.

terça-feira, 14 de março de 2006

Portal LivRe!

O portal LivRe! tem como objetivo facilitar o acesso e a identificação de periódicos eletrônicos gratuitos. Possui uma vasta gama de periódicos técnicos e científicos das mais diferentes áreas, com várias opções de busca e categorização por área de conhecimento.

Vale a pena conferir.

sexta-feira, 10 de março de 2006

Recomendações sobre JavaScript para AJAX

Greg Murray escreveu em seu blog no java.net um artigo com uma série de recomendações sobre JavaScript para aqueles que desenvolvem componentes que utilizam tecnologia AJAX. O artigo contém uma série de links para um documento que ele mesmo escreveu, que inclui exemplos de código. São ao todo 19 dicas que valem a pena dar uma olhada.

Greg Murray's Blog: JavaScript Recomendations for AJAX Component Writers

quarta-feira, 8 de março de 2006

Interface web sem cliques

O link a seguir leva a uma página que introduz um novo conceito: interface sem uso de cliques do mouse.

www.dontclick.it

A interface utiliza tecnologia flash, e basta você posicionar o mouse sobre o item que vc deseja visualizar, que automaticamente o conteúdo do item é exibido. Pessoalmente, senti falta do clique, pois hoje é algo automático para mim. Mas é interessante ver estas idéias surgirem.

Durante a navegação, se você clica em algo, o usuário é perguntado se o clique foi acidental ou intencional, para que os criadores possam verificar o quão difícil é romper este paradigma. Além disso, outras perguntas são feitas ao usuário, para testar a navegabilidade, entre outros.

Vale a pena dar uma olhada.

A importância de um bom design

Study: 50 percent of refunds due to bad design

O link acima mostra um artigo sobre um estudo feito por uma cientista holandesa que concluiu que metade dos aparelhos eletrônicos devolvidos às lojas funcionam como deveriam, mas os consumidores não conseguiram descobrir como fazê-lo funcionar. Basicamente por causa de problemas com interface.

Eu, como a maioria das pessoas, não tenho paciência para ficar lendo manuais para aprender a usar um aparelho, e por isso uma boa interface é necessária para que eu possa facilmente acessar as funcionalidades do produto. Essa é uma das razões por eu preferir um celular Nokia a um Motorola, por exemplo. E o estudo citado no artigo, somente vem a comprovar o quanto as empresas perdem dinheiro por causa de pobres planejamentos de interface.

E isso deve servir de aviso para nós desenvolvedores de software. Pensar em interface é um porre (ao menos para mim), mas pode ser a diferença entre o sucesso ou fracasso do nosso produto.

quarta-feira, 1 de março de 2006

Google Reader

Para me manter atualizado com o que acontece neste doido mundo de tecnologia acompanho diversos sites de comunidades, blogs, etc e tal, usano os feeds rss destes. Para tanto utilizo o thunderbird, onde também visualizo e armazeno meu mail profissional. Tem funcionado perfeitamente para mim, e não tenho nenhuma reclamação. No entanto, um amigo meu neste carnaval me despertou para um problema: "E se eu for embora da empresa? Vou lembrar de todos os rss que tinha?"

Este mesmo amigo disse que usava um serviço web pra ler os rss dele, mas não lembrava do nome ... resolvi googlear, e achei o Google Reader. Como já tenho minha conta google, foi fácil entrar e tudo o mais. Exportei meus rss do thunderbird, importei lá, e pronto. Agora, posso acompanhar as novidades das minhas fontes de informação em quaisquer lugares. Mas não pretendo abandonar o thunderbird ainda ... ainda acho que ler meus mails e rss num único lugar é o que há.

terça-feira, 21 de fevereiro de 2006

JUnit 4.0

Aqueles que como eu gostam das funcionalidades do JUnit, certamente vão gostar de saber que acaba de ser lançada a versão 4.0. Para quem não sabe, o JUnit é um framework para escrever e executar testes automatizados. Esta versão requer a versão 5.0 do Java, e utiliza anotações.

Para obter esta versão, basta seguir o link:
SourceForge.net: JUnit 4.0

Junto com o download, há também o JUnit 4.0 cookbook com descrições de como utilizar as funcionalidades.

quinta-feira, 9 de fevereiro de 2006

QuickTime for Java API

O link a seguir o leva a um artigo que nos introduz à API QuickTime for Java.

Mobile video: Get started with the QuickTime for Java API
Esta API permite o acesso aos formatdos de mídia mais atuais, diferente da API do Java Media Framework (JMF). Com isto é possível criar conteúdo de vídeo para seu IPod, utilizando Java. Para os aficcionados neste aparelhinho, é uma boa leitura.

Core Developers Network

Atualmente estou pesquisando a tecnologia JMS para utilizá-la em um projeto que estou desenvolvendo na empresa onde trabalho. Buscando na internet por fontes de referência sobre esta tecnologia, encontrei o seguinte site:

Core Developers Network

Este é o website de uma empresa britânica que se propõe a disponibilizar serviços de consultoria, treinamento, suporte e desenvolvimento em tecnologias open-source como JBoss, Apache Geronimo, Jakarta Tomcat, entre outras.

Dentro desta filosofia de trabalho eles disponibilizam diversos artigos sobre tecnologias open-source. Para quem tem interesse em tecnologias open-source relacionadas a J2EE é uma ótima fonte de consulta.

E vc? Conhece outras fontes de informação interessantes? Compartilhe-as conosco. Deixe seu comentário.

sexta-feira, 3 de fevereiro de 2006

Agile development e testes de software

Floyd Marinescu (fundador da comunidade TheServerSide) escreveu o seguinte post em seu blog: Agilist Scott Ambler tears apart the QA/Testing folks

Nele ele fala sobre a apresentação de Scott Ambler em uma conferência sobre Qualidade de Softwares e Sistemas, para um público formado de gerentes de testes, analistas de qualidade e testadores de software. Scott Ambler é um defensor do Agile development, uma metodologia de desenvolvimento de software que tem sido bastante divulgada, e tem tido uma boa aceitação no mercado de desenvolvimento de software. Nessa apresentação, ele apresentou essa metodologia, sobre como ela produz software de boa qualidade, como desenvolvedores e stakeholders juntos realizam testes dentro de cada iteração, acabando por diminuir a necessidade de uma equipe separada para testes.

Meu conhecimento em testes é muito pequeno, e é a parte do desenvolvimento de software que considero mais deficiente nas minha prática diária. No entanto, reconheço a importância dessa área para gerar uma solução de qualidade. Por isso este artigo me chamou a atenção, e fez surgir em mim o interesse nessa metodologia Agile. Se o que Scott disse realmente for verdade, terei que pensar seriamente em como aplicar as práticas dessa metodologia no dia a dia do meu trabalho.

Vou começar a pesquisar sobre este assunto. Aguarde novidades a respeito. E se você tiver algum conhecimento sobre Agile, testes de software que você queira compartilhar, deixe seu comentário.