Script para buscar uma classe em algum jar

As vezes queremos saber em qual jar esta uma determinada classe, então esta ai um script que irá ajuda-lo a encontrar!


#!/bin/sh

if [ -z "$2" ]
then
echo Usage: $0 Directory ClassName
exit 1
fi

for f in $(find $1 -name '*.jar')
do
jar tf $f | grep "$2" && echo "[in $f]"
done

Exemplo buscando nos modelos do wildfly-8.1.0.Final:

findinjar.sh . EntityManagerFactory.class
javax/persistence/EntityManagerFactory.class
[in modules//system/layers/base/javax/persistence/api/main/hibernate-jpa-2.1-api-1.0.0.Final.jar]
org/hibernate/ejb/HibernateEntityManagerFactory.class
org/hibernate/jpa/HibernateEntityManagerFactory.class
[in modules//system/layers/base/org/hibernate/main/hibernate-entitymanager-4.3.5.Final.jar]

Comandos Úteis – Subversion – SVN

Segue alguns comandos úteis para quem trabalha com o Repositório Subversion ou SVN

Unknown

# Mostrar informações da cópia local.
svn info

# Visualizar commits de uma revisão específica.
svn log --verbose -r 42

# Visualizar commits em um intervalo.
svn log <url> -qv -r {2015-07-30}:{2015-08-03}

# Visualizar commits somarizados em um intervalo.
svn diff <url> --summarize -r {2015-08-03}:{2015-08-04}

# Visualizar as diferenças entre 2 branches.
svn diff --summarize --old ^/branches/b26_0_0_20150522 --new ^/trunk

# Fazer um checkout de um repositório.
svn checkout/co <url> <path>
#Ex: svn co svn://svn.myserver.com/myproject/trunk myproject

# Comitando.
svn add myfolder
svn commit -m "Adding myfolder" myfolder
svn commit -m "log messages"

# Removendo.
svn delete myfolder
svn commit -m "Removing myfolder file" myfolder

# Diferença.
svn diff filename

# Status da minha cópia local.
svn status

# Atualizar a minha cópia local.
svn update

# Ignorar recursivo.
svn propset svn:ignore '*.index' . --recursive

# Obter o código de uma revisão antiga.
svn up -rXXXX

Comandos Úteis – OSX – Desktop

Segue alguns comandos bobos, mas úteis para os iniciantes do OSX no Mac

imagem_10_atalhos_macosx00_small (1)

Simbolos:

  • ⌘ = Command
  • ⌥ = Option
  • ⌃ = Control
  • ⇧ = Shift
  • ↩ = Return (ou Enter)

Comandos:

  • Minimizar Janela Activa: Command+M
  • Minimizar Todas as Janela: Command+Option+H+M
  • Alternar entre Janelas: Command + Tab até achar a janela, pressionar o Option e soltar o Tab
  • Fechar : Command+W
  • Sair : Command+Q
  • Apagar : Command+Delete
  • Ir para Docker: Control+F3
  • Ir para Spotlight: Command + Space
  • Printscreen Janela Ativa: Command+Shift+3
  • Printscreen Selecionável: Command+Shift+4
  • Ir para início/final da linha/página: Command + ← ↑ → ↓

Gerenciando variáveis de ambiente JAVA_HOME no Mac, Linux, …

java

Existem diversas formas para gerenciar variáveis de ambiente em sistema Unix, uma forma simples é:

Adicionar ao ficheiro /etc/profile (é preciso ter permissão de root).

Exemplo:

sudo vi /etc/profile

/etc/profile

JAVA_HOME=/opt/java/jdk1.7.0_80
ANT_HOME=/opt/java/apache-ant-1.9.6
M2_HOME=/opt/java/apache-maven-3.3.3

PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin:$M2_HOME/bin

export PATH JAVA_HOME ANT_HOME M2_HOME 

Pronto!

Agora só fazer um reload do ficheiro, para não ter que reiniciar a máquina! :-)

source /etc/profile

Para testar se tudo deu certo. Verificar a versão. Exemplo

java -version
# ant -version
# mvn -version

Fazendo login via ssh sem precisar usar senha

ssh

Quando trabalhamos fazendo conexões ssh em servidores remotos várias vezes ao dia via terminal precisamos saber sempre os utilizadores e senhas dos hosts remotos isto se torna um pouco entediante as vezes.

Exemplo, se voce tiver um servidor ssh instalado na sua máquina, pode testa-lo sem precisar se conectar em um servidor remoto, tente:

ssh localhost

Precisou de senha, não é mesmo?

Que tal se não fosse necessário digitar a senha?

Então é para isto que este script serve!

Basta usa-lo: ./sshnologin.sh ipservidorremoto


# Simple script for copy the ssh keys to a remote host.
# autor: matafe
#!/bin/bash

if [ "x$1" = "x" ]; then
echo 'Target hostname or IP required!'
exit 1;
fi

target_host_ip="$1"
file_key_local="~/.ssh/id_rsa.pub"

echo "Coping '$file_key_local' to host '$target_host_ip' ..."
scp ~/.ssh/id_rsa.pub $target_host_ip:~/

echo "Adding keys on remote host '$target_host_ip' ..."
ssh $target_host_ip 'if [ ! -d ~/.ssh ]; then mkdir ~/.ssh; fi; chmod 700 ~/.ssh; cat ~/id_rsa.pub >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys; rm ~/id_rsa.pub; chmod 750 ~/'

echo "Testing configuration..."
ssh $target_host_ip 'echo "Configuration done!"'

Pode testá-lo, provavelmente agora já não precise mais de senha!

ssh localhost

DICA: Caso queira colocar seu script no path para de qualquer lugar do terminal poder executá-lo. É só criar um link simbólico em “/usr/local/bin“. Lembre de dar permissão de execução para seu script ssh! (chmod 755 /home/mferraz/Dev/Unix/Scripts/sshnologin.sh)

Ex: ./sshnologin.sh

sudo ln -s /home/mferraz/Dev/Unix/Scripts/sshnologin.sh /usr/local/bin/sshnologin.sh

Sei que talvez voce já sabia, mas é bem útil, não? :-)

