6 de fev. de 2012

NetBeans 7.1


NetBeans 7.1

Lançado em 5 de Janeiro de 2012, a versão 7.1 do IDE NetBeans, agora desenvolvida pela Oracle veio com várias novas funcionalidades. Vou listar as que eu particularmente acho mais úteis, pelo menos do ponto de vista das que eu mais vou utilizar (por exemplo, funcionalidades relacionadas ao JavaFX não serão o
o foco).



Novos Refatoramentos

Um refatoramento bastante útil é o que troca a chamada demasiada de um método e substitui por uma única chamada e atribui o valor a uma variável local. Ex. suponha o seguinte método:

public double calculatePrice() {
  if (getBasePrice() > 1000) {
    return getBasePrice() * 0.95;
  } else {
    return getBasePrice() * 0.98;
  }
}

Note que a chamada ao método getBasePrice() é feita três vezes. É muito provável que este método seja caro para a aplicação, no sentido de que ele deve executar algum cálculo toda vez que é chamado.
Neste caso o ideal seria chamá-lo apenas uma vez e atribuir o valor a uma variável.
Para isso basta clicar com o botão direito no método getBasePrice(), Refatorar → Introduzir variável...
Selecione a expressão desejada, dê um nome a nova variável. Note que é possível torná-la final e/ou
substituir todas as ocorrências. Pronto. Seu código agora deverá ser da seguinte maneira:

public double calculatePrice() {
  double basePrice = getBasePrice();
  if (basePrice > 1000) {
    return basePrice * 0.95;
  } else {
    return basePrice * 0.98;
  }
}

Renomear

Um problema grande de renomear algum atributo de instância no NetBeans era de que os metodos get e set ainda ficavam com o nome antigo. Agora já é possível mudá-los ao renomear um atributo.

Mudar tipo de retorno do método

Caso você crie um método, e ao terminar de escrevê-lo se dá conta que deveria retornar um valor, ou
que o tipo de retorno está incorreto é possível mudar utilizando as Dicas do NetBeans. Quando uma lâmpada com um ponto de interrogação aparece é possível chamar um menu com dicas do IDE. O atalho para isso é o Alt+Enter. Daí basta escolher a opção Alterar o tipo de retorno do método para...

Importar classes ao copiar e colar

Quando um código Java é copiado, os tipos que são usados pelo trecho de código são gravadas. Quando o trecho é colado, você tem a opção de automaticamente importar as classes que são utilizadas no trecho.

Seleção Retangular

Para isso clique em "Alternar seleção retangular" na barra de edição (ou Ctrl+Shift+R). A seleção pode ser criada com o mouse ou com as setas do teclado usando Shift.
Possíveis ações:

  • Clique Del para remover o texto selecionado.
  • Digite novos caracteres, os quais serão replicados em todas as linhas
  • Recorte/Copie/Cole


Suporte ao Git finalizado

Suporte completo ao Git faz parte da distribuição padrão do NetBeans e está disponível logo após a instalação do IDE. Ele permite que usuários trabalhem com clones locais bem como provê possibilidade
de clone, fetch, pull ou push de repositórios remotos.

Histórico Local

Reverter exclusão

É possível escolher quais arquivos serão deletados.

Aba Histórico

Use a aba Histórico para acesso rápido ao Histórico Local.

Essas, dentre outras dicas podem ser encontradas em http://wiki.netbeans.org/NewAndNoteworthyNB71

1 de fev. de 2012

Como remover PPA do Ubuntu?

O método correto para remover um ppa e usar pacote da versão do repositório oficial do Ubuntu é usando o ppa-purge.
Primeiramente, você precisa instalar o ppa-purge:
sudo apt-get install ppa-purge
Daí, você limpa o ppa instalado anteriormente. (Por exemplo, vlc-daily)
sudo ppa-purge ppa:videolan/master-daily
Assim, fizemos o downgrade para a versão estável do vlc.



9 de dez. de 2011

Máscara de dados - PostgreSQL

Fazendo uma pesquisa descobri uma maneira fácil de criar máscara de dados usando a função to_char() do PostgreSQL. Para exemplificar teste a seguinte query:

SELECT to_char(12345678901, 'FM000"."000"."000"-"00');


Neste exemplo transformaremos o número 12345678901 (NUMERIC) no texto 123.456.789-01 (TEXT). O que acontece é que a função to_char() tem o poder de converter valores em textos usando máscaras. Isso serve tanto para números, como para datas, entre outros. Mais detalhes em http://www.postgresql.org/docs/8.1/interactive/functions-formatting.html.

Notem que existem algumas curiosidades neste SELECT. A primeira é: o que representa esse FM? Neste caso ele remove espaços em branco antes do texto. Isso porque a função to_char() adiciona esses espaços para criar um padrão de tamanho fixo. Faça o teste e remova o FM e note que há um espaço em branco antes do primeiro zero.

A segunda curiosidade é a presença de aspas duplas. Neste caso elas servem como delimitadores e compõem a máscara. Isso diferencia um ponto flutuante de um ponto qualquer.

Seguindo o mesmo raciocínio podemos criar máscaras para outros tipos de dados, como por exemplo CNPJ, CEP, telefone, etc. Para uma utilização otimizada e para não repetirmos códigos criaremos uma função SQL na linguagem pl/pgsql. Eis o código:


-- Function: public.to_cpf(numeric)


-- DROP FUNCTION public.to_cpf(numeric);


CREATE OR REPLACE FUNCTION public.to_cpf(numeric)
  RETURNS text AS
$BODY$
BEGIN
  RETURN to_char($1, 'FM000"."000"."000"-"00');
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION public.to_cpf(numeric) OWNER TO postgres;

Essa função recebe um NUMERIC como parâmetro, assim poderemos passar um INTEGER, ou LONG, que o método aceitará numa boa. A partir desse número usaremos a função to_char() para gerar a máscara e retornar o valor. Simples e objetivo.

Faça o mesmo para outras máscaras, por exemplo telefone:

SELECT to_char(12345678901, 'FM"("00") "0000"-"0000');

Ou seja, sempre que for necessário utilizar caracteres diferentes de zero utilize aspas duplas.

14 de nov. de 2011

Desabilitando Serviços Indesejáveis

Para desabilitar serviços desnecessários (que rodam em segundo plano), você precisa remover os processos da inicialização do sistema. Digite o seguinte comando para listar todos os serviços que são iniciados no momento do boot em run level #3:
# chkconfig --list | grep '3:on'
Para desabilitar o serviço, faça:
# service nomeDoServico stop
# chkconfig nomeDoServico off