Arquivo da categoria: infoQ

Conteúdo da página da infoQ.

Padrões de Código Java do Google

 

por Bienvenido David , traduzido por Gabriel Ozeas

O Google liberou recentemente sua lista completa de definições de padrões de código para código-fonte Java. São regras definitivas sobre código Java que devem ser seguidas universalmente dentro do Google. Esta lista contempla formatação de código assim como outros tipos de convenções e padrões de código.

O documento é divido em seis seções principais: Fundamentos de Arquivos Fonte, Estrutura de Arquivo Fonte, Nomenclatura, Práticas de Programação e Javadoc. A seção de Fundamentos de Arquivos Fonte fala sobre nomes e codificação de arquivos, caracteres de espaço e caracteres especiais. A seção sobre Estrutura de Arquivos Fonte fala sobre informação de licença, declarações de pacotes e import e ordem de membros de uma classe. A seção de Formatação discute sobre chaves, indentação, tamanho da linha, espaços em branco, parênteses, enums, vetores, declarações de switch, anotações, comentários e modificadores. A seção sobre Nomenclatura fala sobre identificadores (pacote, classe, método, constante, campo, variáveis locais, tipos de variável) e CamelCase. A seção sobre Práticas de Programação fala sobre @Override, exceções, membros estáticos e finalizers. A seção sobre Javadoc fala sobre como formatar o Javadoc e onde ele é necessário.

Abaixo segue alguns itens presentes no guia:

  • Nenhuma declaracão de importação com coringas;
  • Sobrecargas aparecem em sequência;
  • Chaves são usadas mesmo quando o corpo do código é vazio ou contém somente uma declaração;
  • Indentação com dois espaços;
  • O limite de colunas são de 80 à 100 caracteres;
  • Sem declarações de vetores no estilo C;
  • A declaração default no switch é obrigatória;
  • Modificadores aparecem na ordem recomendada pela Especificação da Linguagem Java;
  • Constantes usam LETRAS_MAIÚSCULAS. Note que toda constante é um campo final e estático, porém nem todos os campos finais e estáticos são constantes.

Para uma leitura completa, leia o Google Java Style. Também existe o guia oficial Convenções de Código para a Linguagem de Programação Java da Oracle. O Google também possui guias de estilo para outras linguagens como C++, Objective-C, Python, Sheel, HTML/CSS, JavaScript e Lisp.

Fonte: http://www.infoq.com/br/news/2014/02/padroes-codigo-java-google?utm_source=infoq&utm_medium=popular_links_homepage

avatar_wordpress_clean61

http://fabianoflorentino.com/

AQuery: um jQuery para Android

Postado por Jonathan Allen , traduzido por Rafael Sakurai

popularidade do jQuery vem da redução significativa da quantidade de código necessária para desempenhar tarefas assíncronas e manipular o DOM. O novo projeto open source Android Query (AQuery) objetiva fazer o mesmo para os desenvolvedores que trabalham com Android. O exemplo a seguir está disponível no site do projeto e dá uma ideia da redução do código obtida com o AQuery:

Antes:

Depois:

O AQuery simplifica a chamada aos tratamentos de eventos. Em vez do desenvolvedor construir uma interface ou classe anônima, basta que escreva corretamente o nome do método de evento:

aq.id(R.id.button).clicked(this, "buttonClicked");

A fragmentação, causada pelos diferentes tamanhos de telas e versões de APIs no Android, dificulta o desenvolvimento para os dispositivos. O AQuery resolve alguns desses problemas encapsulando as partes que mudam em métodos ou classes. Por exemplo, o método aq.hardwareAccelerated11() verifica se o dispositivo suporta a API na versão 11 e permite habilitar a aceleração por hardware se for apropriado.

Quando se trabalha com diferentes tamanhos de telas, muitas vezes se inicia criando uma versão para tablet e então se remove ou reorganiza os controles até que encaixem em uma tela de celular. Desta forma, é necessário inspecionar visualmente a árvore de controles que foi criada no arquivo AXML, antes de tentar manipular os códigos-fonte. O AQuery permite que fazer verificações chamando métodos encadeados; por exemplo:

