programação

sexta, 19 de junho de 2009

Programação e bom senso, tudo a ver!!

Escrito por: alberto

Hoje de manhã, não sei porque eu pensei, muito do nosso trabalho enquanto estamos programando é ter bom senso. Claro que precisamos estar sempre estudando, aprimorando nossas técnicas, mas na hora de programar em si, vale muito o bom senso.

Por exemplo, quando vamos criar alguma classe, tipo um Carrinho de compras, e o mesmo vai ser utilizado para várias lojas, o BOM SENSO manda programar para uma interface, pois a maneira de calcular o valor total do carrinho pode mudar de loja para loja. Agora caso você esteja implementando alguma coisa bem especifica para um cliente, para que criar uma Interface e tal, esse carrinho só vai ser utilizado por essa loja… não adiante problemas, tenha BOM SENSO :), seja ágil.

Outro assunto muito falado, com toda razão por sinal, são os testes. Vocês que não gostam de testar :), tenham BOM SENSO!!, provavelmente sua aplicação vai sofrer mudanças durante o tempo e se você não tiver testes como vai fazer?? Ficar rodando tudo para simular as coisas… argh!! Testar é que nem malhar ou comida japonesa, no inicio você pode até não gostar, mas depois que acostuma, não quer parar mais. Tenham BOM SENSO!!

Então é isso, na hora de programar tenham BOM SENSO!!, não se apegue a estilos batidos, para tal app tenho que fazer isso, para outra tenho que fazer aquilo, pare e pense no que é melhor para cada uma e faça o que é necessário, olha o BOM SENSO :)!.

Java

segunda, 15 de junho de 2009

Automatizando o composite pattern

Escrito por: alberto

Talvez esteja errado, mas em vários projetos temos algumas classes que implementam o Composite Pattern, ou algo parecido :). Com esses objetos, por exemplo, temos que criar algum metodo que retorne os possiveis pais para montar um combo ou então apresentá-lo de alguma forma, tipo avo/pai/filho e por aí vai. Para poupar um pouco de trabalho, criei um projetinho, hospedado no github :), que visa facilitar nossa vida. Caso tenham projetos desse tipo e ainda não tenham implementado algo para isolar isso, talvez valha a pena dar uma olhada :). Valeu!!!

tags: ,

Java

quarta, 10 de junho de 2009

Configurando Virtual Host no Tomcat

Escrito por: alberto

Recentemente tive que configurar um Virtual Host no Tomcat, como eu nunca tinha feito, tive que pesquisar e aprender. Um Virtual Host é útil quando você tem um único Tomcat atendendo vários dominios, tipico em hospedagens compartilhadas. Existem vários tutorias aí na internet, inclusive o do próprio site do Tomcat, que foi o que eu segui. Vou deixar aqui os passos e espero que sirva para vocês.

Comece criando uma pasta a partir da raiz da instalação do seu tomcat, por exemplo /usr/local/tomcat/nova_pasta, podemos dizer que isso já é o seu novo Virtual Host, ela está funcionando agora como a pasta webapps padrão do Tomcat, que por sinal é o Virtual Host default. Agora vem a hora de colocar seu projeto, pegue seu .war e descompacte dentro da pasta criada, para ele ser o root de seu Virtual Host, crie com o nome ROOT.war, procedimento idêntico ao que faria usando a webapps. Feito isso, dentro do contexto que você acabou de criar, ROOT por exemplo, crie a pasta META-INF e crie um arquivo context.xml, onde ficarão as configurações do seu contexto. Segue um exemplo:


<?xml version="1.0" encoding="UTF-8"?>
<Context path="" docBase="${CATALINA_HOME}/nomeDoSeuVirtualHost/nomeDoContexto">
<!-- Caso tenha um contexto -->
<Resource name="jdbc/xxxxx" auth="Container" type="javax.sql.DataSource"
username="xxx"
password="xxxx"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://xxxx:3306/xxx?autoReconnect=true"
maxActive="15"
maxIdle="7"
validationQuery="Select 1" />
</Context>

Feito isso, vem a última parte, que é configurar o tomcat para que ele ache seu Virtual Host. Vá em ${CATALINA_HOME}conf/server.xml e procure pela tag engine, aí você vai achar o que falamos no ínicio, a pasta webapps configurada para ser o Virtual Host default. Agora adicione o seu Virtual Host adicionando o seguinte trecho:


<Host name="www.seudominio.com.br" appBase="sua_nova_pasta">
</Host>

Pronto, feito isso, teoricamente tudo deve funcionar normalmente :), caso não funcione posta aqui ou manda email :).

Uncategorized

sexta, 29 de maio de 2009

Entre na onda do google!!

Escrito por: alberto

Tá bom, o trocadilho foi meio sem graça, mas a noticia é legal. O Google está lançando mais um de seus brinquedinhos, e ele se chama Google Wave. Resumindo, é um local onde você pode compartilhar informações dos mais ricos formatos, de texto a video e editá-los de forma concorrente. WEB 2.0 na veia!, várias pessoas, que fazem parte da mesma onda, interagindo na mesma hora sobre um mesmo conteúdo. Vale a pena dar uma olhada no Google Wave, rede social(acho que é pelo menos) que promete mudar nossas vidas!! Imagina fazer programação pareada online e provavelmente várias outras coisas que não estão vindo na minha agora!!

Eventos

Java

segunda, 25 de maio de 2009

Dividendos do Falando em Java 2009

Escrito por: alberto

Ontem aconteceu mais uma edição do Falando em Java, evento promovido pela Caelum e patrocinado por grandes empresas do nosso mercado, entre elas, Globo, Locaweb e JBoss. O evento contou com excelentes palestrantes, destaque para o Jim Webber, consultor da ThoughtWorks e que fez duas excelentes palestras sobre SOA.

Como já falei, é sempre muito legal participar destes eventos, além de excelente conteúdo, você tem a oportunidade de ampliar sua rede de contatos. Ontem conheci uma galera da ceJug, Grupo de Usuarios Java do Ceará, muito legal. Já conhecia de nome o Rafael Carneiro, um dos lideres, e ainda fiquei sabendo que a comunidade lá é muito ativa. De acordo com o Rafael só perde para a souJava, que é a mais ativa do Brasil. Conheci também um pessoal de Vitória-ES, eles estão pensando em iniciar um projeto opensource sobre TV Digital, e claro, me escalei para ajudar :). Para finalizar, conheci a galera da Caelum que participa do Stella, o Cauê, que por sinal vem palestrar em agosto para o Oxente Rails, e o Jonas.

Tenho que separar um paragrafo, para falar da galera do Rio, os caras são muito gente fina. Tinha feito curso com os caras ano passado na Caelum e eles estavam lá para o evento. Atualmente são instrutores da Caelum - Rio, em junho vou passear lá com minha namorada e já marcamos de ir no baile funk. Isso é, se os caras não enrolarem, porque se tem uma galera enrolada, são aqueles caras!!!.

No final do evento rolou um coquetel para a galera interagir mais e depois todo mundo foi para um bar chamado o O’Malleys(não sei bem se o nome é esse…), devo falar que a galera ficou um pouco alta :). Gostaria que tivesse mais conterrâneos meus lá, mas de qualquer forma achei muito bom o evento!!! Com o passar do tempo vou postando sobre as palestras, a do VRaptor 3, Guerrilha SOA e Para onde vai a plataforma Java foram as melhores na minha opinião.

tags: , , ,

Eventos

Java

carreira

quarta, 13 de maio de 2009

Falando em Java 2009

Escrito por: alberto

No dia 24/05 vai ser realizado mais um Falando em Java. O evento já é considerado o mais importante sobre Java no país e eu não vou perder!!! Estive falando com o pessoal da Caelum e está sendo esperado 600 participantes para esse ano. Espero que se tiverem oportunidade participem, muita gente legal e conhecimento circulando em alta!!!

