terça-feira, 31 de março de 2009

Campanha: Faça um post com links de Twitter/Site/Blog dos seus amigos

campanha
Tenho website a pouco mais de 2 anos, blog menos do que isso e twitter a menos tempo ainda. Pesquisando sobre sites, para fazer essa campanha aqui no blog, vi que muitos aderiam a fazer seus próprios sites / blogs / twitters e outros não. Então resolvi postar os bravos amigos que produzem seu próprio conteúdo e que possuem uma “identidade virtual”. Muitos deles interessantes, curtam!

José Carlos, Rodrigo Rebouças, Thiago Fonseca, Rodrigo Freitas, Alessandro Camargo, Tiago Camargo, Patrício Alencar, Netozeppelin, Thais Lima, Pedro Silva, Éverton Trindade, Charles Viegas, Emmanuell Faustino, Bertone Balduíno, Pergentino Neto, Alisson Brito, Hallison Fonseca, Ademar Izu, Maikel Varão, Teoni Valois, Luiz Gonzaga, Fred Beneti, Kleber Antoniazi, Fernando Küpper.

Mande o seu Twitter / Site / Blog e faça parte dessa campanha. Faça um post com links de Twitter / Site / Blog de amigos.

Postar um comentário

quarta-feira, 25 de março de 2009

Documentar é importante?

Documentar é importante? Existem várias formas de documentação, mas irei falar especificamente de documentação de código fonte.

Existe coisa pior do que precisar entender um código e não ter nenhum tipo de documentação ou simplesmente documentações desatualizadas? Se isso já aconteceu, e tenho certeza que sim, você deve saber o tempo que é gasto para tentar entender um bloco de código, que poderia ser reduzido consideravelmente se corretamente documentado.

Mas por que documentar ou melhor por que os desenvolvedores simplesmente não documentam? Talvez por preguiça ou talvez aparece outra atividade pra fazer e deixar pra documentar depois.

Já ouvi coisas do tipo: “Não temos tempo para isso” ou “Deixei para documentar o código quando terminasse tudo”, isso é o que já ouvi comentarem. OPA! Documentar ou comentar? Existe diferença? Sim e ainda comentar pode ajudar tanto quanto documentar.

Então comentário é uma parte próxima do código que você quer explicar, geralmente para explicar uma ou duas linhas de código. Por exemplo:

// The size of the ArrayList (the number of elements it contains).
private int size;

Documentação já é uma visão mais ampla de um comentário. Um comentário pode ser uma documentação, mas não o contrário, justamente por comentários serem aplicados a uma ou duas linhas de código e documentação compõem um método inteiro, uma lista de funções ou uma classe inteira. Por exemplo:

/**
* Removes all of the elements from this list. The list will
* be empty after this call returns.
*/
public void clear() { }

Mas por que documentar afinal? Além de facilidade para entender o código, manutenção de código, redução considerável de tempo para entender trechos de código, organização e etc. Escrever documentação sempre pensando que alguém irá olhar aquele código futuramente e que irá dar continuidade ao seu trabalho.

Vejam o comentário de um Analista desenvolvedor Notes:

/**
* @Author Rodrigo Freitas – Analista Desenvolvedor Notes
* A documentação de código é importantíssima para o bom entendimento e manutenções futuras de
* qualquer sistema, visto que uma falta de documentação pode gerar mal entendimento de outro ou até
* mesmo do próprio
desenvolvedor, além disso podemos citar também o ganho de tempo quando
*
eliminamos a necessidade de entender tudo o que já está feito antes de darmos manutenção.
*/

Escrevi esse post para incentivar dos desenvolvedores para comentarem e documentarem seus códigos, para que outros desenvolvedores, quem sabe até eu, possam olhar aquele código um dia e ser elogiado pela ótima documentação.

Deveriam fazer com que blocos de códigos não pudessem ser comitados sem antes ser documentados corretamente, assim como em testes, pelo menos dessa forma que deveria ser. Ai entra a participação de uma pessoa mais experiente para analisar e a ajuda de um code view, mas isso é assunto para outro post ;)

Postar um comentário

quarta-feira, 18 de março de 2009

OutOfMemory na cabeça

Tem muita gente resolvendo problema de memória do tomcat, aplicações com arquivos JNLP e servidores de aplicações utilizando os parametros PermSize e Heap Size, sem terem ideia o que são e sem saberem que a má utilização podem causar impactos significativos nas aplicações. Passei por isso essa semana e pensei que deve ter muita gente com essa dúvida, simples de resolver, mas que nem todo mundo tem a curiosidade de procurar se informar sobre pra que elas servem.

Quando ocorre um “java.lang.OutOfMemoryError” a primeira coisa que fazemos é procurar no google os valores para serem adicionados aos parametros iniciais dos servidores de aplicações e etc. Os chamados PermSize e Heap Size, mas eu nunca entendi direito o que esses parametros significam. Então vamos lá.

O que é JVM Heap? A memória Heap é aquela alocada para armazenar os objetos(quando utilizado o operador new) e as classes Java em tempos de execução. Podendo ser especificado através do comando -Xms<initial heap size> -Xmx<maximum heap size> tendo como padrão os valores -Xms32m -Xmx128m.

É geralmente uma boa ideia colocar o parametro máximo para memória Heap de 512. Se colocar uma memória muito pequena a memória do servidor é preenchida rapidamente e eventualmente objeto são criados e poderá não ter mais espaço livre para os objetos. Inversamente se colocar um valor muito alto, muitos “junks objects” ficariam na memória e o Garbage Collection poderia levar muito tempo para tentar desalocar esses objetos, podendo causar um impacto na performace da aplicação.

Essa foi a descrição da memória Heap. Outro tipo de memória é a PermGen chamado “Permanent Generation” é um tipo de memória mais pernamente, fixa e não muda quando a VM está executando. Utilizada para carregar as classes java, definições das classes, valores literais String, retorno do método String.intern() entre outras coisas. Pode ser especificada através do comando -XX:MaxPermSize. O padrão é 64m para as Vms da Sun. Quando essa memória não há espaço para carregar todas as classes, acontece o famoso erro “java.lang.OutOfMemoryError: PermGen space failure” que pode ser resolvido aumentando o valor do parametro -XX:MaxPermSize.

Espero te explicado de forma simples os tipos de memórias PermGen e Heap. Até o próximo post.

Postar um comentário

quarta-feira, 11 de março de 2009

As caras da sua aplicação web


Olá galera, depois de um certo tempo sem postar, estou de voltar com um post sobre uma ferramenta muito interessante e útil para você que quer ver como seu site é apresentado em diversos browsers sem precisar instalá-los. Browsershots é um serviço Open-Source online que simplesmente dá prints de seu site em diferentes browsers, muitos deles desconhecidos, de diferentes sistemas operacionais, como Linux(Dillo, Epiphany), Windows(Avant, Firefox, Internet Explorer), Mac OS(Camino, Safari) e BSD(Flock, Galeon).

Aproveite para testar suas aplicações web em diversos browser e fazer o download das imagens feitas pelo Browsershots. Eu já fiz os download das minhas ;)

Divirtam-se.

Postar um comentário