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

7 de nov. de 2011

COMSOLiD ⁴ - Falta pouco...

Para quem ainda não se inscreveu no COMSOLiD⁴, basta acessar o link e confirmar sua presença no melhor evento de software livre e inclusão digital do Ceará.

Para os interessados em palestras, mini-cursos e oficinas basta submeterem seus trabalhos para o e-mail comsolid_AT_comsolid_DOT_org.

Essa ano teremos um Blender Day, distribuiremos uma versão customizada do Ubuntu com vários recursos pré-configurados, Campeonato de Jogos, Luta Livre de Programação, palestras dos mais variados assuntos, entre outras atividades.

Tudo isso de 23 a 26 de novembro no IF CE - Campus Maracanaú.

Para mais informações vá ao site oficial do evento.

20 de out. de 2011

Habilitando o DPMS do Monitor

Quando instalei o Ubuntu 11.10 Desktop i386 notei que o monitor não desligava. Apenas ficava preto.
Pesquisando muito, descobri que era o DPMS (Display Power Management Signaling) que faz o monitor entrar em Stand-by (modo de descanso) para economizar energia e o seu monitor. :D

Então, para habilitá-lo, basta:
$ xset +dpms
Para conferir, use:
$ xset -q