Arquivos da categoria: Tutorial

R vs SQL

R logo

R logo

Iniciando

Quando comecei a utilizar o R o maior problema foi a adaptação devido ao fato de já utilizar SQL com bancos relacionais, imediatamente surgiam as dúvidas:

  1. Como faço um “where” ?
  2. Tem como fazer um “like” ?
  3. Como faço um “group by”
  4. Como faço para ordenar?
  5. Como faço um “limit”

Continue lendo

Analisando o log do fail2ban

Firewall configuração com o fail2ban

Introdução

O fail2ban é uma ferramenta escrita em python que analisa os arquivos de log dos seu sistema e automaticamente cria regras de bloqueio no iptables para ips que estejam realizando alguma atividade suspeita. Por exemplo, em casos de muitas tentativas de acesso pelo ssh inválidas, o fail2ban identifica estas tentativas com erro no log do sistema ( /var/log/syslog ) e cria uma regra no iptables bloqueando este ip por alguns minutos.

Continue lendo

Ordenamento por Data no DataTables

Logo do DataTables plugin jQuery

O DataTables é hoje uma dos plugin jQuery mas utilizado por resolver ordenamento e paginação de forma automática. Mas em qualquer ferramenta que tente fazer ordenamento sem reflection, ocorre um problema que é a identificação automática do tipo de dados da coluna ou lista ordenada.
Isto ser torna um problema no seguinte caso:

  • 01/02/2015
  • 02/01/2015
  • 03/12/2014
Na lista acima as datas estão ordenadas como “string”.
Por padrão, o plugin do dataTables reconhece automáticamente os tipos “string”, “numeric”, e, “date” , mas todos em formato americano.

Para burlar este problema, é possível criar um tipo de dado extendendo a api do jQuery (Clique em Result para ver o resultado ):

Você pode testar o código acima no JsFiddle.

Executando scripts Groovy no java

Logo Groovy

Groovy – Introdução

O Groovy é uma linguagem dinâmica de script criada para ser executada na plataforma Java, e não é necessariamente um concorrente do Java mas sim um complemento que torna a plataforma ainda mais forte. Além do beneficio de ser uma linguagem de Script e não precisar ser pre-compilado par que seja executado o Groovy ainda conta com o beneficio de ser completamente integrado com a plataforma Java, isto significa que o seu script pode ter acesso ao escopo interno do sistema Java.

Onde Utilizar ?

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.

Uma das situações onde estes recursos podem ajudar é quando precisamos dar ao usuário final a possibilidade de definir as regras de negocio dinamicamente:

  1. O clientes deve receber um desconto quando comprar um determinada combinação de produtos.
  2. Critério de aprovação de um aluno: “Deve ter uma média maior que 5.5 e ter uma frequência de 70%”
  3. O 500º cliente do dia recebe um desconto especial.

Estes são apenas alguns dos muitos exemplos de regras de negocio que podem mudar de um dia para o outro, e para que nao precisemos criar parametrizações monstruosas ou ter que publicar uma nova versao da aplicação a cada dia podemos deixar estas regras nas mãos dos gestores e quando eles acharem pertinente eles mesmos pode editar as regras como se fosse uma fórmula do Excel.

O Código

Site oficial: Groovy

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

Desenvolvimento “Ágil” com delphi

As pessoas me perguntam porque que eu programo em delphi, a resposta esta no vídeo abaixo.
É claro que existem muitas outras ferramentas que auxiliam no desenvolvimento rápido de soluções diversas em TI, mas esta ainda é a única que conseguiu mesclar agilidade e flexibilidade para qualquer que seja o tipo de alteração.
OBS: Devido as novas políticas da atual responsável pelo desenvolvimento e manutenção do delphi a embarcadero, estou migrando todas as minhas aplicações para o lazarus com o freepascal.

Depurando seu código no delphi

Delphi borland Depuração debugar encontrar falhas erros no código

Uma das maiores dificuldades para quem esta começando é encontrar erros de tempo de execução, erros que passam pelo compilador. Neste vídeo eu vou mostrar como depurar o seu código. Trata-se de executar o programa linha apos linhas, podendo ainda examinar e se for o caso, ate alterar valores das variáveis utilizada para que fique fácil descobrir em que ponto exatamente o seu programa se comportou de forma inesperada.