Configurar Linux para localhost responder a sítios de desenvolvimento

May 11, 2012 – 12:09 pm

Ao desenvolver aplicações para web, localmente, dá jeito configurar um virtual host, para o domínio em questão ser exemplo.loc (em vez de localhost/dev/exemplo).
Mas antes há que introduzir mais uma entrada no /etc/hosts:
127.0.0.1 exemplo.loc
… certo? Nem por isso :)

Outra solução é configurar um (servidor) DNS local para reencaminhar determinado domínio (no meu caso. uso loc). Passos necessários:

  1. Instalar (servidor) DNS dnsmasq:
    # apt-get install dnsmasq
  2. Configurar dnsmask: Em /etc/dnsmasq.conf adicionar as linhas:
    listen-address=127.0.0.1
    address=/loc/127.0.0.1
  3. Configurar o /etc/resolv.conf: Adicionar a linha:
    nameserver 127.0.0.1
    Ops, no meu caso pessoal, usando Ubuntu, isto não adianta, porque o Gestor de Redes (Network Manager) reescreve este ficheiro.
    Por isso, o que faço é, no Gestor de Redes editar a Ligação de rede com fios, nas Definições de IPv4, selecionar “Somente endereços (DHCP) automáticos” e nos servidores de DNS coloco 127.0.0.1
  4. Reiniciar dnsmasq:
    # /etc/init.d/dnsmasq restart
  5. Pronto, indo a exemplo.loc ou qualquercoisa.loc, sou reencaminhado para o meu localhost. Agora resta configurar o virtualhost… o que se contínua fazendo da mesma forma que antes. Isto apenas evita que de hoje em diante deixe de mexer novamente em /etc/hosts.

Montar uma partilha

March 1, 2012 – 3:26 pm

Inicializar uma partilha com SMB, FTP ou SFTP, usando por exemplo o Nautilus. Ir para a pasta [~/.gvfs], e digitar:

[~/.gvfs]>/usr/lib/gvfs/gvfs-fuse-daemon ~/.gvfs

Git… tanto que há para dizer sobre o git

December 14, 2011 – 11:27 am

Operações local/remoto

Obter muita informação sobre os branches locais e remotos:

git remote show <origin-ou-outro-remote>

Para fazer prune (apagar branches que já foram removidos no repositório) (usar a flag –dry-run para simular antes de apagar):

git remote prune <origin-ou-outro-remote>

Enviar um branch criado localmente (-u para manter track entre branch local e remoto):

git push -u origin <branch-a-enviar>

Apagar um branch no repositório:

git push origin :<branch-a-apagar>

Fazer merge para rever alterações, sem comit: ir para o branch que vai receber as alterações e realizar o comando:

git mergeleader <branch-a-fazer-merge>

Fazer com que um branch local fique ligado (tracked) a um branch remoto:

git branch --set-upstream branch_local branch_remoto

Puxar um branch novo e fazer com que fiquem ligados (tracked)

git checkout --track [branch_local] branch_remoto

PS: As opções –set-upstream e –track fazem a mesma coisa quando o branch não existe localmente.

Operações locais

Renomear um branch local (usar -M para renomear mesmo que já exista um branch com o novo nome):

git branch -m <nome_branch_antes> <nome_branch_depois>

Apagar um branch local:

git branch -d <nome_branch>

Reverter um ficheiro para a última versão no branch atual:

git checkout -- <file>

Reverter tudo para a última versão no branch atual:

git reset --hard HEAD

Drupal: “Clean URL test fails”

November 14, 2011 – 5:33 pm

Em http://drup.loc/?q=admin/config/search/clean-urls, quando se tem o erro “Clean URL test fails”, o que fazer:

1) Verificar que se tem o .htaccess na raiz do projecto (uma vez que é um ficheiro escondido, por vezes não é colado com os restantes ficherios…);

2) Verificar que o módulo do apache “mod_rewrite” está ligado, por exemplo, verificando se aparece listado na info do phpinfo(). Caso não esteja ligado, correr o comando: >sudo a2enmod rewrite e reiniciar o apache;

3) Verificar que nas diretivas do servidor (no meu caso, /etc/apache2/sites-enabled/000-default), se tem “AllowOverride All” na Directory correspondente à pasta pública.

Guardar senha de SSH durante a sessão

