Arquivos da categoria: Código

Script para implementação de “lixeira” no linux ( terminal )

Quando se utiliza o terminal o linux, pode acontecer alguns desastres, como por exemplo o uso do comando rm que remove o arquivo informado permanentemente. Por isso criei o script abaixo que move o arquivo ou pasta informado para uma pasta temporária, e so remove permanentemente apos 30 dias.

 Para disponibilizar o comando em qualquer local do terminal, crie o arquivo com o nome “del.sh”, dê permissão de execução com o comando “chmod +x del.sh” e crie um link dentro da pasta “/usr/local/bin” com o seguinte comando: “ln -s /home/pasta/onde/esta/o/arquivo/del.sh del”
Apos seguir todos estes passos, você ja poderá utilizar o comando:
del arquivo.txt

Auto incremento no banco de dados Derby ( javaDb )

   O auto incremento no derby é um pouco diferente do padrão dos outros banco de dados.
Segue um exemplo que pode ajudar a criar as tabelas de seu novo banco.

Executando scripts Groovy no java

Logo Groovy

Logo Groovy

Existem situações onde precisamos montar lógica em tempo de execução, o java tem recursos muito bons para trabalhar com reflection, mas quando não é suficiente sentimos falta do bom JavaScript.
Para não precisar recorrer a bibliotecas de execução de JavaScript podemos utilizar o Groovy.

Uso da tag canvas do HTML5 com JavaScript

A tag CANVAS é basicamente uma tela para desenho.

 

Com o JavaScript pode-se obter a tela, dai será nescessário um objeto Context para desenhar nesta tela:

Resultado:

Principais funções:
 
moveTo(int x, int y);   //Move para as cordenadas indicadas

lineTo(int x, int y); //Desenha uma linhas do ponto inicial definido por “moveTo” ate o pondo indicado nos valores de X e Y

stroke(); //Imprime o senho na tela
 
fillRect(int x, int y, int width, int height); //Desenha um retângulo, onde X e Y indica o posicionamento e Width e Height indicam o tamanho do retângulo
 
arc(int x, int y, int radius,double start, double end); //Desenha um arco onde X e Y indica o posicionamento do centro do arco, Radius é o raio , Start indica onde o arco deve iniciar, o valor 0(zero) é a posiçao de 3(três) horas no relógio e vai ate Math.PI (3.14), End é o fim do arco, desta forma para desenhar um círculo, usa-se 0 para Start e 3.14 (Math.PI) para End

Abaixo você pode ver um exemplo de uma animação que renderiza um relogio em uma tag

Seu navegador não suporta HTML5

Fonte: developer.mozilla.org

Usando log com Java

System.out.println(e.getMessage());
Este é talves, o maior motivo para querer-mos utilizar uma ferramenta para gestão dos processos de log.
Enquanto estamos desenvolvendo, é comum o uso do sysout, para registro e ate “depuração” do código, o problema começa quando o sistema vai para a produção e ocorrem erros misteriosos e o usuario nunca sabe realmente informar o que aconteceu.

O log4j propõe resolver este problema, não apenas registrando as mensagens em arquivos para encapsulando todo o processo que envolve os registros de log, como formatação das saidas, inclusão de data e hora, backup do log e outros.

Para utilização desta API, basta fazer o download do arquivo .jar e adiciona-lo ao buildpath da aplicação. 
 
No caso de uma aplicação web, basta colar o arquivo na pasta “lib”  do projeto.

Na primeira linha, foi usada uma configuração básica 
Na segunda linha iniciamos a classe que registra o log.
Esta configuração não resolve muita coisa porque apenas registra no console as saidas informadas:

0 [localhost-startStop-1] INFO com.edgardleal.ClassTest  – Sistema iniciado
500 [localhost-startStop-1] WARN
com.edgardleal.ClassTest  – Mensagem de alerta
500 [localhost-startStop-1] ERROR com.edgardleal.ClassTest  – Log de erro

A primeira coluna indica o tempo decorrido deste a inicialização da classe Logger
2º Thread que esta sendo executada no momento
3º Nível do log
4º Classe que executou o log
5º Mensagem informada

Para que tenha-mos um log realmente útil precisaremos criar um arquivo de configurações para definirmos nossas preferencias e termos um resultado como o do exemplo abaixo:

INFO localhost-startStop-1 15:33:42.017 com.edgardleal.ClassTest – Sistema iniciado
WARN localhost-startStop-1 15:33:42.517 com.edgardleal.ClassTest – Mensagem de alerta
ERROR localhost-startStop-1 15:33:42.517 com.edgardleal.ClassTest – Log de erro

Crie um arquivo com o nome “log.properties” com o seguinte coneudo:


1º Nome o layout de configuração
2º Tipo de layout utilizado ( o arquivo continua crescendo )
3º Formatação utilizada, neste caso, utilizaremos o padrão informado abaixo
4º Nome do arquivo de log
5º Mascara utilizada para gerar o resultado
6º Tamanho máximo do arquivo de log
7º Número máximo de backups mantidos
 
E alteramos o código anterior para que fique da seguinte forma:

  

Na primeira linha do código, iniciamos a configuração global do log com o arquivo “log.properties”

Veja a documentação completa

Gerar autoincremento para todas as tabelas automaticamente

Logo do firebird sistema de gerenciamento de banco de dados

Uma das reclamações das pessoas que começam a utilizar o FireBird é a falta do auto-incremento como é contrados em sistemas como SQL Server e MySQL. Ainda não vamos discutir os prós e contras de se utilizar generators(Sequences), mas criei um código para me auxiliar na tarefa de preparar o banco de dados para rotinas de replicação e que serve para solucionar este problema.

A rotina abaixo busca por tabelas no banco de dados que contenha chaves primárias de apenas um campo, caso encontre, cria o GENERATOR (SEQUENCE), e a TRIGGER correspondente para gerar o auto-incremento destas tabelas.

Recursos utilizados nestes scripts:
TRIM: retorna o texto informado no parâmetro sem os espaços a esquerda e direita.
EXECUTE STATEMENT: Execute um comando contido na string, muito útil para criação de consultas  
            dinamicamente.
RDB$RELATIONS: Tabela do sistema que contem todas as tabelas e views do banco de dados.
UPPER: Retorna o parâmetro informado em caixa alta (todas as letras maiúsculas )
CAST: Converte um valor para um determinado tipo de dados. No nosso exemplo foi convertido um valor inteiro para texto ( varchar(5) ).

Dados aleatórios e busca inteligente

Por melhor que seja sua rotina de busca, ainda assim vai existir um usuário que não consiga encontrar o que esta procurando, por isso criei a rotina abaixo para fazer algo parecido com a busca do google.
Para testar utilizei também uma rotina para gerar dados aleatórios que pode ser muito boa para testar procedimentos.

ATENÇÃO!! Veja a função SPLIT aqui

Rotina para gerar números para loteria

   

      Acredito que quase todo programador ja tentou criar um programa para descobrir(prever) os números da loteria. Abaixo escrevi uma função para gerar uma sequencia de 15 números para a lotofacil para quem quer  iniciar esta jornada em busca da combinação certa.

Listar todas as tabelas com a quantidade de registro

     Existem situações em que é preciso saber a quantidade de registros em um banco de dados ou a quantidade de registros nas tabelas do banco. Uma destas situações pela qual costumo passar é quando preciso optimizar consultas e preciso saber a cardinalidade das tabelas envolvidas para decidir qual índices priorizar na junções condições e ordenamento. Para isso criei a rotina abaixo que lista todas as tabelas do banco de dados e sua respectiva cardinalidade ( Quantidade de registros ).