Arquivo da tag: Dicas

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

Ferramentas para o Shell

linux

Introdução

Muitas vezes no dia precisamos criar uma pasta e em seguida entrar nesta pasta para realização de algum procedimento dentro desta, que seria algo como:

 

Utilizando funções

É possível criar funções( comandos ) personalizados modificando o arquivo ~/.bashrc ( ou ~/.profile se for mac ) que é o arquivo com código Shell que é executando quando é iniciada uma nova instância do terminal, desta forma, toda vez que você abrir o terminal, ou logar no servidor este arquivo será executado a as funções contidas nele ficarão disponíveis.

Para isso adicione as seguinte linhas neste arquivo:

Uso:

No final você estará na pasta “pasta_final”.

OBS: nesta função foi utilizado o parâmetro -p do comando mkdir que cria toda a raiz de pasta quando a pasta “pai” não existir.

Ex.:

 

Utilizando alias

Em algumas situações o recurso que desejamos implementar é tão simples que não precisamos criar um função Shell, neste caso podemos criar apenas um alias para um determinado comando. Uma situação comum para utilização deste recurso é com comando onde costuma-se repetir sempre os mesmos parâmetros. Veja alguns exemplos:

Listando os maiores arquivos de uma pasta

Existem situações onde é preciso liberar espaço em disco rapidamente para que ou seu serviço não pare por falta de espaço no HD ou simplesmente para fazer uma limpeza.

Listando arquivos

Já se perguntou quantas vezes por dia você executa o comando ls ?

Abaixo segue alguns exemplos de como enriuecer seu arquivo .bashrc/.profile:

Você encontra estes e outros exemplos no arquivo completo aqui.

 

 

ShellScript para implementação de “lixeira”

Utilizando ShellScript para não perder mais arquivos no Linux

Linu

Introdução

Neste post iremos utilizar o ShellScript para implementar um recurso muito importante que possibilita a recuperação simples e rápida de uma lixeira para o linux quando utilizado sem os gerenciadores de janelas como KDE, Gnome e outros que ja possuem um recurso parecido.

O Problema

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 só remove permanentemente após 30 dias.

A Solução

 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

O ShellScript del.sh

Exemplo de uso:

Conectando-se ao banco Derby

Logo do Apache Derby

Introdução

Apache Derby é um sistema de gerenciamento de banco de dados relacional Java que pode ser embutido em programas Java e que possui quase todos os recursos dos grandes SGDBS.

História:

Apache Derby originou-se na Cloudscape Inc, uma start-up de Oakland, California fundada em 1996 para desenvolver tecnologia Java para banco de dados. A primeira versão do motor do banco de dados, foi nomeada JBMS, em 1997. Posteriormente foi renomeada para Cloudscape e novas versões eram desenvolvidas a cada seis meses.
Em 1999 a Informix Software, Inc., comprou a Cloudscape, Inc. Em 2001 a IBM adquiriu os ativos da Informix Software, incluindo a Cloudscape. O banco de dados foi registrado como IBM Cloudscape e suas versões continuaram a ser produzidas, principalmente focando o uso em aplicações embarcadas usando os produtos Java da IBM.
Em agosto de 2004 a IBM contribuiu com o código para a Apache Software Foundation como Derby, um projecto incubado mantido pelo projeto Apache DB. Em julho de 2005 o projeto Derby foi promovido na incubadora do Apache e agora está sendo desenvolvido como um sub projeto do DB, um projeto de alto nível na Apache. Anteriormente à promoção do Derby na incubação, a Sun uniu-se ao projeto Derby com a intenção de usar o Derby como um componente de seus produtos,3 e com o lançamento do Java 6 em dezembro de 2006, a Sun incluiu o Derby no JDK renomeado como Java DB.
Em março de 2008 a IBM anunciou a remoção do produto Cloudscape do mercado, mas continuará contribuindo com o projeto.
Fonte: (wikipedia)

Instalando o Derby

Você pode fazer o download do arquivo jar aqui