aq.id(R.id.address).text(name).background(R.color.red).textColor
(R.color.black).enabled(true).visible().clicked(this, 
"addressClicked");

Se os endereços dos controles não existirem, serão ignorados todas as atribuições e tratamentos de evento seguintes. Dessa forma a depuração do código fica mais difícil, mas em compensação reduz-se drasticamente o número de linhas necessárias para criar o método onCreate().

O AQuery também facilita o processo de requisições HTTP assíncronas, ele suporta facilmente operações POST simples e multipartes; também pode aceitar dados binários, e em JSON, HTML e XML. Inclui também suporte diferenciado para imagens, em que apenas uma linha pode ser usada para baixar uma imagem, fazer cache e carregar a imagem em um controle.

Os vários releases do AQuery estão disponíveis na seção de downloads do projeto. Veja também a documentação básica.

 

Fonte: http://www.infoq.com/br/news/2012/04/AQuery;jsessionid=817C5634C1C897F9FA06B151943A98A9

 

avatar_wordpress_arredondado

https://fabianoflorentino.wordpress.com

Grave vulnerabilidade de negação de serviço atinge maioria dos servidores web

Postado por Jonathan Allen , traduzido por Eder Ignatowicz

Os pesquisadores de segurança Alexander Klink e Julian Wälde revelaram uma séria vulnerabilidade que atualmente afeta a maior parte dos servidores web. O ataque exige apenas uma requisição HTTP, que é projetada especialmente para gerar colisões de códigos hash dos dados POST de formulários.

No momento de descoberta do ataque, ele atingia servidores web em Python, Ruby, PHP, Java e ASP.NET; contudo os fornecedores destes servidores estão trabalhando juntamente com os pesquisadores para a criar atualizações e mitigar a vulnerabilidade. As atualizações 7.0.23 e 6.0.35 do Tomcat tratam esta vulnerabilidade, limitando o número de campos do formulário em um POST a 10 mil. O change log informa que o valor é configurável, porém não foram disponibilizados detalhes sobre esta configuração.

O patch para ASP.NET foi disponibilizado no dia 29 de dezembro e será automaticamente aplicado para os clientes do Windows Azure com uma política padrão de serviços. O patch limita em 1.000 o número de campos no formulário POST de cada request, valor bem abaixo do número necessário para o ataque. Este valor é configurável através da chave do appSettings “aspnet:MaxHttpCollectionKeys”.

Atualmente essa configuração somente pode ser aplicada com efeito para todo o servidor, mas já foi solicitada a personalização desta configuração para valores específicos em cada página. Outra correção disponibilizada é referente a falhas na entrada de código JSON e na sua lógica de desserialização.

O PHP 5.4.0, um release candidate, também oferece uma diretiva max_input_vars para limitar o número de campos no formulário. Contudo os release notes não informam o valor padrão desta configuração.

Até o presente momento, todos os fornecedores têm tratado a falha em servidores web através da limitação no número de campos em cada requisição. Outra opção para lidar com o problema é através do uso de um fórmula para geração aleatória de código hash. O Ruby é uma das linguagens que vem adotando esta solução e o .NET também aplica esse método, mas somente para builds locais. Releases de produção atualmente usam uma fórmula padrão, mas dada a gravidade da falha, isto pode ser modificado na próxima atualização do CLR. Para Java, a solução não é tão simples, pois a JVM especifica a fórmula de cálculo de hash para strings, e muitos desenvolvedores podem depender da consistência dessa fórmula padrão nas diferentes versões do Java.

Uma atualização do Oracle Glassfish está supostamente pronta, mas ainda não disponível. Não existe ainda informações sobre a solução utilizada para tratamento da falha nesse servidor.

Mais informações referentes à vulnerabilidade podem ser encontradas nos sites Ars Technica e Chaos Communication Congress.

Fonte: http://www.infoq.com/br/news/2012/01/Hash-Table-Vulnerability;jsessionid=76A93F03ACAFEA891BA6DB93F8810C29

 

avatar_wordpress_arredondado

https://fabianoflorentino.wordpress.com

%d blogueiros gostam disto: