Java e Google Chrome

UPDATE: A extensão NPAPI foi removida do Chrome 35 em diante. Essa extensão era necessária para rodar o plugin Java necessário para os bancos. O tutorial abaixo não vai servir para quem usar Chome na versão 35 em diante. Use o Firefox para pagar suas contas.

Formatei meu computador recentemente. Reinstalei tudo bonitinho, mas quando fui pagar minhas contas me deparei com a falta do plugin java funcionando no Chrome.

Sinceramente, ainda não sei o jeito certo de instalar o java na minha máquina. Os passos a seguir foram os que funcionaram pra mim no Ubuntu Server 12.10.

Download do Java

Baixe o pacote tar.gz da JDK ou JRE a partir da página de downloads Oracle[1]. Eu baixei a versão 64bits e a aplicação do Itaú funcionou. Talvez algumas aplicações de outros bancos rodem somente na versão 32bits.

Descompactando o pacote

Eu gosto de deixar essas coisas no /opt.

fabio:~$ cd /opt/
fabio:opt$ sudo tar -zxvf ~/Downloads/jre-7u15-linux-x64.tar.gz

Instalando plugin java no Chrome

Para isso basta um link simbólico. Se você instalou o Chrome através pacote deb fornecido pelo Google, talvez os caminhos de pastas no seu computador sejam iguais aos meus.

fabio:opt$ sudo ln -s /opt/jre1.7.0_15/lib/amd64/libnpjp2.so \
                       /opt/google/chrome/plugins/libnpjp2.so

Esses passos foram o bastante para que eu pudesse usar o Internet Banking do Itaú para pagar minha contas. Talvez estes passos sejam semelhantes para outras distribuições também. Boa sorte!

Referências

[1] – http://www.oracle.com/technetwork/java/javase/downloads/index.html

Nginx e php5-fpm

Eu precisava rodar no meu servidor uma aplicação PHP, sem que isso despendesse muito esforço e tempo em configurações complicadas, mas que ao mesmo tempo fosse flexível o suficiente para compartilhar o webserver com outras aplicações que rodam em Python.

A solução foi usar o php-fpm, que para minha alegria está no repositório do Ubuntu 12.10. A ideia é instalar o pacote php5-fpm e configurar a diretiva fastcgi_pass no Nginx. Eu fiz o seguinte para começar com uma configuração básica:

fabio:~$ sudo apt-get install php5-fpm
fabio:~$ sudo mkdir /var/www/teste.montefuscolo.com.br
fabio:~$ echo "<?php echo 'oi mundo';" | \
         sudo tee  /var/www/teste.montefuscolo.com.br/index.php
fabio:~$ sudo tee /etc/nginx/sites-enabled/teste.montefuscolo.com.br << EOF
server {
    server_name teste.montefuscolo.com.br;
    root /var/www/teste.montefuscolo.com.br/;

    location / {
        index.php index.html index.htm;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
    }
}
EOF
fabio:~$ sudo service nginx restart

Pode ser que ao invés de um arquivo sock, o php5-fpm esta rodando em uma porta TCP, pois depende de como ele vem pré-configurado. Neste caso a configuração da diretiva fastcgi_pass pode ser um pouco diferente, como a seguinte:

fastcgi_pass 127.0.0.1:9000;

Para descobrir isso você pode consultar o arquivo de configuração do php-fpm em /etc/php5/fpm/pool.d/www.conf, procurando pela linha que começa com listen.

fabio:~$ grep ^listen /etc/php5/fpm/pool.d/www.conf
listen = /var/run/php5-fpm.sock

Depois desses passos consegui uma página imprimindo ‘oi mundo’ em http://teste.montefuscolo.com.br/.

Referências

O ‘git revert’

Eu precisava fazer com que minha cópia local do git ficasse com o conteúdo igual estava há uns 4 commits atrás. Esses 4 commits no meio do caminho já estavam no servidor remoto, então não posso simplesmente jogá-los fora. Então tive de aprender o comando ‘git revert‘.

O ‘git revert‘ cria um ou mais commits com as alterações que desfazem o conteúdo dos commits indesejados. Abaixo escrevi sequências de códigos que ilustram o uso ‘git revert‘.

Desfazendo 1 commit

Quero desfazer o commit 23a10ce que cria o arquivo de nome “CCC”.

[email protected]:git-revert(master)$ git log --pretty=oneline
9d1d944c5f153c4dafb80a8a19009527e6fe9f1a commit 5 - arquivo FFF
66622af8cbf38cf3749145bb37929367dadb8a84 commit 4 - arquivo EEE
35a4e32012dec7931d5f4b32f1121dbcd9318e52 commit 3 - arquivo DDD
23a10ce4592080ac32b1f1e1a779f295ac26a720 commit 2 - arquivo CCC
5d2c7d5b39892afba41ee8537c9384a77ed1e15e commit 1 - arquivo BBB
21d969d160108eb2acecfc9ea5ede8590fba5494 commit 0 - arquivo AAA

[email protected]:git-revert(master)$ ls
AAA BBB CCC DDD EEE FFF

[email protected]:git-revert(master)$ git revert --no-edit 23a10ce
[master cd4fa8a] Revert "commit 2 - arquivo CCC"
1 file changed, 1 deletion(-)
delete mode 100644 CCC

[email protected]:git-revert(master)$ ls
AAA BBB DDD EEE FFF

Desfazendo um conjunto de commits

Quero desfazer desde agora (HEAD) até o commit 23a10ce. Vão sobrar em meu diretório os arquivos AAA e BBB.

[email protected]:git-revert(master)$ git log --pretty=oneline
9d1d944c5f153c4dafb80a8a19009527e6fe9f1a commit 5 - arquivo FFF
66622af8cbf38cf3749145bb37929367dadb8a84 commit 4 - arquivo EEE
35a4e32012dec7931d5f4b32f1121dbcd9318e52 commit 3 - arquivo DDD
23a10ce4592080ac32b1f1e1a779f295ac26a720 commit 2 - arquivo CCC
5d2c7d5b39892afba41ee8537c9384a77ed1e15e commit 1 - arquivo BBB
21d969d160108eb2acecfc9ea5ede8590fba5494 commit 0 - arquivo AAA

[email protected]:git-revert(master)$ ls
AAA BBB CCC DDD EEE FFF
[email protected]:git-revert(master)$ git revert --no-edit 23a10ce^..HEAD
[master aafe3b1] Revert "commit 5 - arquivo FFF"
1 file changed, 1 deletion(-)
delete mode 100644 FFF
[master 55a9493] Revert "commit 4 - arquivo EEE"
1 file changed, 1 deletion(-)
delete mode 100644 EEE
[master ff45a7a] Revert "commit 3 - arquivo DDD"
1 file changed, 1 deletion(-)
delete mode 100644 DDD
[master a2c4050] Revert "commit 2 - arquivo CCC"
1 file changed, 1 deletion(-)
delete mode 100644 CCC

[email protected]:git-revert(master)$ ls
AAA BBB

O ‘git revert’ não volta na história nem reposiciona ponteiros, como faz o ‘git reset’. Ao invés disso, o ‘git revert‘ desfaz alterações que estão no histórico de commits. As alterações feitas pelo ‘git revert‘ podem ser vistas através do log.

Referências

  • https://www.kernel.org/pub/software/scm/git/docs/git-revert.html