OBS: O parâmetro “create=true” informa que se o arquivo nao existir o driver devera cria-lo.

 

Site oficial: Apache Derby.

Atalhos do Eclipse

  Lista com os principais atalhos do Eclipse

Atalho Command
Ctrl+Space Completar o comando
Ctrl+Shft+Space Informação de contexto ( Lista de parâmetros)
Ctrl+C Copiar
Ctrl+X Cortar
Delete Excluir
Ctrl+F Localizar
Ctrl+K Localizar o próximo
Ctrl+Shft+K Localizar Anterior
Ctrl+J Busca incremental
Ctrl+Shft+J Busca incremental reversa
Ctrl+V Colar
Ctrl+1 Resolver
Ctrl+Y Refazer
Alt+Shft+Down Restore Last Selection
Ctrl+A Selecionar tudo
Alt+Shft+Up Seleciona e expande a seleção do bloco atual
Alt+Shft+Right O mesmo que o anterior, so que por elementos
Alt+Shft+Left O mesmo que o anterior, em direção contrária
F2 Exibe a dica
Ctrl+Shft+Insert Mudar para o modo de inserção ( Tecla Insert )
Ctrl+Z Desfazer
Arquivo
Ctrl+W or Ctrl+F4 Fechar
Ctrl+Shft+W Fechar todos
Alt+F4 Sair
Ctrl+N Novo
Alt+Shft+N Exibe o menu popup “Novo”
Ctrl+P Imprimir
Alt+Enter Propriedades
F5 Atualizar
F2 Renomear
Ctrl+S Salvar
Ctrl+Shft+S Salvar todos ( O melhor de todos )
Navigate

Eclipse 3.0

Alt+Left Backward History
Alt+Right Forward History
Ctrl+L Go to Line
Ctrl+Shft+P Go to Matching Bracket
Ctrl+Shft+Down Go to Next Member
Ctrl+Shft+Up Go to Previous Member
Ctrl+Q Last Edit Location
Ctrl+. Next
Ctrl+Alt+H Open Call Hierarchy
F3 Open Declaration
Shft+F2 Open External Javadoc
Ctrl+Shft+R Open Resource
Ctrl+F3 Open Structure
Ctrl+Shft+T Open Type
F4 Open Type Hierarchy
Ctrl+Shft+H Open Type in Hierarchy
Ctrl+, Ctrl+T Quick Hierarchy
Ctrl+O Quick Outline
Projeto
Ctrl+B        Compilar e/ou publicar todos
Refatoração
Alt+Shft+C Mudar a assinatura do método
Alt+Shft+F Converter uma variável local para um Field
Alt+Shft+L Extrair variável local
Alt+Shft+M Extrair método
Alt+Shft+I Inline
Alt+Shft+V Mover – Refactoring
Alt+Shft+Y Refazer – Refactoring
Alt+Shft+T Exibir o menu de refatoração
Alt+Shft+R Renomear
Alt+Shft+Z Desfazer – Refactoring
Executar
F1 1 Depurar a ultima execução
Ctrl+Shft+D Exibir
Ctrl+U Executar
Ctrl+Shft+I Inspecionar
F8 Continuar a execução ( quando parado em brakpoint )
Ctrl+F11 Executar como da ultima vez
Ctrl+R Executar “inline”
F5 Quando em depuração, “aprofunda-se” no método
F6 Continuar sem entrar no método
F7 Executa ate o próximo brakpoint
Ctrl+Shft+B Adiciona ou remove um brakpoint
Busca
Ctrl+G Declaração na área de trabalho ( do eclipse )
Ctrl+Shft+U Ocorrências no arquivo
Ctrl+H Abre a tela de busca
Ctrl+Shft+G Referencias na área de trabalho ( do eclipse)
Fontes
Ctrl+Shft+/ Adiciona um bloco de comentário
Ctrl+Shft+M Adiciona biblioteca
Alt+Shft+J Adicionar comentário no formato javadoc
Ctrl+Shft+F Forma o código fonte
Ctrl+I Identa a linha
Alt+Shft+O Marca as correncias
Ctrl+Shft+O Organiza as importações ( Remove as inúteis ,e adiciona as necessárias)
Ctrl+Shft+ Remove o comentário do block
Alt+Shft+U Remove a anotação
Alt+Shft+S Exibe o menu de código fonte
Ctrl+Shft+C or Ctrl+/ Comenta o trecho selecionado
Edição de texto
Ctrl+Numpad – ( tecla “menos”, “subtração” )Fechar o bloco de código atual
Ctrl+D Exclui a linha inteira
Ctrl+Delete Apaga a próxima palavra
Ctrl+Backspace Apaga a palavra anterior
Ctrl+Alt+Up ( Seta para cima )Duplica a linha, e põe a nova linhas acima ( o mesmo para down )
Ctrl+Numpad + Abre o bloco de código atual
Ctrl+Numpad * Abre todos os blocos de código fechados
Ctrl+Shft+Enter Insere uma nova linha acima, ( mesmo que o cursor esteja no meio do texto )
Shft+Enter Insere uma linha abaixo, mesmo que o cursor esteja no meio do texto ( muito bom )
Alt+Down Move a linha para baixo

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