Eventos

ruby

domingo, 10 de maio de 2009

Oxente Rails

Escrito por: alberto

Pessoal, vai rolar aqui no nordeste, especificamente em Natal/RN, o Oxente Rails!! Evento para falar exclusivamente de Ruby e assuntos relacionados. Quem puder, não deixe de participar!!! Quanto mais prestigiarmos estes tipos de eventos aqui no Nordeste mais eles acontecerão.

tags:

Java

Uncategorized

terça, 14 de abril de 2009

Brincando com Google App Engine para Java

Escrito por: alberto

O google lançou recentemente a versão do GAE para rodar aplicar em Java, e eu, um pouco atrasado é verdade, fiz apenas um teste simples subindo uma aplicação de exemplo para o ambiente deles, nada de mais, pelo menos por enquanto :). O ambiente contém algumas restrições, aqui você acha todas as classes que tem execução permitida. É muito legal termos um ambiente deste para testar algumas das nossas aplicações. Como ainda tá em fase beta é necessário fazer um cadastro e esperar a confirmação para o uso. Logo abaixo estarei falando do que tive de fazer para subir minha primeira app, então se tiver interessado em fazer o mesmo, continue lendo :).

Primeiro baixei o Eclipse Ganymede JEE, por conveniência mesmo, depois vem a hora de instalar o plugin do google para facilitar o desenvolvimento,  você encontra a explicação aqui. Feito isso, basta  você seguir os passos do tutorial do link anterior que vai conseguir construir sua primeira app. Finalmente é a hora de fazer o upload para o ambiente do google, bem, nessa hora tive uma dificuldade inesperada. O plugin faz o build do seu projeto para fazer o upload e durante este build ele usa javac para compilar algumas coisas. Para achar a localização do javac, ele faz uso do System.getProperties(”java.home”) para pegar a localização da JRE que o eclipse tá usando, caso não ache o javac na pasta bin ele tenta em ../bin/, ou seja, tenta achar bin no diretório acima. Quando instalei o Java aqui, pedi para instalar tanto o JDK quanto apenas a JRE, não me lembro o motivo agora, o importante é que o eclipse tava apontando justamente apenas para a JRE e, consequentemte, deu pau na hora de fazer o upload da app. Então, para consertar, você pode ir em, seu projeto->botão direito->Properties->Run/Debug Settings/sua_app/edit/aba jre/Installed JREs e escolher a pasta jre dentro da sua pasta Jdk. Quando o plugin for fazer o upload, ele não vai encontrar o javac dentro da pasta jre/bin mas vai encontrar  em ../bin/ e você vai ficar feliz. Caso esteja na mesma situação que eu me encontrei, espero que o post ajude, caso não esteja, realmente a leitura desse paragrafo pode ter sido meio sem sentido :)

Uma coisa bastante interessante, e que a comuninade vem testando bastante, é rodar as linguagens de script em cima da JVM no ambiente do google, então aproveite para colocar seu projeto JRuby on Rails nas nuvens do google!!!.

tags: , ,

Eventos

carreira

segunda, 30 de março de 2009

Baianos!!, vamos aos congressos!!!

Escrito por: alberto

Pessoal, o motivo deste post é apenas a minha percepção da realidade, então, caso discordem, façam o favor de deixar registrado aqui!! :). Durante os últimos anos tenho me esforçado para ir ao máximo de eventos e treinamentos que posso, visando sempre melhorar meu nível profissional e conhecer novas pessoas, melhorando o networking.

Infelizmente, os grandes eventos ainda são concentrados no eixo sul-sudeste, mas não acho que seja um motivo para ter tão poucos de nós presentes neles. Por exemplo, ano passado no Rails Summit, o maior evento de Ruby que já aconteceu aqui no Brasil, só encontrei 5 baianos, enquanto que só do Amapá, eu encontrei os mesmos 5. Nada contra o Amapá, a galera que tava lá sacava bastante, mas nosso estado é muito maior, provavelmente com muito mais profissionais, e teoricamente deveria ter uma maior presença.

Esse post serve realmente como um convite, vamos nos organizar e “descer de galera” para os eventos. Apenas alguns para vocês pensarem: Falando em Java, Just Java, FISL 10, entre varios outros que devem ter por aí. Até a próxima!!!!

Java

carreira

quinta, 26 de fevereiro de 2009

JavaAdvancedQueryFilter

Escrito por: alberto

Continuando o último tópico, sobre melhorar na carreira, investi mais um pouco nos projetos open source. Eu e Vinicius criamos o projeto JavaAdvancedQueryFilter, cujo objetivo é facilitar a criação de queries dinâmicas. A idéia é que, de forma simples e única, possam ser criadas queries dinâmicas sem a necessidade daqueles ifs chatos que verificam se determinado critério é para ser utilizado ou não. Com o filtro criado, ele pode ser “parseado” para qualquer provider como: JDBC/SQL, Hibernate/Criteria, Hibernate/HQL, JPAQL e por aí vai.

Agora vamos ver um exemplo de como seria determinada query fazendo do jeito padrão e usando o QueryFilter.


private void testCreateSimpleFilterWithUserNameAndEmailAttributesOnlyIfTheyArentNullUsingTheCommonWay(
User user) {
Criteria criteria = sessionSharedBetweenAllMethods
.createCriteria(User.class);
if (user.getName() != null) {
criteria.add(Restrictions.eq("name", user.getName()));
}
if (user.getEmail() != null) {
criteria.add(Restrictions.eq("email", user.getEmail()));
}
System.out.println(criteria.list());

}

private void testCreateSimpleFilterWithUserNameAndEmailAttributesOnlyIfTheyArentNullUsingTheFilter(
User user) {
Criteria criteria = sessionSharedBetweenAllMethods
.createCriteria(User.class);
Filter filter = new Filter();
filter.add(new Condition("name", user.getName(), Operation.EQUALS,new NotAcceptNullValueClosure())).add(new Condition("email", user.getEmail(), Operation.EQUALS,new NotAcceptNullValueClosure()));
System.out.println(filter.apply(criteria).list());
}

Agora um exemplo mais bem elaborado, onde deve-se buscar por todos usuarios que tenham residências em determinados endereços.


private void testFindUserThatLiveInSomeOfThatAddressUsingTheCommonWay(
Address[] addresses) {
Criteria criteria = sessionSharedBetweenAllMethods.createCriteria(User.class);
if(addresses.length>0){//have to test if the array is not empty, if it is, you can not pass for "in" expression
Collection<String> descriptions = new ArrayList<String>();
for (Address address : addresses) {
descriptions.add(address.getDescription());
}
criteria.createAlias("addresses", "address").add(
Restrictions.in("address.description", descriptions));
}

System.out.println(criteria.list());
// TODO Auto-generated method stub

}
private void testFindUserThatLiveInSomeOfThatAddressUsingTheFilterWay(
Address[] addresses) {
Criteria criteria = sessionSharedBetweenAllMethods.createCriteria(User.class);
Filter filter = new Filter().addAlias("addresses", "address").add(new Condition("address.description", CollectionHelper.extractTheObjectsBasedInGetterAttributeOrOtherMethod("description",addresses), Operation.IN,new NotAcceptEmptyCollectionOrArrayClosure()));
System.out.println(filter.apply(criteria));
// TODO Auto-generated method stub

}

O projeto está hospedado no sourceforge e como foi útil para mim espero que seja para vocês também.



newsletter

cadastre seu e-mail!  

últimas do twitter

» siga a settech no twitter

swTV

 

Atuando no mercado desde 1999, a SetWeb conta com um time de profissionais que busca soluções adequadas e eficazes para a sua empresa. Aliando estratégia à tecnologia, a SetWeb possui como foco principal o resultado de ações implementadas para cada negócio.
Esse é o nosso compromisso e o nosso desafio.