November 11, 2011 – 1:28 am

Comigo este comando

$ssh-add

… basta, em qualquer pasta onde esteja. Caso contrário, ir para a pasta ~/.ssh, escrever o comando

$ssh-add [private_key_name e.g. id_rsa]

…e inserir a senha.

A senha será lembrada enquanto a sessão no computador se mantiver ativa.

Comandos Linux para Mysql

July 7, 2011 – 12:23 pm

Login:
> mysql -u [usuario] -p

Exportar:
> mysqldump -u <username> <database> | gzip > db.sql.gz

Importar:
> mysql -u [usuario] -p [bd] < [dados.sql]
ou, se o ficheiro estiver gunzipado,
> gunzip < [dados.sql.gz] | mysql -u [username] [bd]

Mostra/apaga texto pre-definido

May 20, 2011 – 3:41 pm

Uma das boas práticas de acessibilidade é ter todos os inputs HTML pré-preenchidos. Por exemplo, “Insira o seu nome” no campo destinado ao nome do Utilizador.
O seguinte javascript, com jquery 1.4.4, ajuda no seguinte:

  • Ao clicar, se o o campo tem um texto pré-definido pelo sistema, apaga esse texto;
  • Se o campo é pré-definido mas de acordo com um valor inserido pelo Utilizador, não apaga esse texto;
  • Ao retirar o foco do campo, se ficar vazio, volta a mostrar o texto pré-definido;
  • Ao submeter o formulário, se o campo tiver o texto pré-definido apaga esse texto.

O seguinte código obedece a estes requisitos. Há que adicionar aos campos interessantes a class defaultext e os textos pré-definidos pelo sistema devem começar por §.

$(document).ready(function(){
    $('.defaultext').each(function(i,el){
        var txt= el.value;
        $(el).bind('focus', function(){
            if(el.value.substring(0,1)=='§'){el.value=''; $(el).bind('blur', function() {if(el.value==''){el.value=txt;}});}
        });
        var $form= $(el).parents('form');
        try{
            $form= $($form[0]);
            $form.submit(function(){if(el.value.substring(0,1)=='§'){el.value= '';}});
        }catch(e){}
    });
});

Backups

May 17, 2011 – 3:50 pm

No Ubuntu, faço backups regulares destas pastas:

  • /var/lib/mysql/
    BD MySQL;
  • /home/eumesmo/.thunderbird/
    Pasta com perfil e correio do Thunderbird;
  • /home/eumesmo/Documents/
    Ficheiros pessoais;

E é só… quase tudo o resto está na nuvem, ou em repositórios svn!

Comandos de Linux para ficheiros

April 26, 2011 – 2:59 pm

Criar um Symlink:
> ln -s path/para/destino <nome_symlink>

Renomear ficheiros numa pasta:

> rename s/<tit_antes>/<tit_depois>/ *

Apagar tudo dentro duma Pasta, incluindo ficheiros escondidos:
… neste caso, apagar na pasta atual - convém verificar que não se está na root :)

> rm * -rf .[^.] .??*

Procurar em Ficheiros:
> grep -irn ‘txt_a_procurar’ /path/para/dir
(opções: i para indiferença a maísuculas, r para recursividade nas diretorias, n para mostrar a linha)

Procurar e substituir em Ficheiros:
> find path/para/ -name ‘*.php’ -print0 | xargs -0 sed -i ’s/antes/depois -/g’

Procurar Ficheiros:
> find /path/para/dir -iname ‘*.txt’

(more here)

Teste de Java sem sucesso

April 6, 2011 – 10:23 am

Inicialmente o teste para verificar se o navegador suportava Java (em http://www.java.com/en/download/testjava.jsp) falhava - tanto no Firefox como no Chrome (aliás, Chromium).

Para ultrapassar este teste, usando apenas o Synaptic do Ubuntu, instalei (ou verifiquei já ter instalado) os seguintes 4 pacotes:

sun-java6-jre + sun-java6-bin + sun-java6-fonts + sun-java6-plugin

Caso não apareçam no Synaptic estes pacotes, executar na linha de comandos:

add-apt-repository "deb http://archive.canonical.com/ natty partner"
sudo apt-get update

Feito:
Your Java is working.
Version: Java SE 6 Update 24
Operating System 2.6.35-28-generic