Criando uma rotina de backup no Mac através de script.

Ja temos várias maneiras de fazer backup dos nossos dados, cada um tem o seu jeito preferido, a sua ferramenta de confiança!

No Mac temos um aplicativo muito bom, a “Máquina do Tempo”, ou “Time Machine”.

Porém neste post vou dar um exemplo, usando o rsync, um software livre encontrado em qualquer distribuição UNIX.

Para instalá-lo, usar o Mac ports, Homebrew ou qualquer gerenciador de software de sua preferência! (Desculpe, não é o objetivo aqui mostrar sua instalação)

A grande vantagem do rsync é que voce pode fazer backup de forma incremental dos seus dados, e não precisa ficar apagando fotos backup antigo (snapshots), caso fique cheio seu HD Externo de backup.

Segue o script run-backup.sh.command :

* O .command é apenas para ficar como um atalho do desktop do meu mac e ser iterativo, pois se fosse apenas o shell script, se eu quisesse ver o resultado deveria executá-lo pelo terminal.


# Simple script for run an incremental backup using rsync unix command.
# autor: matafe
#!/bin/bash

echo "Running My Backup..."

SOURCE_FOLDER="/Users/matafe/"
TARGET_FOLDER="/Volumes/matafe-backup/MyBackup"

EXCLUDE_FILES=('*.class' '*.jasper' '*.log' '.Trash' '.grails' '.jenkins' '.gradle' '.m2' '.ivy2' '.nmp' '.dropbox' 'Library')

TMP_EXCLUDE=""

for i in "${EXCLUDE_FILES[@]}"
do
	TMP_EXCLUDE="$TMP_EXCLUDE --exclude=$i"
done

CMD="rsync -av --progress $TMP_EXCLUDE $SOURCE_FOLDER $TARGET_FOLDER"

echo "$CMD"

eval $CMD

read -p "Press any key to continue... " -n1 -s

echo "Done."

Já é bem auto explicativo, mas ai vai algumas observações:

– De: /Users/matafe/
– Para: /Volumes/matafe-backup/MyBackup
– Irá excluir alguns arquivos: .log, *.class, …. ( não quero copia-los )
– No final ira mostrar o resultado e aguardar por pressionar algum tecla para fechar.

E ai? Qual é a sua ferramenta preferida?

Criando um repositório git privado na nuvem de graça

git

Neste post irei descrever como se criar um repositório git privado na nuvem de graça usando o serviço de armazenamento Dropbox, poderia ser qualquer um outro, ou até mesmo uma pasta em um servidor remoto, ou até mesmo um disco de backup.

Mas qual a vantagem disto? Pois já temos serviços muito bons que já armazenam meus repositórios na internet, como por exemplo o GitHub ( que por sinal é muito bom! ) porem só para voce armazenar projetos públicos, em que qualquer pessoa poderá ter acesso, a menos que voce pague pelo serviço.

Bom, vamos lá!

Vamos primeiro criar as pasta REMOTA onde vai ficar meu pequeno projeto privado.


# Pastas remotas
[matafe@Mauricios-MacBook-Pro:~ ] $ mkdir -p ~/Dropbox/ProjectsRepositories/myproject.git
[matafe@Mauricios-MacBook-Pro:~ ] $ cd ~/Dropbox/ProjectsRepositories/myproject.git/
[matafe@Mauricios-MacBook-Pro:~/Dropbox/ProjectsRepositories/myproject.git ] $ git --bare init
Initialized empty Git repository in /private/tmp/repo/myproject.git/

Pronto!

Agora vamos criar nosso projeto LOCAL.

#Local
[matafe@Mauricios-MacBook-Pro:~ ] $ mkdir -p ~/MyLocalProjects/
[matafe@Mauricios-MacBook-Pro:~ ] $ cd ~/MyLocalProjects/
# Criando um projeto de exemplo usando o Maven.
[matafe@Mauricios-MacBook-Pro:~/MyLocalProjects ] $ mvn archetype:generate -DgroupId=com.mycompany -DartifactId=myproject -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
[matafe@Mauricios-MacBook-Pro:~/MyLocalProjects ] $ cd myproject
[matafe@Mauricios-MacBook-Pro:~/MyLocalProjects/myproject ] $ git init
[matafe@Mauricios-MacBook-Pro:~/MyLocalProjects/myproject ] $ git add .
[matafe@Mauricios-MacBook-Pro:~/MyLocalProjects/myproject ] $ git commit -m 'initial commit'
[matafe@Mauricios-MacBook-Pro:~/MyLocalProjects/myproject ] $ git remote add origin  ~/Dropbox/ProjectsRepositories/myproject.git
[matafe@Mauricios-MacBook-Pro:~/MyLocalProjects/myproject ] $ git push origin master

Pronto! Seu projeto já esta seguro!

Se quiser do seu computador do trabalho ou de qualquer outro lugar ja pode clonar o seu projeto!

git clone ~/Dropbox/ProjectsRepositories/myproject.git

E então? Foi útil essa dica pra você?