Como instalar o Guardião 30 Horas no Ubuntu

Para instalar o Guardião 30 Horas do Itaú no Ubuntu, seu sistema deve atender aos requisitos mínimos listados na página do Guardião:

Sistema operacional mínimo:
• Ubuntu 11.10 – Gnome (a minha instalação é com KDE, Kubuntu, e funciona também)
• Java 1.6 ou superior

Navegadores suportados:
• Firefox 17 ou superior
• Chrome 20 ou superior
• Opera 11 ou superior

O erro que acontece geralmente é que a instalação inicia mas não finaliza. A página fica fazendo redirect em loop enviando solicitação para baixar novamente o .deb depois de um tempo.

O problema está no requisito "Java 1.6 ou superior". Esse Java tem que ser o Java da Oracle e não o OpenJDK que vem no repositório padrão. Então, para resolver o problema é necessário instalar o Java da Oracle. Faça isso seguindo os passos documentados nesta página do Ubuntu:

Oracle Java 7
Oracle Java 8

Depois de instalada a JVM correta acesse sua conta no Itaú e instale o Guardião.


Como usar expressão regular dentro de um if no bash

Precisei remover alguns arquivos que tinham um padrão no nome, no caso terminavam com a mesma string em seu nome. Para usar uma expressão regular dentro do if no bash usa-se o operador ~=. Por exemplo:

if [[ $var =~ string$ ]] ...

Meu if ficou:

if [[ $arq =~ string$ ]]; then
   rm $arq
fi

Simples assim.

Como remover "Fontconfig warning" ao usar a linha de comando

É irritante. Você faz um script pra chamar algum programa que você usa com frequência pra passar algum parâmetro e lá aparece no terminal o maldito:

Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 9: reading configurations from ~/.fonts.conf is deprecated.


Para sumir com esse warning faça:

mkdir -p ~/.config/fontconfig/

mv -i ~/.fonts.conf ~/.config/fontconfig/fonts.conf

Fonte: http://askubuntu.com/a/231274

Como apagar linhas usando o sed

Há várias maneiras de apagar uma ou mais linhas de um arquivo texto usando o sed. Hoje precisei usar expressão regular para apagar uma linha com conteúdo específico de vários arquivos. O formato geral é:

$ sed -e '/<expressão regular>/d' arquivo

Exemplo:

$ sed -e '/grava=true/d' *.cfg

O exemplo acima apaga linhas que tenham o conteúdo "grava=true" dos arquivos *.cfg no diretório corrente. Para que a alteração seja aplicada no mesmo arquivo use o parâmetro -i:

$ sed -i -e '/grava=true/d' *.cfg

Se quiser que se faça um backup adicione a extensão que quer no backup:

$ sed -i.bkp -e '/grava=true/d' *.cfg

Alterará o arquivo e criará um arquivo.cfg.bkp com o conteúdo sem alteração.

Para outros exemplos veja: http://hacklab.com.br/2013/07/18/sed-como-apagar-linhas/

Erro com gnome-keyring no KDE

Uso o KDE e estranhei quando tentei fazer uma operação de merge usando o Netbeans e ganhei o seguinte erro envolvendo uma lib do gnome:

p11-kit: couldn't load module: /usr/lib/x86_64-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: /usr/lib/x86_64-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: cannot open shared object file: No such file or directory

A mensagem também aparece ao chamar o svn via linha de comando mas no Netbeans a coisa fica feia porque a operação de merge é abortada. Pesquisei um pouco e uma solução sugerida aqui é comentar a seguinte linha no arquivo /etc/pkcs11/modules/gnome-keyring.module :


module: gnome-keyring-pkcs11.so


Comentei a linha, fechei e abri o Netbeans e a operação de merge passou a funcionar sem erros.

Como trocar de diretórios: pushd e popd

Esses dois comandos mudaram minha forma de navegar pelos diretórios do sistema. Antes eu usava apenas o "cd" e em seguida usava o "cd -" para voltar para o diretório anterior. Mas o pushd e o popd melhoram completamente a vida.

Ao usar o pushd você empilha o diretório atual ao mudar para o próximo diretório. A cada vez que você aciona o pushd ele exibe a lista dos diretórios na pilha:

emerson@desktop:~$ pushd Temp
~/Temp ~
emerson@desktop:~/Temp$ pushd ~/Downloads/
~/Downloads ~/Temp ~
emerson@desktop:~/Downloads$ pushd ~/Documents
~/Documents ~/Downloads ~/Temp ~

emerson@desktop:~/Documents$

O popd desempilha os diretórios e exibe o que ainda resta na pilha:

emerson@desktop:~/Documents$ popd
~/Downloads ~/Temp ~
emerson@desktop:~/Downloads$ popd
~/Temp ~
emerson@desktop:~/Temp$ popd
~
emerson@desktop:~$ popd
bash: popd: directory stack empty

emerson@desktop:~$

No fim ele diz que a pilha de diretórios está vazia. Muito útil!

Lookup EJB remoto no Jboss

Vira e mexe eu preciso de uma cola pra fazer o lookup de EJBs remotos quando quero fazer algum teste porque nunca lembro das propriedades para iniciar o contexto. Aí está um método que faz o que queremos (código do @rod_gomes):

private <T> T locate(String ejbName) throws Exception{
  Hashtable<String,String> properties = new Hashtable<String,String>();

  properties.put("java.naming.
factory.initial", "org.jnp.interfaces.
   NamingContextFactory");
  properties.put("java.naming.
factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
  properties.put("java.naming.
provider.url", "localhost:1099");
  Context context = null;

  context = new InitialContext(properties);

  Object ref = context.lookup(ejbName);

  return (T) ref;


Pode-se usar java.util.Properties para as propriedades também ou  não usar generics e fazer o cast do lado de quem chama.