Voltando a versão de um arquivo com o GIT

Git logo. Como restaurar apenas um arquivo no git, restor just one only file

O Problema

    Uma dos maiores problemas que tenho no meu dia a dia, e com solicitações de usuários que mudam de ideia, e eu preciso voltar a versão de um arquivo apenas e não todo o projeto. A grande maioria dos programadores que conheci utilizam uma técnica horrível e que torna o código fonte cada dia mas difícil de ler que consiste em comentar o trecho de código anterior, e quando o clientes muda de ideia e pede para deixar o sistema como era anteriormente, eles removem as marcações de comentário do código anterior e “comentam” o código que tinha escrito. Isto faz com que você tenha quase o dobro de conteúdo em seu arquivo de código fonte.

Utilizando o GIT

Quando estamos utilizando um sistema de controle de versão não precisamos nos preocupar em voltar o código ao estado anterior. No nosso caso estamos utilizando o GIT, você pode utilizar o Id do commit, ou o nome de uma TAG pré definida.

Para o nosso teste, vamos realizar os seguintes passos:

  1. Criar uma pasta “tmp”
  2. Dentro desta pasta, inicializar o repositório com o comando “git init”
  3. Alterar o conteúdo do arquivo
  4. Salvar esta alterações e criar uma TAG para identificação desta versão ( não é obrigatório )
  5. Alterar novamente o arquivo
  6. Salvar uma nova versão
  7. Voltar o arquivo para a versão anterior
Neste ponto já temos nosso arquivo versionado e utilizamos uma TAG nomeada para facilitar a identificação de nossa versão.

Agora vamos adicionar mas uma linha em nosso arquivo e criar uma nova versão:

Agora temos duas versões diferentes, e vamos utilizar alguns comandos interessantes para analisarmos o nosso repositório:

Agora vamos voltar o arquivo “test.txt” para a tag commit1:

Referencias:

Documentação oficial sobre checkout: git-scm.com/docs/git-checkout
Documentação oficial sobre TAGs: git-scm.com/book/en/v2/Git-Basics-Tagging

SQL Server – Registros por tabela

SQL Server

Como esta seu banco no SQL Server ?

Seja para detectar um problema de excesso de uso de disco ou mesmo para monitoração dinâmica do SQL Serve, é importante saber como cada tabela do banco esta se comportando e se estão crescendo como esperado. Uma outra situações pela qual costumo passar é quando preciso otimizar 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 ), este código pode ser incluso em uma Stored Procedure e utilizado para verificar periodicamente o comportamento dos dados no banco, isso pode evitar que sua aplicação pare de funcionar ou fique lenta de mais por causa de alguma rotina com erro.

Para mais informações sobre Stored Procedures e sintaxe do SQL Server visite a documentação oficial da MicroSoft aqui.